diff options
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.patch | 242 |
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 + |