Skip to contentSkip to conversation

leds: Support automatic start of blinking with ledtrig-timer

PATCH In review [email protected] 3 participants 3 messages Mar 18, 2011 – Apr 8, 2011 LED

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 leds: Support automatic start of blinking with ledtrig-timer

From: Esben Haabendal <[email protected]>

By setting initial values blink_delay_on and blink_delay_off in a led_classdev struct, this change starts the blinking when the led is initialized.

---
 drivers/leds/led-class.c     |    3 ++-
 drivers/leds/ledtrig-timer.c |    3 +++
 2 files changed, 5 insertions(+), 1 deletions(-)
drivers/leds/led-class.c +2 -1
index d5a4ade..d7bdef8 100644
@@ -131,7 +131,8 @@ static void led_set_software_blink(struct led_classdev *led_cdev,
 	if (!led_cdev->blink_brightness)
 		led_cdev->blink_brightness = led_cdev->max_brightness;
 
-	if (delay_on == led_cdev->blink_delay_on &&
+	if (led_cdev->trigger_data &&
+	    delay_on == led_cdev->blink_delay_on &&
 	    delay_off == led_cdev->blink_delay_off)
 		return;
 
drivers/leds/ledtrig-timer.c +3 -0
index b09bcbe..d87c9d0 100644
@@ -91,6 +91,9 @@ static void timer_trig_activate(struct led_classdev *led_cdev)
 	if (rc)
 		goto err_out_delayon;
 
+	led_blink_set(led_cdev, &led_cdev->blink_delay_on,
+		      &led_cdev->blink_delay_off);
+
 	led_cdev->trigger_data = (void *)1;
 
 	return;
Signature · 1 line
1.7.1
#1 lore raw
Quoted 31 lines · On Fri, 18 Mar 2011 12:03:19 +0100 [email protected] wrote:

From: Esben Haabendal <[email protected]>

By setting initial values blink_delay_on and blink_delay_off in a led_classdev struct, this change starts the blinking when the led is initialized.

---
 drivers/leds/led-class.c     |    3 ++-
 drivers/leds/ledtrig-timer.c |    3 +++
 2 files changed, 5 insertions(+), 1 deletions(-)
drivers/leds/led-class.c +2 -1
index d5a4ade..d7bdef8 100644
@@ -131,7 +131,8 @@ static void led_set_software_blink(struct led_classdev *led_cdev,
 	if (!led_cdev->blink_brightness)
 		led_cdev->blink_brightness = led_cdev->max_brightness;
 
-	if (delay_on == led_cdev->blink_delay_on &&
+	if (led_cdev->trigger_data &&
+	    delay_on == led_cdev->blink_delay_on &&
 	    delay_off == led_cdev->blink_delay_off)
 		return;
 
drivers/leds/ledtrig-timer.c +0 -0
index b09bcbe..d87c9d0 100644

drivers/leds/ledtrig-timer.c static void timer_trig_activate(struct led_classdev *led_cdev) · line 99

Quoted 9 lines
drivers/leds/ledtrig-timer.c +3 -0
@@ -91,6 +91,9 @@ static void timer_trig_activate(struct led_classdev *led_cdev)
 	if (rc)
 		goto err_out_delayon;
 
+	led_blink_set(led_cdev, &led_cdev->blink_delay_on,
+		      &led_cdev->blink_delay_off);
+
 	led_cdev->trigger_data = (void *)1;
 
 	return;

It's unclear (to me) exactly what this patch does. Could you please send a more complete description of the user-visible change in behaviour?

Thanks.

#2 lore raw
Quoted 42 lines · Andrew Morton
Quoted 39 lines · On Fri, 18 Mar 2011 12:03:19 +0100 [email protected] wrote:

From: Esben Haabendal <[email protected]>

By setting initial values blink_delay_on and blink_delay_off in a led_classdev struct, this change starts the blinking when the led is initialized.

---
 drivers/leds/led-class.c     |    3 ++-
 drivers/leds/ledtrig-timer.c |    3 +++
 2 files changed, 5 insertions(+), 1 deletions(-)
drivers/leds/led-class.c +2 -1
index d5a4ade..d7bdef8 100644
@@ -131,7 +131,8 @@ static void led_set_software_blink(struct led_classdev *led_cdev,
 	if (!led_cdev->blink_brightness)
 		led_cdev->blink_brightness = led_cdev->max_brightness;
 
-	if (delay_on == led_cdev->blink_delay_on &&
+	if (led_cdev->trigger_data &&
+	    delay_on == led_cdev->blink_delay_on &&
 	    delay_off == led_cdev->blink_delay_off)
 		return;
 
drivers/leds/ledtrig-timer.c +3 -0
index b09bcbe..d87c9d0 100644
@@ -91,6 +91,9 @@ static void timer_trig_activate(struct led_classdev *led_cdev)
 	if (rc)
 		goto err_out_delayon;
 
+	led_blink_set(led_cdev, &led_cdev->blink_delay_on,
+		      &led_cdev->blink_delay_off);
+
 	led_cdev->trigger_data = (void *)1;
 
Quoted 5 lines

drivers/leds/ledtrig-timer.c static void timer_trig_activate(struct led_classdev *led_cdev) · line 99

Quoted 1 line
drivers/leds/ledtrig-timer.c +0 -0
 	return;

It's unclear (to me) exactly what this patch does. Could you please send a more complete description of the user-visible change in behaviour?

With this patch, you can initialize blink_delay_on and blink_delay_off in led_classdev with default_trigger set to "timer", and the led start up blinking. The current ledtrig-timer implementation ignores any initial blink_delay_on/blink_delay_off settings, and requires setting blink_delay_on/blink_delay_off (typically from user-space) before the led blinks.

/Esben