ARM: mach-orion5x: convert custom LED code to gpio_led and LED CPU trigger
authorBryan Wu <bryan.wu@canonical.com>
Tue, 13 Mar 2012 17:43:51 +0000 (01:43 +0800)
committerBryan Wu <bryan.wu@canonical.com>
Wed, 1 Aug 2012 03:22:06 +0000 (11:22 +0800)
Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
arch/arm/mach-orion5x/rd88f5182-setup.c
arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c

index 78a6a11d82168df2fad570a5898feefec0129a45..9b1c95310291e74896e9de9793006aa2ee181dcb 100644 (file)
@@ -18,7 +18,6 @@
 #include <linux/ethtool.h>
 #include <net/dsa.h>
 #include <asm/mach-types.h>
-#include <asm/leds.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
 #include <mach/orion5x.h>
index 2f5dc54cd4cd20dc3ad5eb8d747c1457b8494c4f..51ba2b81a10b7fe096f8467cdb83ec56d3682634 100644 (file)
@@ -19,7 +19,6 @@
 #include <linux/i2c.h>
 #include <net/dsa.h>
 #include <asm/mach-types.h>
-#include <asm/leds.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
 #include <mach/orion5x.h>
index 399130fac0b611cf50e6948d6990b56cc8297fe8..0a56b9444f1bc6b3a33f0a316bf112250f5141d5 100644 (file)
@@ -19,8 +19,8 @@
 #include <linux/mv643xx_eth.h>
 #include <linux/ata_platform.h>
 #include <linux/i2c.h>
+#include <linux/leds.h>
 #include <asm/mach-types.h>
-#include <asm/leds.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
 #include <mach/orion5x.h>
 #define RD88F5182_PCI_SLOT0_IRQ_A_PIN  7
 #define RD88F5182_PCI_SLOT0_IRQ_B_PIN  6
 
-/*
- * GPIO Debug LED
- */
-
-#define RD88F5182_GPIO_DBG_LED         0
-
 /*****************************************************************************
  * 16M NOR Flash on Device bus CS1
  ****************************************************************************/
@@ -83,55 +77,32 @@ static struct platform_device rd88f5182_nor_flash = {
        .resource               = &rd88f5182_nor_flash_resource,
 };
 
-#ifdef CONFIG_LEDS
-
 /*****************************************************************************
- * Use GPIO debug led as CPU active indication
+ * Use GPIO LED as CPU active indication
  ****************************************************************************/
 
-static void rd88f5182_dbgled_event(led_event_t evt)
-{
-       int val;
-
-       if (evt == led_idle_end)
-               val = 1;
-       else if (evt == led_idle_start)
-               val = 0;
-       else
-               return;
-
-       gpio_set_value(RD88F5182_GPIO_DBG_LED, val);
-}
-
-static int __init rd88f5182_dbgled_init(void)
-{
-       int pin;
-
-       if (machine_is_rd88f5182()) {
-               pin = RD88F5182_GPIO_DBG_LED;
+#define RD88F5182_GPIO_LED             0
 
-               if (gpio_request(pin, "DBGLED") == 0) {
-                       if (gpio_direction_output(pin, 0) != 0) {
-                               printk(KERN_ERR "rd88f5182_dbgled_init failed "
-                                               "to set output pin %d\n", pin);
-                               gpio_free(pin);
-                               return 0;
-                       }
-               } else {
-                       printk(KERN_ERR "rd88f5182_dbgled_init failed "
-                                       "to request gpio %d\n", pin);
-                       return 0;
-               }
-
-               leds_event = rd88f5182_dbgled_event;
-       }
-
-       return 0;
-}
+static struct gpio_led rd88f5182_gpio_led_pins[] = {
+       {
+               .name           = "rd88f5182:cpu",
+               .default_trigger = "cpu0",
+               .gpio           = RD88F5182_GPIO_LED,
+       },
+};
 
-__initcall(rd88f5182_dbgled_init);
+static struct gpio_led_platform_data rd88f5182_gpio_led_data = {
+       .leds           = rd88f5182_gpio_led_pins,
+       .num_leds       = ARRAY_SIZE(rd88f5182_gpio_led_pins),
+};
 
-#endif
+static struct platform_device rd88f5182_gpio_leds = {
+       .name   = "leds-gpio",
+       .id     = -1,
+       .dev    = {
+               .platform_data = &rd88f5182_gpio_led_data,
+       },
+};
 
 /*****************************************************************************
  * PCI
@@ -298,6 +269,7 @@ static void __init rd88f5182_init(void)
 
        orion5x_setup_dev1_win(RD88F5182_NOR_BASE, RD88F5182_NOR_SIZE);
        platform_device_register(&rd88f5182_nor_flash);
+       platform_device_register(&rd88f5182_gpio_leds);
 
        i2c_register_board_info(0, &rd88f5182_i2c_rtc, 1);
 }
index 92df49c1b62ad4c75cc510034411dc5722b1c34c..ed50910b08a42747aeeca5ca4b6b24acd7510e0b 100644 (file)
@@ -20,7 +20,6 @@
 #include <linux/ethtool.h>
 #include <net/dsa.h>
 #include <asm/mach-types.h>
-#include <asm/leds.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
 #include <mach/orion5x.h>