* [PATCH v2] leds: core: add helpers for calling brightness_set(_blocking)
@ 2016-02-16 19:21 Heiner Kallweit
2016-02-18 11:01 ` Jacek Anaszewski
0 siblings, 1 reply; 2+ messages in thread
From: Heiner Kallweit @ 2016-02-16 19:21 UTC (permalink / raw)
To: Jacek Anaszewski; +Cc: linux-leds
Add helpers for calling brightness_set(_blocking) allowing to
simplify the code and make it better readable.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
v2:
- changed helper names
---
drivers/leds/led-core.c | 40 ++++++++++++++++++++++++++--------------
1 file changed, 26 insertions(+), 14 deletions(-)
diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
index ad684b6..3495d5d 100644
--- a/drivers/leds/led-core.c
+++ b/drivers/leds/led-core.c
@@ -25,6 +25,26 @@ EXPORT_SYMBOL_GPL(leds_list_lock);
LIST_HEAD(leds_list);
EXPORT_SYMBOL_GPL(leds_list);
+static int __led_set_brightness(struct led_classdev *led_cdev,
+ enum led_brightness value)
+{
+ if (!led_cdev->brightness_set)
+ return -ENOTSUPP;
+
+ led_cdev->brightness_set(led_cdev, value);
+
+ return 0;
+}
+
+static int __led_set_brightness_blocking(struct led_classdev *led_cdev,
+ enum led_brightness value)
+{
+ if (!led_cdev->brightness_set_blocking)
+ return -ENOTSUPP;
+
+ return led_cdev->brightness_set_blocking(led_cdev, value);
+}
+
static void led_timer_function(unsigned long data)
{
struct led_classdev *led_cdev = (void *)data;
@@ -91,13 +111,10 @@ static void set_brightness_delayed(struct work_struct *ws)
led_cdev->flags &= ~LED_BLINK_DISABLE;
}
- if (led_cdev->brightness_set)
- led_cdev->brightness_set(led_cdev, led_cdev->delayed_set_value);
- else if (led_cdev->brightness_set_blocking)
- ret = led_cdev->brightness_set_blocking(led_cdev,
- led_cdev->delayed_set_value);
- else
- ret = -ENOTSUPP;
+ ret = __led_set_brightness(led_cdev, led_cdev->delayed_set_value);
+ if (ret == -ENOTSUPP)
+ ret = __led_set_brightness_blocking(led_cdev,
+ led_cdev->delayed_set_value);
if (ret < 0 &&
/* LED HW might have been unplugged, therefore don't warn */
!(ret == -ENODEV && (led_cdev->flags & LED_UNREGISTERING) &&
@@ -236,10 +253,8 @@ void led_set_brightness_nopm(struct led_classdev *led_cdev,
enum led_brightness value)
{
/* Use brightness_set op if available, it is guaranteed not to sleep */
- if (led_cdev->brightness_set) {
- led_cdev->brightness_set(led_cdev, value);
+ if (!__led_set_brightness(led_cdev, value))
return;
- }
/* If brightness setting can sleep, delegate it to a work queue task */
led_cdev->delayed_set_value = value;
@@ -270,10 +285,7 @@ int led_set_brightness_sync(struct led_classdev *led_cdev,
if (led_cdev->flags & LED_SUSPENDED)
return 0;
- if (led_cdev->brightness_set_blocking)
- return led_cdev->brightness_set_blocking(led_cdev,
- led_cdev->brightness);
- return -ENOTSUPP;
+ return __led_set_brightness_blocking(led_cdev, led_cdev->brightness);
}
EXPORT_SYMBOL_GPL(led_set_brightness_sync);
--
2.7.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2] leds: core: add helpers for calling brightness_set(_blocking)
2016-02-16 19:21 [PATCH v2] leds: core: add helpers for calling brightness_set(_blocking) Heiner Kallweit
@ 2016-02-18 11:01 ` Jacek Anaszewski
0 siblings, 0 replies; 2+ messages in thread
From: Jacek Anaszewski @ 2016-02-18 11:01 UTC (permalink / raw)
To: Heiner Kallweit; +Cc: linux-leds
Hi Heiner,
On 02/16/2016 08:21 PM, Heiner Kallweit wrote:
> Add helpers for calling brightness_set(_blocking) allowing to
> simplify the code and make it better readable.
>
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> ---
> v2:
> - changed helper names
> ---
> drivers/leds/led-core.c | 40 ++++++++++++++++++++++++++--------------
> 1 file changed, 26 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
> index ad684b6..3495d5d 100644
> --- a/drivers/leds/led-core.c
> +++ b/drivers/leds/led-core.c
> @@ -25,6 +25,26 @@ EXPORT_SYMBOL_GPL(leds_list_lock);
> LIST_HEAD(leds_list);
> EXPORT_SYMBOL_GPL(leds_list);
>
> +static int __led_set_brightness(struct led_classdev *led_cdev,
> + enum led_brightness value)
> +{
> + if (!led_cdev->brightness_set)
> + return -ENOTSUPP;
> +
> + led_cdev->brightness_set(led_cdev, value);
> +
> + return 0;
> +}
> +
> +static int __led_set_brightness_blocking(struct led_classdev *led_cdev,
> + enum led_brightness value)
> +{
> + if (!led_cdev->brightness_set_blocking)
> + return -ENOTSUPP;
> +
> + return led_cdev->brightness_set_blocking(led_cdev, value);
> +}
> +
> static void led_timer_function(unsigned long data)
> {
> struct led_classdev *led_cdev = (void *)data;
> @@ -91,13 +111,10 @@ static void set_brightness_delayed(struct work_struct *ws)
> led_cdev->flags &= ~LED_BLINK_DISABLE;
> }
>
> - if (led_cdev->brightness_set)
> - led_cdev->brightness_set(led_cdev, led_cdev->delayed_set_value);
> - else if (led_cdev->brightness_set_blocking)
> - ret = led_cdev->brightness_set_blocking(led_cdev,
> - led_cdev->delayed_set_value);
> - else
> - ret = -ENOTSUPP;
> + ret = __led_set_brightness(led_cdev, led_cdev->delayed_set_value);
> + if (ret == -ENOTSUPP)
> + ret = __led_set_brightness_blocking(led_cdev,
> + led_cdev->delayed_set_value);
> if (ret < 0 &&
> /* LED HW might have been unplugged, therefore don't warn */
> !(ret == -ENODEV && (led_cdev->flags & LED_UNREGISTERING) &&
> @@ -236,10 +253,8 @@ void led_set_brightness_nopm(struct led_classdev *led_cdev,
> enum led_brightness value)
> {
> /* Use brightness_set op if available, it is guaranteed not to sleep */
> - if (led_cdev->brightness_set) {
> - led_cdev->brightness_set(led_cdev, value);
> + if (!__led_set_brightness(led_cdev, value))
> return;
> - }
>
> /* If brightness setting can sleep, delegate it to a work queue task */
> led_cdev->delayed_set_value = value;
> @@ -270,10 +285,7 @@ int led_set_brightness_sync(struct led_classdev *led_cdev,
> if (led_cdev->flags & LED_SUSPENDED)
> return 0;
>
> - if (led_cdev->brightness_set_blocking)
> - return led_cdev->brightness_set_blocking(led_cdev,
> - led_cdev->brightness);
> - return -ENOTSUPP;
> + return __led_set_brightness_blocking(led_cdev, led_cdev->brightness);
> }
> EXPORT_SYMBOL_GPL(led_set_brightness_sync);
>
>
Applied, thanks.
--
Best regards,
Jacek Anaszewski
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-02-18 11:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-16 19:21 [PATCH v2] leds: core: add helpers for calling brightness_set(_blocking) Heiner Kallweit
2016-02-18 11:01 ` Jacek Anaszewski
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.