All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] leds: use led_brightness_set in led_trigger_event
@ 2012-06-11 20:57 Fabio Baltieri
  2012-06-11 21:38 ` Shuah Khan
  0 siblings, 1 reply; 7+ messages in thread
From: Fabio Baltieri @ 2012-06-11 20:57 UTC (permalink / raw)
  To: Bryan Wu; +Cc: linux-leds, linux-kernel, Richard Purdie, Fabio Baltieri

Fix led_trigger_event() to use led_brightness_set() instead of
led_set_brightness(), so that any pending blink timer is stopped before
setting the new brightness value.  Without this fix LED status may be
overridden by a pending timer.

This allows a trigger to use a mix of led_trigger_event(),
led_trigger_blink() and led_trigger_blink_oneshot() without races.

Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com>
Cc: Bryan Wu <bryan.wu@canonical.com>
---
Hi Bryan,

I found this one while working on another patch but I think it's also needed by
other drivers which mixes led_trigger_blink() and led_trigger_event(), such as
power_supply_leds.

Without this a led don't stop blinking as it should when calling
led_trigger_event().

Should not cause any harm on other drivers.

(I'm starting to find the whole led_set_brightness/led_brightness_set thing a
bit confusing BTW...)

Fabio

 drivers/leds/led-triggers.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c
index fa0b9be..b88d3b9 100644
--- a/drivers/leds/led-triggers.c
+++ b/drivers/leds/led-triggers.c
@@ -224,7 +224,7 @@ void led_trigger_event(struct led_trigger *trig,
 		struct led_classdev *led_cdev;
 
 		led_cdev = list_entry(entry, struct led_classdev, trig_list);
-		led_set_brightness(led_cdev, brightness);
+		led_brightness_set(led_cdev, brightness);
 	}
 	read_unlock(&trig->leddev_list_lock);
 }
-- 
1.7.11.rc1.9.gf623ca1.dirty


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] leds: use led_brightness_set in led_trigger_event
  2012-06-11 20:57 [PATCH] leds: use led_brightness_set in led_trigger_event Fabio Baltieri
@ 2012-06-11 21:38 ` Shuah Khan
  2012-06-12  7:16   ` Fabio Baltieri
  0 siblings, 1 reply; 7+ messages in thread
From: Shuah Khan @ 2012-06-11 21:38 UTC (permalink / raw)
  To: Fabio Baltieri
  Cc: shuahkhan, Bryan Wu, linux-leds, linux-kernel, Richard Purdie

On Mon, 2012-06-11 at 22:57 +0200, Fabio Baltieri wrote:
> Fix led_trigger_event() to use led_brightness_set() instead of
> led_set_brightness(), so that any pending blink timer is stopped before
> setting the new brightness value.  Without this fix LED status may be
> overridden by a pending timer.
> 
> This allows a trigger to use a mix of led_trigger_event(),
> led_trigger_blink() and led_trigger_blink_oneshot() without races.
> 
> Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com>
> Cc: Bryan Wu <bryan.wu@canonical.com>
> ---
> Hi Bryan,
> 
> I found this one while working on another patch but I think it's also needed by
> other drivers which mixes led_trigger_blink() and led_trigger_event(), such as
> power_supply_leds.
> 
> Without this a led don't stop blinking as it should when calling
> led_trigger_event().

Good find. This is very subtle race though because both timer and
oneshot triggers call led_brightness_set() from their deactivate
routines. Is this when these events triggered using oneshot trigger? 

> 
> Should not cause any harm on other drivers.
> 
> (I'm starting to find the whole led_set_brightness/led_brightness_set thing a
> bit confusing BTW...)

I agree with the names are confusing. :) It found it confusing as well.
Probably why we have this bug hiding until led_trigger_blink() came
along.

led_brightness_set() calls led_set_brightness(). led_set_brightness()
takes cares about whether the driver is in suspend state and invokes
driver's brightness_set interface. Maybe led_clear_blink_timer() would
be a better name for this led_brightness_set() routine.

I can volunteer to make this change if we agree that this will be a good
one to clear this naming confusion.

-- Shuah

> 
> Fabio
> 
>  drivers/leds/led-triggers.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c
> index fa0b9be..b88d3b9 100644
> --- a/drivers/leds/led-triggers.c
> +++ b/drivers/leds/led-triggers.c
> @@ -224,7 +224,7 @@ void led_trigger_event(struct led_trigger *trig,
>  		struct led_classdev *led_cdev;
>  
>  		led_cdev = list_entry(entry, struct led_classdev, trig_list);
> -		led_set_brightness(led_cdev, brightness);
> +		led_brightness_set(led_cdev, brightness);

This is in-line with led_trigger_set() which is calling
led_bightness_set() correctly. Also led_classdev_unregister() calls it I
think for the same reason so the blink timer can be stopped.

>  	}
>  	read_unlock(&trig->leddev_list_lock);
>  }



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] leds: use led_brightness_set in led_trigger_event
  2012-06-11 21:38 ` Shuah Khan
