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:
parent
ea0ed15786
commit
e390a8e2b4
|
@ -153,3 +153,37 @@ void led_unregister(struct led *led)
|
||||||
{
|
{
|
||||||
list_del(&led->list);
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -198,41 +198,6 @@ void led_gpio_rgb_unregister(struct gpio_led *led)
|
||||||
#endif /* CONFIG_LED_GPIO_RGB */
|
#endif /* CONFIG_LED_GPIO_RGB */
|
||||||
|
|
||||||
#ifdef CONFIG_LED_GPIO_OF
|
#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)
|
static int led_gpio_of_probe(struct device_d *dev)
|
||||||
{
|
{
|
||||||
struct device_node *child;
|
struct device_node *child;
|
||||||
|
|
|
@ -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);
|
int led_get_trigger(enum led_trigger trigger);
|
||||||
|
|
||||||
|
void led_of_parse_trigger(struct led *led, struct device_node *np);
|
||||||
|
|
||||||
/* gpio LED support */
|
/* gpio LED support */
|
||||||
struct gpio_led {
|
struct gpio_led {
|
||||||
int gpio;
|
int gpio;
|
||||||
|
|
Loading…
Reference in New Issue