diff options
author | Jeremy Laine <jeremy.laine@m4x.org> | 2007-12-03 10:28:10 +0000 |
---|---|---|
committer | Jeremy Laine <jeremy.laine@m4x.org> | 2007-12-03 10:28:10 +0000 |
commit | f18c67d5ef73c90a17648feeaf14ce8ebaca1eb7 (patch) | |
tree | 5a45cb8a11b6e694a7be3f2ca44fef1cb0275b34 | |
parent | b044801f1aa59e9a0eb1d617d9849fba422d3250 (diff) |
linux-2.6.23: fix LEDs driver for mpc8313e-rdb
-rw-r--r-- | packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch index 0310746dfe..56176c1095 100644 --- a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch +++ b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch @@ -1,6 +1,6 @@ diff -urN linux-2.6.23.orig/drivers/leds/Kconfig linux-2.6.23/drivers/leds/Kconfig --- linux-2.6.23.orig/drivers/leds/Kconfig 2007-10-09 22:31:38.000000000 +0200 -+++ linux-2.6.23/drivers/leds/Kconfig 2007-11-29 09:02:42.000000000 +0100 ++++ linux-2.6.23/drivers/leds/Kconfig 2007-12-03 11:08:06.000000000 +0100 @@ -101,6 +101,12 @@ outputs. To be useful the particular board must have LEDs and they must be connected to the GPIO lines. @@ -16,8 +16,8 @@ diff -urN linux-2.6.23.orig/drivers/leds/Kconfig linux-2.6.23/drivers/leds/Kconf config LEDS_TRIGGERS diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c --- linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c 2007-11-29 09:02:42.000000000 +0100 -@@ -0,0 +1,128 @@ ++++ linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c 2007-12-03 11:08:36.000000000 +0100 +@@ -0,0 +1,127 @@ +/* + * drivers/leds/leds-mpc8313e-rdb.c + * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.com> @@ -38,18 +38,18 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver +#include <linux/err.h> +#include <asm/io.h> + -+int par_io_config_pin(u8 port, u8 pin, int dir, int open_drain, -+ int assignment, int has_irq); -+int par_io_data_set(u8 port, u8 pin, u8 val); ++#define LEDS_BASE 0xfa000000 ++#define LEDS_SIZE 0x2 + +static struct platform_dev *leds_pdev = NULL; +static struct resource *led_mem = NULL; -+static void *p = NULL; ++static void *led_io = NULL; ++static u8 led_state = 0; + +static void mpc8313leds_green_set(struct led_classdev *led_cdev, enum led_brightness value) +{ -+ int d = ioread16(p); -+ iowrite16(value?d&~1:d|1, p); ++ led_state = value ? led_state&~32 : led_state|32; ++ iowrite8(led_state, led_io); +} + +static struct led_classdev mpc8313_green_led = { @@ -59,8 +59,8 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver + +static void mpc8313leds_yellow_set(struct led_classdev *led_cdev, enum led_brightness value) +{ -+ int d = ioread16(p); -+ iowrite16(value?d&~2:d|2, p); ++ led_state = value ? led_state&~64 : led_state|64; ++ iowrite8(led_state, led_io); +} + +static struct led_classdev mpc8313_yellow_led = { @@ -70,8 +70,8 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver + +static void mpc8313leds_red_set(struct led_classdev *led_cdev, enum led_brightness value) +{ -+ int d = ioread16(p); -+ iowrite16(value?d&~4:d|4, p); ++ led_state = value ? led_state&~128 : led_state|128; ++ iowrite8(led_state, led_io); +} + +static struct led_classdev mpc8313_red_led = { @@ -117,12 +117,11 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver + +static int __init mpc8313leds_init(void) +{ -+ led_mem = request_mem_region(0xfa000000, 0x100, "mpc8313-leds"); -+ if (led_mem == NULL) return -ENOMEM; -+ p = ioremap(0xfa000000, 0x100); -+ if (p == NULL) ++ if (!(led_mem = request_mem_region(LEDS_BASE, LEDS_SIZE, "mpc8313-leds"))) ++ return -ENOMEM; ++ if (!(led_io = ioremap(LEDS_BASE, LEDS_SIZE))) + { -+ if (led_mem) release_mem_region(0xfa000000, 0x100); ++ release_mem_region(LEDS_BASE, LEDS_SIZE); + led_mem = NULL; + return -ENOMEM; + } @@ -133,7 +132,7 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver + +static void __exit mpc8313leds_exit(void) +{ -+ if (led_mem) release_mem_region(0xfa000000, 0x100); ++ if (led_mem) release_mem_region(LEDS_BASE, LEDS_SIZE); + led_mem = NULL; + platform_driver_unregister(&mpc8313leds_driver); + @@ -148,7 +147,7 @@ diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/driver +MODULE_LICENSE("GPL"); diff -urN linux-2.6.23.orig/drivers/leds/Makefile linux-2.6.23/drivers/leds/Makefile --- linux-2.6.23.orig/drivers/leds/Makefile 2007-10-09 22:31:38.000000000 +0200 -+++ linux-2.6.23/drivers/leds/Makefile 2007-11-29 09:03:09.000000000 +0100 ++++ linux-2.6.23/drivers/leds/Makefile 2007-12-03 11:08:06.000000000 +0100 @@ -17,6 +17,7 @@ obj-$(CONFIG_LEDS_H1940) += leds-h1940.o obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o |