@ 2012-06-12  7:16   ` Fabio Baltieri
  2012-06-12  7:51     ` Bryan Wu
  0 siblings, 1 reply; 7+ messages in thread
From: Fabio Baltieri @ 2012-06-12  7:16 UTC (permalink / raw)
  To: Shuah Khan; +Cc: Bryan Wu, linux-leds, linux-kernel, Richard Purdie

On Mon, Jun 11, 2012 at 03:38:25PM -0600, Shuah Khan wrote:
> On Mon, 2012-06-11 at 22:57 +0200, Fabio Baltieri wrote:
> > Fix led_trigger_event() to use led_brightness_set() instead of
> > led_set_brightness(), so that any pending blink timer is stopped before
> > setting the new brightness value.  Without this fix LED status may be
> > overridden by a pending timer.
> > 
> > This allows a trigger to use a mix of led_trigger_event(),
> > led_trigger_blink() and led_trigger_blink_oneshot() without races.
> > 
> > Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com>
> > Cc: Bryan Wu <bryan.wu@canonical.com>
> > ---
> > Hi Bryan,
> > 
> > I found this one while working on another patch but I think it's also needed by
> > other drivers which mixes led_trigger_blink() and led_trigger_event(), such as
> > power_supply_leds.
> > 
> > Without this a led don't stop blinking as it should when calling
> > led_trigger_event().
> 
> Good find. This is very subtle race though because both timer and
> oneshot triggers call led_brightness_set() from their deactivate
> routines. Is this when these events triggered using oneshot trigger? 

Actually that was when mixing blink (both timer and oneshot, they use
the same timer) and standard trigger-event-set. It should be safe if
only internal (core) functions call set_brightness.

> > 
> > Should not cause any harm on other drivers.
> > 
> > (I'm starting to find the whole led_set_brightness/led_brightness_set thing a
> > bit confusing BTW...)
> 
> I agree with the names are confusing. :) It found it confusing as well.
> Probably why we have this bug hiding until led_trigger_blink() came
> along.
> 
> led_brightness_set() calls led_set_brightness(). led_set_brightness()
> takes cares about whether the driver is in suspend state and invokes
> driver's brightness_set interface. Maybe led_clear_blink_timer() would
> be a better name for this led_brightness_set() routine.

I think maybe we should just rename the function to led_set_brightness()
for the safe one (the one whichh also deactivate the time) and
_led_set_brightness() for the internal one, to put some emphasis to the
"internal" nature of the second.

> I can volunteer to make this change if we agree that this will be a good
> one to clear this naming confusion.

That would save some headache in the future! :-)

Fabio

