From 3aa7a9a3cf8774f6701b1903a6353f9545f561ce Mon Sep 17 00:00:00 2001 From: Hartley Sweeten Date: Mon, 20 Jul 2009 18:22:36 +0100 Subject: [ARM] 5612/1: ep93xx: add platform LEDs The EP93xx has two gpio pins specifically assigned to drive external LEDs. Add core support for these LEDs. On the EDB93xx development boards, the rdled is connected to an external reset circuit. Turning this led on for an extended amount of time will cause the circuit to issue a manual reset. Refer to Cirrus App Note AN258 for more information. http://www.cirrus.com/en/pubs/appNote/AN258REV2.pdf This led can be safely used as the system heartbeat with the ledtrig-heartbeat driver. echo heartbeat > /sys/class/leds/platform:rdled/trigger The grled can be used for any desired purpose. Tested-by: Matthieu Crapet Signed-off-by: H Hartley Sweeten Signed-off-by: Russell King --- arch/arm/mach-ep93xx/core.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'arch/arm') diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c index b390c35f8bc..2b58df0184c 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -568,6 +569,34 @@ void __init ep93xx_register_i2c(struct i2c_board_info *devices, int num) platform_device_register(&ep93xx_i2c_device); } + +/************************************************************************* + * EP93xx LEDs + *************************************************************************/ +static struct gpio_led ep93xx_led_pins[] = { + { + .name = "platform:grled", + .gpio = EP93XX_GPIO_LINE_GRLED, + }, { + .name = "platform:rdled", + .gpio = EP93XX_GPIO_LINE_RDLED, + }, +}; + +static struct gpio_led_platform_data ep93xx_led_data = { + .num_leds = ARRAY_SIZE(ep93xx_led_pins), + .leds = ep93xx_led_pins, +}; + +static struct platform_device ep93xx_leds = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &ep93xx_led_data, + }, +}; + + extern void ep93xx_gpio_init(void); void __init ep93xx_init_devices(void) @@ -583,4 +612,5 @@ void __init ep93xx_init_devices(void) platform_device_register(&ep93xx_rtc_device); platform_device_register(&ep93xx_ohci_device); + platform_device_register(&ep93xx_leds); } -- cgit v1.2.3