2020-12-29 14:28:57

by Dylan Van Assche

[permalink] [raw]
Subject: [PATCH v2] leds: gpio: Set max brightness to 1

GPIO LEDs only know 2 states: ON or OFF and do not have PWM capabilities.
However, the max brightness is reported as 255.

This patch sets the max brightness value of a GPIO controlled LED to 1.

Tested on my PinePhone 1.2.

Signed-off-by: Dylan Van Assche <[email protected]>
---
v2 drops an obsolete change in include/linux/leds.h

drivers/leds/leds-gpio.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
index 93f5b1b60fde..0d66f19d71ba 100644
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
@@ -96,7 +96,8 @@ static int create_gpio_led(const struct gpio_led *template,
} else {
state = (template->default_state == LEDS_GPIO_DEFSTATE_ON);
}
- led_dat->cdev.brightness = state ? LED_FULL : LED_OFF;
+ led_dat->cdev.brightness = state ? LED_ON : LED_OFF;
+ led_dat->cdev.max_brightness = LED_ON;
if (!template->retain_state_suspended)
led_dat->cdev.flags |= LED_CORE_SUSPENDRESUME;
if (template->panic_indicator)
--
2.26.2


2020-12-29 16:08:22

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH v2] leds: gpio: Set max brightness to 1

Hi!

> GPIO LEDs only know 2 states: ON or OFF and do not have PWM capabilities.
> However, the max brightness is reported as 255.
>
> This patch sets the max brightness value of a GPIO controlled LED to 1.
>
> Tested on my PinePhone 1.2.
>
> Signed-off-by: Dylan Van Assche <[email protected]>
> ---
> v2 drops an obsolete change in include/linux/leds.h

I thought that one looked odd.

> +++ b/drivers/leds/leds-gpio.c
> @@ -96,7 +96,8 @@ static int create_gpio_led(const struct gpio_led *template,
> } else {
> state = (template->default_state == LEDS_GPIO_DEFSTATE_ON);
> }
> - led_dat->cdev.brightness = state ? LED_FULL : LED_OFF;
> + led_dat->cdev.brightness = state ? LED_ON : LED_OFF;
> + led_dat->cdev.max_brightness = LED_ON;

Would simpler version work:

> + led_dat->cdev.brightness = state;
> + led_dat->cdev.max_brightness = 1;

? Easier to understand... I'd prefer that version unless it causes
warnings or something.

Pavel
--
http://www.livejournal.com/~pavelmachek


Attachments:
(No filename) (1.02 kB)
signature.asc (201.00 B)
Download all attachments

2020-12-29 18:12:27

by Dylan Van Assche

[permalink] [raw]
Subject: Re: [PATCH v2] leds: gpio: Set max brightness to 1

Hi!

Thanks for the feedback!
Indeed, this can be even more simplified with your suggestion.
I will send a new version of the patch soon.

Happy holidays!

Kind regards,
Dylan Van Assche

On Tue, 2020-12-29 at 17:04 +0100, Pavel Machek wrote:
> Hi!
>
> > GPIO LEDs only know 2 states: ON or OFF and do not have PWM
> > capabilities.
> > However, the max brightness is reported as 255.
> >
> > This patch sets the max brightness value of a GPIO controlled LED
> > to 1.
> >
> > Tested on my PinePhone 1.2.
> >
> > Signed-off-by: Dylan Van Assche <[email protected]>
> > ---
> > v2 drops an obsolete change in include/linux/leds.h
>
> I thought that one looked odd.
>
> > +++ b/drivers/leds/leds-gpio.c
> > @@ -96,7 +96,8 @@ static int create_gpio_led(const struct gpio_led
> > *template,
> > } else {
> > state = (template->default_state ==
> > LEDS_GPIO_DEFSTATE_ON);
> > }
> > - led_dat->cdev.brightness = state ? LED_FULL : LED_OFF;
> > + led_dat->cdev.brightness = state ? LED_ON : LED_OFF;
> > + led_dat->cdev.max_brightness = LED_ON;
>
> Would simpler version work:
>
> > + led_dat->cdev.brightness = state;
> > + led_dat->cdev.max_brightness = 1;
>
> ? Easier to understand... I'd prefer that version unless it causes
> warnings or something.
>
> Pavel