aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ixp4xx/patches-2.6.24/021-ixp4xx_use_leds_gpio.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ixp4xx/patches-2.6.24/021-ixp4xx_use_leds_gpio.patch')
-rw-r--r--target/linux/ixp4xx/patches-2.6.24/021-ixp4xx_use_leds_gpio.patch242
1 files changed, 242 insertions, 0 deletions
diff --git a/target/linux/ixp4xx/patches-2.6.24/021-ixp4xx_use_leds_gpio.patch b/target/linux/ixp4xx/patches-2.6.24/021-ixp4xx_use_leds_gpio.patch
new file mode 100644
index 0000000000..9ec7a4fe91
--- /dev/null
+++ b/target/linux/ixp4xx/patches-2.6.24/021-ixp4xx_use_leds_gpio.patch
@@ -0,0 +1,242 @@
+From 383256474f2ba043bdb57a657f9d786df88780f1 Mon Sep 17 00:00:00 2001
+From: Rod Whitby <rod@whitby.id.au>
+Date: Tue, 29 Jan 2008 17:17:29 +1030
+Subject: ixp4xx: Use leds-gpio driver instead of IXP4XX-GPIO-LED driver
+
+These are the only three boards to use the IXP4XX-GPIO-LED driver, and
+they can all use the new leds-gpio driver instead with no change in
+functionality.
+
+Signed-off-by: Rod Whitby <rod@whitby.id.au>
+--
+PATCH FOLLOWS
+KernelVersion: v2.6.24-1915-gc9b12e6
+
+diff --git a/arch/arm/configs/ixp4xx_defconfig b/arch/arm/configs/ixp4xx_defconfig
+index 2d5ae33..77fe3b0 100644
+--- a/arch/arm/configs/ixp4xx_defconfig
++++ b/arch/arm/configs/ixp4xx_defconfig
+@@ -1330,8 +1330,8 @@ CONFIG_LEDS_CLASS=y
+ #
+ # LED drivers
+ #
+-CONFIG_LEDS_IXP4XX=y
+-# CONFIG_LEDS_GPIO is not set
++# CONFIG_LEDS_IXP4XX is not set
++CONFIG_LEDS_GPIO=y
+
+ #
+ # LED Triggers
+diff --git a/arch/arm/mach-ixp4xx/dsmg600-setup.c b/arch/arm/mach-ixp4xx/dsmg600-setup.c
+index a1c44ef..d0e1295 100644
+--- a/arch/arm/mach-ixp4xx/dsmg600-setup.c
++++ b/arch/arm/mach-ixp4xx/dsmg600-setup.c
+@@ -14,6 +14,7 @@
+ #include <linux/kernel.h>
+ #include <linux/serial.h>
+ #include <linux/serial_8250.h>
++#include <linux/leds.h>
+ #include <linux/i2c.h>
+ #include <linux/i2c-gpio.h>
+
+@@ -58,29 +59,28 @@ static struct i2c_board_info __initdata dsmg600_i2c_board_info [] = {
+ },
+ };
+
+-#ifdef CONFIG_LEDS_CLASS
+-static struct resource dsmg600_led_resources[] = {
++static struct gpio_led dsmg600_led_pins[] = {
+ {
+- .name = "power",
+- .start = DSMG600_LED_PWR_GPIO,
+- .end = DSMG600_LED_PWR_GPIO,
+- .flags = IXP4XX_GPIO_HIGH,
++ .name = "power",
++ .gpio = DSMG600_LED_PWR_GPIO,
+ },
+ {
+- .name = "wlan",
+- .start = DSMG600_LED_WLAN_GPIO,
+- .end = DSMG600_LED_WLAN_GPIO,
+- .flags = IXP4XX_GPIO_LOW,
++ .name = "wlan",
++ .gpio = DSMG600_LED_WLAN_GPIO,
++ .active_low = true,
+ },
+ };
+
++static struct gpio_led_platform_data dsmg600_led_data = {
++ .num_leds = ARRAY_SIZE(dsmg600_led_pins),
++ .leds = dsmg600_led_pins,
++};
++
+ static struct platform_device dsmg600_leds = {
+- .name = "IXP4XX-GPIO-LED",
+- .id = -1,
+- .num_resources = ARRAY_SIZE(dsmg600_led_resources),
+- .resource = dsmg600_led_resources,
++ .name = "leds-gpio",
++ .id = -1,
++ .dev.platform_data = &dsmg600_led_data,
+ };
+-#endif
+
+ static struct resource dsmg600_uart_resources[] = {
+ {
+@@ -128,6 +128,7 @@ static struct platform_device dsmg600_uart = {
+ static struct platform_device *dsmg600_devices[] __initdata = {
+ &dsmg600_i2c_gpio,
+ &dsmg600_flash,
++ &dsmg600_leds,
+ };
+
+ static void dsmg600_power_off(void)
+@@ -175,11 +176,6 @@ static void __init dsmg600_init(void)
+ (void)platform_device_register(&dsmg600_uart);
+
+ platform_add_devices(dsmg600_devices, ARRAY_SIZE(dsmg600_devices));
+-
+-#ifdef CONFIG_LEDS_CLASS
+- /* We don't care whether or not this works. */
+- (void)platform_device_register(&dsmg600_leds);
+-#endif
+ }
+
+ MACHINE_START(DSMG600, "D-Link DSM-G600 RevA")
+diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c
+index dc782d0..5801579 100644
+--- a/arch/arm/mach-ixp4xx/nas100d-setup.c
++++ b/arch/arm/mach-ixp4xx/nas100d-setup.c
+@@ -46,35 +46,34 @@ static struct i2c_board_info __initdata nas100d_i2c_board_info [] = {
+ },
+ };
+
+-#ifdef CONFIG_LEDS_IXP4XX
+-static struct resource nas100d_led_resources[] = {
++static struct gpio_led nas100d_led_pins[] = {
+ {
+ .name = "wlan", /* green led */
+- .start = NAS100D_LED_WLAN_GPIO,
+- .end = NAS100D_LED_WLAN_GPIO,
+- .flags = IXP4XX_GPIO_LOW,
++ .gpio = NAS100D_LED_WLAN_GPIO,
++ .active_low = true,
+ },
+ {
+ .name = "power", /* blue power led (off=flashing) */
+- .start = NAS100D_LED_PWR_GPIO,
+- .end = NAS100D_LED_PWR_GPIO,
+- .flags = IXP4XX_GPIO_LOW,
++ .gpio = NAS100D_LED_PWR_GPIO,
++ .active_low = true,
+ },
+ {
+ .name = "disk", /* yellow led */
+- .start = NAS100D_LED_DISK_GPIO,
+- .end = NAS100D_LED_DISK_GPIO,
+- .flags = IXP4XX_GPIO_LOW,
++ .gpio = NAS100D_LED_DISK_GPIO,
++ .active_low = true,
+ },
+ };
+
++static struct gpio_led_platform_data nas100d_led_data = {
++ .num_leds = ARRAY_SIZE(nas100d_led_pins),
++ .leds = nas100d_led_pins,
++};
++
+ static struct platform_device nas100d_leds = {
+- .name = "IXP4XX-GPIO-LED",
++ .name = "leds-gpio",
+ .id = -1,
+- .num_resources = ARRAY_SIZE(nas100d_led_resources),
+- .resource = nas100d_led_resources,
++ .dev.platform_data = &nas100d_led_data,
+ };
+-#endif
+
+ static struct i2c_gpio_platform_data nas100d_i2c_gpio_data = {
+ .sda_pin = NAS100D_SDA_PIN,
+@@ -135,9 +134,7 @@ static struct platform_device nas100d_uart = {
+ static struct platform_device *nas100d_devices[] __initdata = {
+ &nas100d_i2c_gpio,
+ &nas100d_flash,
+-#ifdef CONFIG_LEDS_IXP4XX
+ &nas100d_leds,
+-#endif
+ };
+
+ static void nas100d_power_off(void)
+diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c
+index 16d091c..41d55c8 100644
+--- a/arch/arm/mach-ixp4xx/nslu2-setup.c
++++ b/arch/arm/mach-ixp4xx/nslu2-setup.c
+@@ -54,41 +54,37 @@ static struct i2c_board_info __initdata nslu2_i2c_board_info [] = {
+ },
+ };
+
+-#ifdef CONFIG_LEDS_IXP4XX
+-static struct resource nslu2_led_resources[] = {
++static struct gpio_led nslu2_led_pins[] = {
+ {
+ .name = "ready", /* green led */
+- .start = NSLU2_LED_GRN_GPIO,
+- .end = NSLU2_LED_GRN_GPIO,
+- .flags = IXP4XX_GPIO_HIGH,
++ .gpio = NSLU2_LED_GRN_GPIO,
+ },
+ {
+ .name = "status", /* red led */
+- .start = NSLU2_LED_RED_GPIO,
+- .end = NSLU2_LED_RED_GPIO,
+- .flags = IXP4XX_GPIO_HIGH,
++ .gpio = NSLU2_LED_RED_GPIO,
+ },
+ {
+ .name = "disk-1",
+- .start = NSLU2_LED_DISK1_GPIO,
+- .end = NSLU2_LED_DISK1_GPIO,
+- .flags = IXP4XX_GPIO_LOW,
++ .gpio = NSLU2_LED_DISK1_GPIO,
++ .active_low = true,
+ },
+ {
+ .name = "disk-2",
+- .start = NSLU2_LED_DISK2_GPIO,
+- .end = NSLU2_LED_DISK2_GPIO,
+- .flags = IXP4XX_GPIO_LOW,
++ .gpio = NSLU2_LED_DISK2_GPIO,
++ .active_low = true,
+ },
+ };
+
++static struct gpio_led_platform_data nslu2_led_data = {
++ .num_leds = ARRAY_SIZE(nslu2_led_pins),
++ .leds = nslu2_led_pins,
++};
++
+ static struct platform_device nslu2_leds = {
+- .name = "IXP4XX-GPIO-LED",
++ .name = "leds-gpio",
+ .id = -1,
+- .num_resources = ARRAY_SIZE(nslu2_led_resources),
+- .resource = nslu2_led_resources,
++ .dev.platform_data = &nslu2_led_data,
+ };
+-#endif
+
+ static struct platform_device nslu2_i2c_gpio = {
+ .name = "i2c-gpio",
+@@ -151,9 +147,7 @@ static struct platform_device *nslu2_devices[] __initdata = {
+ &nslu2_i2c_gpio,
+ &nslu2_flash,
+ &nslu2_beeper,
+-#ifdef CONFIG_LEDS_IXP4XX
+ &nslu2_leds,
+-#endif
+ };
+
+ static void nslu2_power_off(void)
+--
+1.5.2.5
+