> 
> -- Shuah
> 
> > 
> > Fabio
> > 
> >  drivers/leds/led-triggers.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c
> > index fa0b9be..b88d3b9 100644
> > --- a/drivers/leds/led-triggers.c
> > +++ b/drivers/leds/led-triggers.c
> > @@ -224,7 +224,7 @@ void led_trigger_event(struct led_trigger *trig,
> >  		struct led_classdev *led_cdev;
> >  
> >  		led_cdev = list_entry(entry, struct led_classdev, trig_list);
> > -		led_set_brightness(led_cdev, brightness);
> > +		led_brightness_set(led_cdev, brightness);
> 
> This is in-line with led_trigger_set() which is calling
> led_bightness_set() correctly. Also led_classdev_unregister() calls it I
> think for the same reason so the blink timer can be stopped.
> 
> >  	}
> >  	read_unlock(&trig->leddev_list_lock);
> >  }
> 
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] leds: use led_brightness_set in led_trigger_event
  2012-06-12  7:16   ` Fabio Baltieri
@ 2012-06-12  7:51     ` Bryan Wu
  2012-06-12 17:15       ` Shuah Khan
  0 siblings, 1 reply; 7+ messages in thread
From: Bryan Wu @ 2012-06-12  7:51 UTC (permalink / raw)
  To: Fabio Baltieri; +Cc: Shuah Khan, linux-leds, linux-kernel, Richard Purdie

On Tue, Jun 12, 2012 at 3:16 PM, Fabio Baltieri
<fabio.baltieri@gmail.com> wrote:
> On Mon, Jun 11, 2012 at 03:38:25PM -0600, Shuah Khan wrote:
>> On Mon, 2012-06-11 at 22:57 +0200, Fabio Baltieri wrote:
>> > Fix led_trigger_event() to use led_brightness_set() instead of
>> > led_set_brightness(), so that any pending blink timer is stopped before
>> > setting the new brightness value.  Without this fix LED status may be
>> > overridden by a pending timer.
>> >
>> > This allows a trigger to use a mix of led_trigger_event(),
>> > led_trigger_blink() and led_trigger_blink_oneshot() without races.
>> >
>> > Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com>
>> > Cc: Bryan Wu <bryan.wu@canonical.com>
>> > ---
>> > Hi Bryan,
>> >
>> > I found this one while working on another patch but I think it's also needed by
>> > other drivers which mixes led_trigger_blink() and led_trigger_event(), such as
>> > power_supply_leds.
>> >
>> > Without this a led don't stop blinking as it should when calling
>> > led_trigger_event().
>>
>> Good find. This is very subtle race though because both timer and
>> oneshot triggers call led_brightness_set() from their deactivate
>> routines. Is this when these events triggered using oneshot trigger?
>
> Actually that was when mixing blink (both timer and oneshot, they use
> the same timer) and standard trigger-event-set. It should be safe if
> only internal (core) functions call set_brightness.
>
>> >
>> > Should not cause any harm on other drivers.
>> >
>> > (I'm starting to find the whole led_set_brightness/led_brightness_set thing a
>> > bit confusing BTW...)
>>
>> I agree with the names are confusing. :) It found it confusing as well.
>> Probably why we have this bug hiding until led_trigger_blink() came
>> along.
>>
>> led_brightness_set() calls led_set_brightness(). led_set_brightness()
>> takes cares about whether the driver is in suspend state and invokes
>> driver's brightness_set interface. Maybe led_clear_blink_timer() would
>> be a better name for this led_brightness_set() routine.
>
> I think maybe we should just rename the function to led_set_brightness()
> for the safe one (the one whichh also deactivate the time) and
> _led_set_brightness() for the internal one, to put some emphasis to the
> "internal" nature of the second.
>

Thanks for catching this. It's a good idea we sort out those confusing name.
Probably __led_set_bringness() is more conventional than _led_set_brightness().

And might also need to revisit other function names.

>> I can volunteer to make this change if we agree that this will be a good
>> one to clear this naming confusion.
>

OK, good Shuah, please go ahead and submit patches and I will hold
this patch for a while and wait for the final fixing.

-Bryan

> That would save some headache in the future! :-)
>
> Fabio
>
>>
>> -- Shuah
>>
>> >
>> > Fabio
>> >
>> >  drivers/leds/led-triggers.c | 2 +-
>> >  1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c
>> > index fa0b9be..b88d3b9 100644
>> > --- a/drivers/leds/led-triggers.c
>> > +++ b/drivers/leds/led-triggers.c
>> > @@ -224,7 +224,7 @@ void led_trigger_event(struct led_trigger *trig,
>> >             struct led_classdev *led_cdev;
>> >
>> >             led_cdev = list_entry(entry, struct led_classdev, trig_list);
>> > -           led_set_brightness(led_cdev, brightness);
>> > +           led_brightness_set(led_cdev, brightness);
>>
>> This is in-line with led_trigger_set() which is calling
>> led_bightness_set() correctly. Also led_classdev_unregister() calls it I
>> think for the same reason so the blink timer can be stopped.
>>
>> >     }
>> >     read_unlock(&trig->leddev_list_lock);
>> >  }
>>
>>



-- 
Bryan Wu <bryan.wu@canonical.com>
Kernel Developer    +86.186-168-78255 Mobile
Canonical Ltd.      www.canonical.com
Ubuntu - Linux for human beings | www.ubuntu.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] leds: use led_brightness_set in led_trigger_event
  2012-06-12  7:51     ` Bryan Wu
@ 2012-06-12 17:15       ` Shuah Khan
  2012-06-13  2:01         ` [PATCH] leds: Rename led_set_brightness() to __led_set_brightness() Shuah Khan
  0 siblings, 1 reply; 7+ messages in thread
From: Shuah Khan @ 2012-06-12 17:15 UTC (permalink / raw)
  To: Bryan Wu
  Cc: shuahkhan, Fabio Baltieri, linux-leds, linux-kernel, Richard Purdie


> 
> Thanks for catching this. It's a good idea we sort out those confusing name.
> Probably __led_set_bringness() is more conventional than _led_set_brightness().
> 
> And might also need to revisit other function names.
> 
> >> I can volunteer to make this change if we agree that this will be a good
> >> one to clear this naming confusion.
> >
> 
> OK, good Shuah, please go ahead and submit patches and I will hold
> this patch for a while and wait for the final fixing.
> 

