From 383256474f2ba043bdb57a657f9d786df88780f1 Mon Sep 17 00:00:00 2001 From: Rod Whitby 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 -- PATCH FOLLOWS KernelVersion: v2.6.24-1915-gc9b12e6 Index: linux-2.6.24.7/arch/arm/configs/ixp4xx_defconfig =================================================================== --- linux-2.6.24.7.orig/arch/arm/configs/ixp4xx_defconfig +++ linux-2.6.24.7/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 Index: linux-2.6.24.7/arch/arm/mach-ixp4xx/dsmg600-setup.c =================================================================== --- linux-2.6.24.7.orig/arch/arm/mach-ixp4xx/dsmg600-setup.c +++ linux-2.6.24.7/arch/arm/mach-ixp4xx/dsmg600-setup.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -58,29 +59,28 @@ static struct i2c_board_info __initdata }, }; -#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_ua 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") Index: linux-2.6.24.7/arch/arm/mach-ixp4xx/nas100d-setup.c =================================================================== --- linux-2.6.24.7.orig/arch/arm/mach-ixp4xx/nas100d-setup.c +++ linux-2.6.24.7/arch/arm/mach-ixp4xx/nas100d-setup.c @@ -46,35 +46,34 @@ static struct i2c_board_info __initdata }, }; -#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_ua 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) Index: linux-2.6.24.7/arch/arm/mach-ixp4xx/nslu2-setup.c =================================================================== --- linux-2.6.24.7.orig/arch/arm/mach-ixp4xx/nslu2-setup.c +++ linux-2.6.24.7/arch/arm/mach-ixp4xx/nslu2-setup.c @@ -54,41 +54,37 @@ static struct i2c_board_info __initdata }, }; -#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_dev &nslu2_i2c_gpio, &nslu2_flash, &nslu2_beeper, -#ifdef CONFIG_LEDS_IXP4XX &nslu2_leds, -#endif }; static void nslu2_power_off(void)