summaryrefslogtreecommitdiffstats
path: root/drivers/led
diff options
context:
space:
mode:
authorSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>2013-11-09 14:24:06 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-11-11 09:02:07 +0100
commit4faf3055079abfb5c7790f38b8708306be3cc4fc (patch)
tree89dc5f2a8c0a4e391decdc7a3ee5f38c57aa9cd7 /drivers/led
parent7c1091bd5895204b109c5a79996aa9367692a78a (diff)
downloadbarebox-4faf3055079abfb5c7790f38b8708306be3cc4fc.tar.gz
barebox-4faf3055079abfb5c7790f38b8708306be3cc4fc.tar.xz
led: trigger: disable LEDs with trigger before installing it
This disables LEDs that have a trigger function assigned right before the trigger is installed. As the trigger was parsed before the LED has been registered, also swap LED registration and trigger parsing. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/led')
-rw-r--r--drivers/led/led-gpio.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/led/led-gpio.c b/drivers/led/led-gpio.c
index 69db70fab8..7a5ef473e6 100644
--- a/drivers/led/led-gpio.c
+++ b/drivers/led/led-gpio.c
@@ -225,6 +225,8 @@ static void led_of_parse_trigger(struct led *led, struct device_node *np)
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;
}
@@ -252,8 +254,8 @@ static int led_gpio_of_probe(struct device_d *dev)
dev_dbg(dev, "register led %s on gpio%d, active_low = %d\n",
gled->led.name, gled->gpio, gled->active_low);
- led_of_parse_trigger(&gled->led, child);
led_gpio_register(gled);
+ led_of_parse_trigger(&gled->led, child);
}
return 0;