Thanks. __led_set_brightness() sounds good. Will base patches off of
linux-leds devel unless that is not the right one.

-- Shuah



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] leds: Rename led_set_brightness() to __led_set_brightness()
  2012-06-12 17:15       ` Shuah Khan
@ 2012-06-13  2:01         ` Shuah Khan
  2012-06-13  4:25           ` Bryan Wu
  0 siblings, 1 reply; 7+ messages in thread
From: Shuah Khan @ 2012-06-13  2:01 UTC (permalink / raw)
  To: Bryan Wu
  Cc: shuahkhan, Fabio Baltieri, linux-leds, linux-kernel, Richard Purdie

Rename leds internal interface led_set_brightness() to __led_set_brightness()
to reduce confusion between led_set_brightness() and the external interface
led_brightness_set(). led_brightness_set() cancels the timer and then calls
led_set_brightness().


Signed-off-by: Shuah Khan <shuahkhan@gmail.com>
---

Bryan,

This is the first patch that renames led_set_brightness() to __led_set_brightness().
Will send another patch that renames led_brightness_set() to led_set_brightness().

-- Shuah


 drivers/leds/led-class.c          |    6 +++---
 drivers/leds/led-core.c           |    4 ++--
 drivers/leds/led-triggers.c       |    2 +-
 drivers/leds/leds.h               |    2 +-
 drivers/leds/ledtrig-backlight.c  |    8 ++++----
 drivers/leds/ledtrig-default-on.c |    2 +-
 drivers/leds/ledtrig-gpio.c       |    6 +++---
 drivers/leds/ledtrig-heartbeat.c  |    2 +-
 drivers/leds/ledtrig-oneshot.c    |    4 ++--
 drivers/leds/ledtrig-transient.c  |    8 ++++----
 10 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 81eb091..cb0a6eb 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -53,7 +53,7 @@ static ssize_t led_brightness_store(struct device *dev,
 
 	if (state == LED_OFF)
 		led_trigger_remove(led_cdev);
-	led_set_brightness(led_cdev, state);
+	__led_set_brightness(led_cdev, state);
 
 	return size;
 }
@@ -82,7 +82,7 @@ static void led_timer_function(unsigned long data)
 	unsigned long delay;
 
 	if (!led_cdev->blink_delay_on || !led_cdev->blink_delay_off) {
-		led_set_brightness(led_cdev, LED_OFF);
+		__led_set_brightness(led_cdev, LED_OFF);
 		return;
 	}
 
@@ -105,7 +105,7 @@ static void led_timer_function(unsigned long data)
 		delay = led_cdev->blink_delay_off;
 	}
 
-	led_set_brightness(led_cdev, brightness);
+	__led_set_brightness(led_cdev, brightness);
 
 	/* Return in next iteration if led is in one-shot mode and we are in
 	 * the final blink state so that the led is toggled each delay_on +
diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
index 31f1f78..176961b 100644
--- a/drivers/leds/led-core.c
+++ b/drivers/leds/led-core.c
@@ -45,7 +45,7 @@ static void led_set_software_blink(struct led_classdev *led_cdev,
 
 	/* never off - just set to brightness */
 	if (!delay_off) {
-		led_set_brightness(led_cdev, led_cdev->blink_brightness);
+		__led_set_brightness(led_cdev, led_cdev->blink_brightness);
 		return;
 	}
 
@@ -111,6 +111,6 @@ void led_brightness_set(struct led_classdev *led_cdev,
 	led_cdev->blink_delay_on = 0;
 	led_cdev->blink_delay_off = 0;
 
-	led_set_brightness(led_cdev, brightness);
+	__led_set_brightness(led_cdev, brightness);
 }
 EXPORT_SYMBOL(led_brightness_set);
diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c
index fa0b9be..f8b14dd 100644
--- a/drivers/leds/led-triggers.c
+++ b/drivers/leds/led-triggers.c
@@ -224,7 +224,7 @@ void led_trigger_event(struct led_trigger *trig,
 		struct led_classdev *led_cdev;
 
 		led_cdev = list_entry(entry, struct led_classdev, trig_list);
-		led_set_brightness(led_cdev, brightness);
+		__led_set_brightness(led_cdev, brightness);
 	}
 	read_unlock(&trig->leddev_list_lock);
 }
diff --git a/drivers/leds/leds.h b/drivers/leds/leds.h
index e77c7f8..d02acd4 100644
--- a/drivers/leds/leds.h
+++ b/drivers/leds/leds.h
@@ -17,7 +17,7 @@
 #include <linux/rwsem.h>
 #include <linux/leds.h>
 
-static inline void led_set_brightness(struct led_classdev *led_cdev,
+static inline void __led_set_brightness(struct led_classdev *led_cdev,
 					enum led_brightness value)
 {
 	if (value > led_cdev->max_brightness)
diff --git a/drivers/leds/ledtrig-backlight.c b/drivers/leds/ledtrig-backlight.c
index e272686..b941685 100644
--- a/drivers/leds/ledtrig-backlight.c
+++ b/drivers/leds/ledtrig-backlight.c
@@ -46,9 +46,9 @@ static int fb_notifier_callback(struct notifier_block *p,
 
 		if ((n->old_status == UNBLANK) ^ n->invert) {
 			n->brightness = led->brightness;
-			led_set_brightness(led, LED_OFF);
+			__led_set_brightness(led, LED_OFF);
 		} else {
-			led_set_brightness(led, n->brightness);
+			__led_set_brightness(led, n->brightness);
 		}
 
 		n->old_status = new_status;
@@ -87,9 +87,9 @@ static ssize_t bl_trig_invert_store(struct device *dev,
 
 	/* After inverting, we need to update the LED. */
 	if ((n->old_status == BLANK) ^ n->invert)
-		led_set_brightness(led, LED_OFF);
+		__led_set_brightness(led, LED_OFF);
 	else
-		led_set_brightness(led, n->brightness);
+		__led_set_brightness(led, n->brightness);
 
 	return num;
 }
diff --git a/drivers/leds/ledtrig-default-on.c b/drivers/leds/ledtrig-default-on.c
index a4ef54b..eac1f1b 100644
--- a/drivers/leds/ledtrig-default-on.c
+++ b/drivers/leds/ledtrig-default-on.c
@@ -19,7 +19,7 @@
 
 static void defon_trig_activate(struct led_classdev *led_cdev)
 {
-	led_set_brightness(led_cdev, led_cdev->max_brightness);
+	__led_set_brightness(led_cdev, led_cdev->max_brightness);
 }
 
 static struct led_trigger defon_led_trigger = {
diff --git a/drivers/leds/ledtrig-gpio.c b/drivers/leds/ledtrig-gpio.c
index f057c10..ba215dc 100644
--- a/drivers/leds/ledtrig-gpio.c
+++ b/drivers/leds/ledtrig-gpio.c
@@ -54,12 +54,12 @@ static void gpio_trig_work(struct work_struct *work)
 
 	if (tmp) {
 		if (gpio_data->desired_brightness)
-			led_set_brightness(gpio_data->led,
+			__led_set_brightness(gpio_data->led,
 					   gpio_data->desired_brightness);
 		else
-			led_set_brightness(gpio_data->led, LED_FULL);
+			__led_set_brightness(gpio_data->led, LED_FULL);
 	} else {
-		led_set_brightness(gpio_data->led, LED_OFF);
+		__led_set_brightness(gpio_data->led, LED_OFF);
 	}
 }
 
diff --git a/drivers/leds/ledtrig-heartbeat.c b/drivers/leds/ledtrig-heartbeat.c
index 41dc76d..d3039f2 100644
--- a/drivers/leds/ledtrig-heartbeat.c
+++ b/drivers/leds/ledtrig-heartbeat.c
@@ -67,7 +67,7 @@ static void led_heartbeat_function(unsigned long data)
 		break;
 	}
 
-	led_set_brightness(led_cdev, brightness);
+	__led_set_brightness(led_cdev, brightness);
 	mod_timer(&heartbeat_data->timer, jiffies + delay);
 }
 
diff --git a/drivers/leds/ledtrig-oneshot.c b/drivers/leds/ledtrig-oneshot.c
index 5c9edf7..5cbab41 100644
--- a/drivers/leds/ledtrig-oneshot.c
+++ b/drivers/leds/ledtrig-oneshot.c
@@ -63,9 +63,9 @@ static ssize_t led_invert_store(struct device *dev,
 	oneshot_data->invert = !!state;
 
 	if (oneshot_data->invert)
-		led_set_brightness(led_cdev, LED_FULL);
+		__led_set_brightness(led_cdev, LED_FULL);
 	else
-		led_set_brightness(led_cdev, LED_OFF);
+		__led_set_brightness(led_cdev, LED_OFF);
 
 	return size;
 }
diff --git a/drivers/leds/ledtrig-transient.c b/drivers/leds/ledtrig-transient.c
index 83179f4..398f104 100644
--- a/drivers/leds/ledtrig-transient.c
+++ b/drivers/leds/ledtrig-transient.c
@@ -41,7 +41,7 @@ static void transient_timer_function(unsigned long data)
 	struct transient_trig_data *transient_data = led_cdev->trigger_data;
 
 	transient_data->activate = 0;
-	led_set_brightness(led_cdev, transient_data->restore_state);
+	__led_set_brightness(led_cdev, transient_data->restore_state);
 }
 
 static ssize_t transient_activate_show(struct device *dev,
@@ -72,7 +72,7 @@ static ssize_t transient_activate_store(struct device *dev,
 	if (state == 0 && transient_data->activate == 1) {
 		del_timer(&transient_data->timer);
 		transient_data->activate = state;
-		led_set_brightness(led_cdev, transient_data->restore_state);
+		__led_set_brightness(led_cdev, transient_data->restore_state);
 		return size;
 	}
 
@@ -80,7 +80,7 @@ static ssize_t transient_activate_store(struct device *dev,
 	if (state == 1 && transient_data->activate == 0 &&
 	    transient_data->duration != 0) {
 		transient_data->activate = state;
-		led_set_brightness(led_cdev, transient_data->state);
+		__led_set_brightness(led_cdev, transient_data->state);
 		transient_data->restore_state =
 		    (transient_data->state == LED_FULL) ? LED_OFF : LED_FULL;
 		mod_timer(&transient_data->timer,
@@ -203,7 +203,7 @@ static void transient_trig_deactivate(struct led_classdev *led_cdev)
 
 	if (led_cdev->activated) {
 		del_timer_sync(&transient_data->timer);
-		led_set_brightness(led_cdev, transient_data->restore_state);
+		__led_set_brightness(led_cdev, transient_data->restore_state);
 		device_remove_file(led_cdev->dev, &dev_attr_activate);
 		device_remove_file(led_cdev->dev, &dev_attr_duration);
 		device_remove_file(led_cdev->dev, &dev_attr_state);
-- 
1.7.9.5




^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] leds: Rename led_set_brightness() to __led_set_brightness()
  2012-06-13  2:01         ` [PATCH] leds: Rename led_set_brightness() to __led_set_brightness() Shuah Khan
