[ARM] 4805/1: ixp4xx: Use leds-gpio driver instead of IXP4XX-GPIO-LED driver
authorRod Whitby <rod@whitby.id.au>
Fri, 1 Feb 2008 23:03:56 +0000 (00:03 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 4 Feb 2008 13:15:26 +0000 (13:15 +0000)
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>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/configs/ixp4xx_defconfig
arch/arm/mach-ixp4xx/dsmg600-setup.c
arch/arm/mach-ixp4xx/nas100d-setup.c
arch/arm/mach-ixp4xx/nslu2-setup.c

index 2d5ae33..77fe3b0 100644 (file)
@@ -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 a1c44ef..d0e1295 100644 (file)
@@ -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")
index dc782d0..5801579 100644 (file)
@@ -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)
index 16d091c..41d55c8 100644 (file)
@@ -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)