123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- --- a/arch/mips/ath25/ar2315.c
- +++ b/arch/mips/ath25/ar2315.c
- @@ -23,6 +23,7 @@
- #include <linux/reboot.h>
- #include <linux/delay.h>
- #include <linux/gpio.h>
- +#include <linux/leds.h>
- #include <asm/bootinfo.h>
- #include <asm/reboot.h>
- #include <asm/time.h>
- @@ -260,6 +261,50 @@ static struct platform_device ar2315_spi
- .num_resources = ARRAY_SIZE(ar2315_spiflash_res)
- };
-
- +#ifdef CONFIG_LEDS_GPIO
- +static struct gpio_led ar2315_leds[6];
- +static struct gpio_led_platform_data ar2315_led_data = {
- + .leds = (void *)ar2315_leds,
- +};
- +
- +static struct platform_device ar2315_gpio_leds = {
- + .name = "leds-gpio",
- + .id = -1,
- + .dev = {
- + .platform_data = (void *)&ar2315_led_data,
- + }
- +};
- +
- +static void __init ar2315_init_gpio_leds(void)
- +{
- + static char led_names[6][6];
- + int i, led = 0;
- +
- + ar2315_led_data.num_leds = 0;
- + for (i = 1; i < 8; i++) {
- + if ((i == AR2315_RESET_GPIO) ||
- + (i == ath25_board.config->reset_config_gpio))
- + continue;
- +
- + if (i == ath25_board.config->sys_led_gpio)
- + strcpy(led_names[led], "wlan");
- + else
- + sprintf(led_names[led], "gpio%d", i);
- +
- + ar2315_leds[led].name = led_names[led];
- + ar2315_leds[led].gpio = i;
- + ar2315_leds[led].active_low = 0;
- + led++;
- + }
- + ar2315_led_data.num_leds = led;
- + platform_device_register(&ar2315_gpio_leds);
- +}
- +#else
- +static inline void ar2315_init_gpio_leds(void)
- +{
- +}
- +#endif
- +
- void __init ar2315_init_devices(void)
- {
- /* Find board configuration */
- @@ -270,6 +315,8 @@ void __init ar2315_init_devices(void)
- ar2315_gpio_res[1].end = ar2315_gpio_res[1].start;
- platform_device_register(&ar2315_gpio);
-
- + ar2315_init_gpio_leds();
- +
- ar2315_wdt_res[1].start = irq_create_mapping(ar2315_misc_irq_domain,
- AR2315_MISC_IRQ_WATCHDOG);
- ar2315_wdt_res[1].end = ar2315_wdt_res[1].start;
- --- a/arch/mips/ath25/ar5312.c
- +++ b/arch/mips/ath25/ar5312.c
- @@ -23,6 +23,7 @@
- #include <linux/mtd/physmap.h>
- #include <linux/reboot.h>
- #include <linux/gpio.h>
- +#include <linux/leds.h>
- #include <asm/bootinfo.h>
- #include <asm/reboot.h>
- #include <asm/time.h>
- @@ -231,6 +232,23 @@ static struct platform_device ar5312_gpi
- .num_resources = ARRAY_SIZE(ar5312_gpio_res),
- };
-
- +#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
- +
- static void __init ar5312_flash_init(void)
- {
- void __iomem *flashctl_base;
- @@ -301,6 +319,11 @@ void __init ar5312_init_devices(void)
-
- platform_device_register(&ar5312_gpio);
-
- +#ifdef CONFIG_LEDS_GPIO
- + ar5312_leds[0].gpio = config->sys_led_gpio;
- + platform_device_register(&ar5312_gpio_leds);
- +#endif
- +
- /* Fix up MAC addresses if necessary */
- if (is_broadcast_ether_addr(config->enet0_mac))
- ether_addr_copy(config->enet0_mac, config->enet1_mac);
|