@ 2012-06-13  4:25           ` Bryan Wu
  0 siblings, 0 replies; 7+ messages in thread
From: Bryan Wu @ 2012-06-13  4:25 UTC (permalink / raw)
  To: shuahkhan; +Cc: Fabio Baltieri, linux-leds, linux-kernel, Richard Purdie

On Wed, Jun 13, 2012 at 10:01 AM, Shuah Khan <shuahkhan@gmail.com> wrote:
> Rename leds internal interface led_set_brightness() to __led_set_brightness()
> to reduce confusion between led_set_brightness() and the external interface
> led_brightness_set(). led_brightness_set() cancels the timer and then calls
> led_set_brightness().
>
>
> Signed-off-by: Shuah Khan <shuahkhan@gmail.com>
> ---
>
> Bryan,
>
> This is the first patch that renames led_set_brightness() to __led_set_brightness().
> Will send another patch that renames led_brightness_set() to led_set_brightness().
>
> -- Shuah

OK, thanks, applied to devel and for-next

>
>
>  drivers/leds/led-class.c          |    6 +++---
>  drivers/leds/led-core.c           |    4 ++--
>  drivers/leds/led-triggers.c       |    2 +-
>  drivers/leds/leds.h               |    2 +-
>  drivers/leds/ledtrig-backlight.c  |    8 ++++----
>  drivers/leds/ledtrig-default-on.c |    2 +-
>  drivers/leds/ledtrig-gpio.c       |    6 +++---
>  drivers/leds/ledtrig-heartbeat.c  |    2 +-
>  drivers/leds/ledtrig-oneshot.c    |    4 ++--
>  drivers/leds/ledtrig-transient.c  |    8 ++++----
>  10 files changed, 22 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
> index 81eb091..cb0a6eb 100644
> --- a/drivers/leds/led-class.c
> +++ b/drivers/leds/led-class.c
> @@ -53,7 +53,7 @@ static ssize_t led_brightness_store(struct device *dev,
>
>        if (state == LED_OFF)
>                led_trigger_remove(led_cdev);
> -       led_set_brightness(led_cdev, state);
> +       __led_set_brightness(led_cdev, state);
>
>        return size;
>  }
> @@ -82,7 +82,7 @@ static void led_timer_function(unsigned long data)
>        unsigned long delay;
>
>        if (!led_cdev->blink_delay_on || !led_cdev->blink_delay_off) {
> -               led_set_brightness(led_cdev, LED_OFF);
> +               __led_set_brightness(led_cdev, LED_OFF);
>                return;
>        }
>
> @@ -105,7 +105,7 @@ static void led_timer_function(unsigned long data)
>                delay = led_cdev->blink_delay_off;
>        }
>
> -       led_set_brightness(led_cdev, brightness);
> +       __led_set_brightness(led_cdev, brightness);
>
>        /* Return in next iteration if led is in one-shot mode and we are in
>         * the final blink state so that the led is toggled each delay_on +
> diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
> index 31f1f78..176961b 100644
> --- a/drivers/leds/led-core.c
> +++ b/drivers/leds/led-core.c
> @@ -45,7 +45,7 @@ static void led_set_software_blink(struct led_classdev *led_cdev,
>
>        /* never off - just set to brightness */
>        if (!delay_off) {
> -               led_set_brightness(led_cdev, led_cdev->blink_brightness);
> +               __led_set_brightness(led_cdev, led_cdev->blink_brightness);
>                return;
>        }
>
> @@ -111,6 +111,6 @@ void led_brightness_set(struct led_classdev *led_cdev,
>        led_cdev->blink_delay_on = 0;
>        led_cdev->blink_delay_off = 0;
>
> -       led_set_brightness(led_cdev, brightness);
> +       __led_set_brightness(led_cdev, brightness);
>  }
>  EXPORT_SYMBOL(led_brightness_set);
> diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c
> index fa0b9be..f8b14dd 100644
> --- a/drivers/leds/led-triggers.c
> +++ b/drivers/leds/led-triggers.c
> @@ -224,7 +224,7 @@ void led_trigger_event(struct led_trigger *trig,
>                struct led_classdev *led_cdev;
>
>                led_cdev = list_entry(entry, struct led_classdev, trig_list);
> -               led_set_brightness(led_cdev, brightness);
> +               __led_set_brightness(led_cdev, brightness);
>        }
>        read_unlock(&trig->leddev_list_lock);
>  }
> diff --git a/drivers/leds/leds.h b/drivers/leds/leds.h
> index e77c7f8..d02acd4 100644
> --- a/drivers/leds/leds.h
> +++ b/drivers/leds/leds.h
> @@ -17,7 +17,7 @@
>  #include <linux/rwsem.h>
>  #include <linux/leds.h>
>
> -static inline void led_set_brightness(struct led_classdev *led_cdev,
> +static inline void __led_set_brightness(struct led_classdev *led_cdev,
>                                        enum led_brightness value)
>  {
>        if (value > led_cdev->max_brightness)
> diff --git a/drivers/leds/ledtrig-backlight.c b/drivers/leds/ledtrig-backlight.c
> index e272686..b941685 100644
> --- a/drivers/leds/ledtrig-backlight.c
> +++ b/drivers/leds/ledtrig-backlight.c
> @@ -46,9 +46,9 @@ static int fb_notifier_callback(struct notifier_block *p,
>
>                if ((n->old_status == UNBLANK) ^ n->invert) {
>                        n->brightness = led->brightness;
> -                       led_set_brightness(led, LED_OFF);
> +                       __led_set_brightness(led, LED_OFF);
>                } else {
> -                       led_set_brightness(led, n->brightness);
> +                       __led_set_brightness(led, n->brightness);
>                }
>
>                n->old_status = new_status;
> @@ -87,9 +87,9 @@ static ssize_t bl_trig_invert_store(struct device *dev,
>
>        /* After inverting, we need to update the LED. */
>        if ((n->old_status == BLANK) ^ n->invert)
> -               led_set_brightness(led, LED_OFF);
> +               __led_set_brightness(led, LED_OFF);
>        else
> -               led_set_brightness(led, n->brightness);
> +               __led_set_brightness(led, n->brightness);
>
>        return num;
>  }
> diff --git a/drivers/leds/ledtrig-default-on.c b/drivers/leds/ledtrig-default-on.c
> index a4ef54b..eac1f1b 100644
> --- a/drivers/leds/ledtrig-default-on.c
> +++ b/drivers/leds/ledtrig-default-on.c
> @@ -19,7 +19,7 @@
>
>  static void defon_trig_activate(struct led_classdev *led_cdev)
>  {
> -       led_set_brightness(led_cdev, led_cdev->max_brightness);
> +       __led_set_brightness(led_cdev, led_cdev->max_brightness);
>  }
>
>  static struct led_trigger defon_led_trigger = {
> diff --git a/drivers/leds/ledtrig-gpio.c b/drivers/leds/ledtrig-gpio.c
> index f057c10..ba215dc 100644
> --- a/drivers/leds/ledtrig-gpio.c
> +++ b/drivers/leds/ledtrig-gpio.c
> @@ -54,12 +54,12 @@ static void gpio_trig_work(struct work_struct *work)
>
>        if (tmp) {
>                if (gpio_data->desired_brightness)
> -                       led_set_brightness(gpio_data->led,
> +                       __led_set_brightness(gpio_data->led,
>                                           gpio_data->desired_brightness);
>                else
> -                       led_set_brightness(gpio_data->led, LED_FULL);
> +                       __led_set_brightness(gpio_data->led, LED_FULL);
>        } else {
> -               led_set_brightness(gpio_data->led, LED_OFF);
> +               __led_set_brightness(gpio_data->led, LED_OFF);
>        }
>  }
>
> diff --git a/drivers/leds/ledtrig-heartbeat.c b/drivers/leds/ledtrig-heartbeat.c
> index 41dc76d..d3039f2 100644
> --- a/drivers/leds/ledtrig-heartbeat.c
> +++ b/drivers/leds/ledtrig-heartbeat.c
> @@ -67,7 +67,7 @@ static void led_heartbeat_function(unsigned long data)
>                break;
>        }
>
> -       led_set_brightness(led_cdev, brightness);
> +       __led_set_brightness(led_cdev, brightness);
>        mod_timer(&heartbeat_data->timer, jiffies + delay);
>  }
>
> diff --git a/drivers/leds/ledtrig-oneshot.c b/drivers/leds/ledtrig-oneshot.c
> index 5c9edf7..5cbab41 100644
> --- a/drivers/leds/ledtrig-oneshot.c
> +++ b/drivers/leds/ledtrig-oneshot.c
> @@ -63,9 +63,9 @@ static ssize_t led_invert_store(struct device *dev,
>        oneshot_data->invert = !!state;
>
>        if (oneshot_data->invert)
> -               led_set_brightness(led_cdev, LED_FULL);
> +               __led_set_brightness(led_cdev, LED_FULL);
>        else
> -               led_set_brightness(led_cdev, LED_OFF);
> +               __led_set_brightness(led_cdev, LED_OFF);
>
>        return size;
>  }
> diff --git a/drivers/leds/ledtrig-transient.c b/drivers/leds/ledtrig-transient.c
> index 83179f4..398f104 100644
> --- a/drivers/leds/ledtrig-transient.c
> +++ b/drivers/leds/ledtrig-transient.c
> @@ -41,7 +41,7 @@ static void transient_timer_function(unsigned long data)
>        struct transient_trig_data *transient_data = led_cdev->trigger_data;
>
>        transient_data->activate = 0;
> -       led_set_brightness(led_cdev, transient_data->restore_state);
> +       __led_set_brightness(led_cdev, transient_data->restore_state);
>  }
>
>  static ssize_t transient_activate_show(struct device *dev,
> @@ -72,7 +72,7 @@ static ssize_t transient_activate_store(struct device *dev,
>        if (state == 0 && transient_data->activate == 1) {
>                del_timer(&transient_data->timer);
>                transient_data->activate = state;
> -               led_set_brightness(led_cdev, transient_data->restore_state);
> +               __led_set_brightness(led_cdev, transient_data->restore_state);
>                return size;
>        }
>
> @@ -80,7 +80,7 @@ static ssize_t transient_activate_store(struct device *dev,
>        if (state == 1 && transient_data->activate == 0 &&
>            transient_data->duration != 0) {
>                transient_data->activate = state;
> -               led_set_brightness(led_cdev, transient_data->state);
> +               __led_set_brightness(led_cdev, transient_data->state);
>                transient_data->restore_state =
>                    (transient_data->state == LED_FULL) ? LED_OFF : LED_FULL;
>                mod_timer(&transient_data->timer,
> @@ -203,7 +203,7 @@ static void transient_trig_deactivate(struct led_classdev *led_cdev)
>
>        if (led_cdev->activated) {
>                del_timer_sync(&transient_data->timer);
> -               led_set_brightness(led_cdev, transient_data->restore_state);
> +               __led_set_brightness(led_cdev, transient_data->restore_state);
>                device_remove_file(led_cdev->dev, &dev_attr_activate);
>                device_remove_file(led_cdev->dev, &dev_attr_duration);
>                device_remove_file(led_cdev->dev, &dev_attr_state);
> --
> 1.7.9.5
>
>
>



-- 
Bryan Wu <bryan.wu@canonical.com>
Kernel Developer    +86.186-168-78255 Mobile
Canonical Ltd.      www.canonical.com
Ubuntu - Linux for human beings | www.ubuntu.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-06-13  4:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-11 20:57 [PATCH] leds: use led_brightness_set in led_trigger_event Fabio Baltieri
2012-06-11 21:38 ` Shuah Khan
2012-06-12  7:16   ` Fabio Baltieri
2012-06-12  7:51     ` Bryan Wu
2012-06-12 17:15       ` Shuah Khan
2012-06-13  2:01         ` [PATCH] leds: Rename led_set_brightness() to __led_set_brightness() Shuah Khan
2012-06-13  4:25           ` Bryan Wu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.