Commit 3aa7a9a3 authored by Hartley Sweeten's avatar Hartley Sweeten Committed by Russell King

[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: default avatarMatthieu Crapet <mcrapet@gmail.com>
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 5d43f11b
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <linux/timex.h> #include <linux/timex.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/leds.h>
#include <linux/termios.h> #include <linux/termios.h>
#include <linux/amba/bus.h> #include <linux/amba/bus.h>
#include <linux/amba/serial.h> #include <linux/amba/serial.h>
...@@ -568,6 +569,34 @@ void __init ep93xx_register_i2c(struct i2c_board_info *devices, int num) ...@@ -568,6 +569,34 @@ void __init ep93xx_register_i2c(struct i2c_board_info *devices, int num)
platform_device_register(&ep93xx_i2c_device); 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); extern void ep93xx_gpio_init(void);
void __init ep93xx_init_devices(void) void __init ep93xx_init_devices(void)
...@@ -583,4 +612,5 @@ 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_rtc_device);
platform_device_register(&ep93xx_ohci_device); platform_device_register(&ep93xx_ohci_device);
platform_device_register(&ep93xx_leds);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment