add generic led support to atheros target
authorJohn Crispin <john@openwrt.org>
Thu, 3 Apr 2008 21:09:41 +0000 (21:09 +0000)
committerJohn Crispin <john@openwrt.org>
Thu, 3 Apr 2008 21:09:41 +0000 (21:09 +0000)
SVN-Revision: 10728

target/linux/atheros/config-2.6.23
target/linux/atheros/files/arch/mips/atheros/ar5312/board.c
target/linux/atheros/files/arch/mips/atheros/ar5315/board.c

index 90f39099861022502544ba3458ea1e0c915d755f..72d04fd073b67490c45ea95eac3de6bec4b8e743 100644 (file)
@@ -49,12 +49,12 @@ CONFIG_DMA_NONCOHERENT=y
 # CONFIG_FIXED_PHY is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_GPIO=y
 # CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
 CONFIG_GPIO_DEVICE=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
-CONFIG_HID_SUPPORT=n
 # CONFIG_HOSTAP is not set
 CONFIG_HW_RANDOM=y
 # CONFIG_I2C is not set
@@ -64,6 +64,8 @@ CONFIG_ICPLUS_PHY=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_IRQ_CPU=y
 # CONFIG_LEDS_ALIX is not set
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGER_NETDEV=y
 # CONFIG_LEMOTE_FULONG is not set
 # CONFIG_MACH_ALCHEMY is not set
 # CONFIG_MACH_DECSTATION is not set
index 3768e30be051d184ac9c9a1012150d6c8d7e9cdd..f58d08cba775bcde1a20c18210bf85bfeb8108d3 100644 (file)
 #include <asm/irq.h>
 #include <asm/io.h>
 #include <ar531x.h>
+#include <linux/leds.h>
 
 #define NO_PHY 0x1f
 
 static int is_5312 = 0;
-static struct platform_device *ar5312_devs[5];
+static struct platform_device *ar5312_devs[6];
 
 static struct resource ar5312_eth0_res[] = {
        {
@@ -164,6 +165,24 @@ static struct platform_device ar5312_physmap_flash = {
        .resource   = &ar5312_flash_resource,
 };
 
+#ifdef CONFIG_LEDS_GPIO
+static struct gpio_led ar5312_leds[] = {
+       { .name = "wlan", .gpio = 0, .active_low = 1, },
+};
+
+static const struct gpio_led_platform_data ar5312_led_data = {
+       .num_leds = ARRAY_SIZE(ar5312_leds),
+       .leds = (void *) ar5312_leds,
+};
+
+static struct platform_device ar5312_gpio_leds = {
+       .name = "leds-gpio",
+       .id = -1,
+       .dev = {
+               .platform_data = (void *) &ar5312_led_data,
+       }
+};
+#endif
 
 /*
  * NB: This mapping size is larger than the actual flash size,
@@ -269,6 +288,9 @@ int __init ar5312_init_devices(void)
 
        ar5312_devs[dev++] = &ar5312_physmap_flash;
 
+       ar5312_leds[0].gpio = bcfg->sysLedGpio;
+       ar5312_devs[dev++] = &ar5312_gpio_leds;
+
        if (!memcmp(bcfg->enet0Mac, "\xff\xff\xff\xff\xff\xff", 6))
                memcpy(bcfg->enet0Mac, bcfg->enet1Mac, 6);
 
index 57d17f526ae02f5bfc0cf8e59648396b60630fab..6d46c85a1ec6c5154ce25c30137f4d10d343ce5f 100644 (file)
@@ -27,6 +27,7 @@
 #include <asm/irq.h>
 #include <asm/io.h>
 #include <ar531x.h>
+#include <linux/leds.h>
 
 static int is_5315 = 0;
 
@@ -90,7 +91,27 @@ static struct platform_device ar5315_spiflash = {
        .num_resources = ARRAY_SIZE(ar5315_spiflash_res)
 };
 
-static __initdata struct platform_device *ar5315_devs[4];
+#ifdef CONFIG_LEDS_GPIO
+static struct gpio_led ar5315_leds[] = {
+       { .name = "wlan", .gpio = 0, .active_low = 1, },
+};
+
+static const struct gpio_led_platform_data ar5315_led_data = {
+       .num_leds = ARRAY_SIZE(ar5315_leds),
+       .leds = (void *) ar5315_leds,
+};
+
+static struct platform_device ar5315_gpio_leds = {
+       .name = "leds-gpio",
+       .id = -1,
+       .dev = {
+               .platform_data = (void *) &ar5315_led_data,
+       }
+};
+#endif
+
+
+static __initdata struct platform_device *ar5315_devs[5];
 
 
 
@@ -218,11 +239,13 @@ int __init ar5315_init_devices(void)
        ar5315_eth_data.board_config = board_config;
        ar5315_eth_data.macaddr = bcfg->enet0Mac;
        ar5315_wmac.dev.platform_data = config;
-       
+
+       ar5315_leds[0].gpio = bcfg->sysLedGpio;
+
        ar5315_devs[dev++] = &ar5315_eth;
        ar5315_devs[dev++] = &ar5315_wmac;
        ar5315_devs[dev++] = &ar5315_spiflash;
-                       
+       ar5315_devs[dev++] = &ar5315_gpio_leds;
 
        return platform_add_devices(ar5315_devs, dev);
 }