9
0
Fork 0

led: move led_of_parse_trigger to core

So that other LED drivers can use it.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2014-02-28 13:28:06 +01:00
parent ea0ed15786
commit e390a8e2b4
3 changed files with 36 additions and 35 deletions

View File

@ -153,3 +153,37 @@ void led_unregister(struct led *led)
{
list_del(&led->list);
}
struct led_trg {
const char *str;
enum led_trigger trg;
};
static struct led_trg triggers[] = {
{ .str = "heartbeat", LED_TRIGGER_HEARTBEAT, },
{ .str = "panic", LED_TRIGGER_PANIC, },
{ .str = "net", LED_TRIGGER_NET_TXRX, },
};
void led_of_parse_trigger(struct led *led, struct device_node *np)
{
const char *trigger;
int i;
trigger = of_get_property(np, "linux,default-trigger", NULL);
if (!trigger)
trigger = of_get_property(np, "barebox,default-trigger", NULL);
if (!trigger)
return;
for (i = 0; i < ARRAY_SIZE(triggers); i++) {
struct led_trg *trg = &triggers[i];
if (!strcmp(trg->str, trigger)) {
/* disable LED before installing trigger */
led_set(led, 0);
led_set_trigger(trg->trg, led);
return;
}
}
}

View File

@ -198,41 +198,6 @@ void led_gpio_rgb_unregister(struct gpio_led *led)
#endif /* CONFIG_LED_GPIO_RGB */
#ifdef CONFIG_LED_GPIO_OF
struct led_trg {
const char *str;
enum led_trigger trg;
};
static struct led_trg triggers[] = {
{ .str = "heartbeat", LED_TRIGGER_HEARTBEAT, },
{ .str = "panic", LED_TRIGGER_PANIC, },
{ .str = "net", LED_TRIGGER_NET_TXRX, },
};
static void led_of_parse_trigger(struct led *led, struct device_node *np)
{
const char *trigger;
int i;
trigger = of_get_property(np, "linux,default-trigger", NULL);
if (!trigger)
trigger = of_get_property(np, "barebox,default-trigger", NULL);
if (!trigger)
return;
for (i = 0; i < ARRAY_SIZE(triggers); i++) {
struct led_trg *trg = &triggers[i];
if (!strcmp(trg->str, trigger)) {
/* disable LED before installing trigger */
led_set(led, 0);
led_set_trigger(trg->trg, led);
return;
}
}
}
static int led_gpio_of_probe(struct device_d *dev)
{
struct device_node *child;

View File

@ -58,6 +58,8 @@ static inline void led_trigger(enum led_trigger trigger, enum trigger_type type)
int led_get_trigger(enum led_trigger trigger);
void led_of_parse_trigger(struct led *led, struct device_node *np);
/* gpio LED support */
struct gpio_led {
int gpio;