diff options
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/boards/board-rsk7203.c | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/arch/sh/boards/board-rsk7203.c b/arch/sh/boards/board-rsk7203.c index c8114cdb95e8..58266f06134a 100644 --- a/arch/sh/boards/board-rsk7203.c +++ b/arch/sh/boards/board-rsk7203.c @@ -17,6 +17,7 @@ #include <linux/mtd/map.h> #include <linux/smc911x.h> #include <linux/gpio.h> +#include <linux/leds.h> #include <asm/machvec.h> #include <asm/io.h> #include <cpu/sh7203.h> @@ -116,10 +117,46 @@ static void __init set_mtd_partitions(void) } } +static struct gpio_led rsk7203_gpio_leds[] = { + { + .name = "green", + .gpio = GPIO_PE10, + .active_low = 1, + }, { + .name = "orange", + .default_trigger = "nand-disk", + .gpio = GPIO_PE12, + .active_low = 1, + }, { + .name = "red:timer", + .default_trigger = "timer", + .gpio = GPIO_PC14, + .active_low = 1, + }, { + .name = "red:heartbeat", + .default_trigger = "heartbeat", + .gpio = GPIO_PE11, + .active_low = 1, + }, +}; + +static struct gpio_led_platform_data rsk7203_gpio_leds_info = { + .leds = rsk7203_gpio_leds, + .num_leds = ARRAY_SIZE(rsk7203_gpio_leds), +}; + +static struct platform_device led_device = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &rsk7203_gpio_leds_info, + }, +}; static struct platform_device *rsk7203_devices[] __initdata = { &smc911x_device, &flash_device, + &led_device, }; static int __init rsk7203_devices_setup(void) @@ -128,11 +165,6 @@ static int __init rsk7203_devices_setup(void) gpio_request(GPIO_FN_TXD0, NULL); gpio_request(GPIO_FN_RXD0, NULL); - /* Lit LED0 */ - gpio_request(GPIO_PE10, NULL); - gpio_direction_output(GPIO_PE10, 0); - gpio_export(GPIO_PE10, 0); - set_mtd_partitions(); return platform_add_devices(rsk7203_devices, ARRAY_SIZE(rsk7203_devices)); |