diff mbox series

[v4] leds: pwm-multicolor: Disable PWM when going to suspend

Message ID 20241216213754.18374-2-jakob+lkml@paranoidlabs.org
State New
Headers show
Series [v4] leds: pwm-multicolor: Disable PWM when going to suspend | expand

Commit Message

Jakob Riepler Dec. 16, 2024, 9:37 p.m. UTC
This fixes suspend on platforms like stm32mp1xx, where the PWM consumer
has to be disabled for the PWM to enter suspend.
Another positive side effect is that active-low LEDs now properly
turn off instead of going back to full brightness when they are set to 0.

Link: https://lore.kernel.org/all/20240417153846.271751-2-u.kleine-koenig@pengutronix.de/
Signed-off-by: Jakob Riepler <jakob+lkml@paranoidlabs.org>
Acked-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
Changes in v2:
 - fix wrong line-breaks in patch
Changes in v3:
 - use git send-email
Changes in v4:
 - use correct address in s-o-b

 drivers/leds/rgb/leds-pwm-multicolor.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Uwe Kleine-König Dec. 17, 2024, 8:55 a.m. UTC | #1
On Mon, Dec 16, 2024 at 10:37:55PM +0100, Jakob Riepler wrote:
> This fixes suspend on platforms like stm32mp1xx, where the PWM consumer
> has to be disabled for the PWM to enter suspend.
> Another positive side effect is that active-low LEDs now properly
> turn off instead of going back to full brightness when they are set to 0.
> 
> Link: https://lore.kernel.org/all/20240417153846.271751-2-u.kleine-koenig@pengutronix.de/
> Signed-off-by: Jakob Riepler <jakob+lkml@paranoidlabs.org>
> Acked-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>

Now there are just nitpicks left:

 - Your S-o-b usually comes last.

 - The encoding of your mail is strange. It claims 8bit us-ascii which
   doesn't make sense. Depending on the mail reader and its locale my
   name might show as Uwe Kleine-K��nig. See also
   https://lore.kernel.org/all/20241216213754.18374-2-jakob+lkml@paranoidlabs.org/
   which says "Warning: decoded text below may be mangled, UTF-8
   assumed".

Many maintainers don't care about the first item and if Lee has a sane
environment my name makes it correctly into the git history. So from my
side that's no reason for a v5, but for future patches it would be great
to improve here.

Best regards
Uwe
diff mbox series

Patch

diff --git a/drivers/leds/rgb/leds-pwm-multicolor.c b/drivers/leds/rgb/leds-pwm-multicolor.c
index e1a81e0109e8..f80a06cc31f8 100644
--- a/drivers/leds/rgb/leds-pwm-multicolor.c
+++ b/drivers/leds/rgb/leds-pwm-multicolor.c
@@ -50,7 +50,13 @@  static int led_pwm_mc_set(struct led_classdev *cdev,
 			duty = priv->leds[i].state.period - duty;
 
 		priv->leds[i].state.duty_cycle = duty;
-		priv->leds[i].state.enabled = duty > 0;
+		/*
+		 * Disabling a PWM doesn't guarantee that it emits the inactive level.
+		 * So keep it on. Only for suspending the PWM should be disabled because
+		 * otherwise it refuses to suspend. The possible downside is that the
+		 * LED might stay (or even go) on.
+		 */
+		priv->leds[i].state.enabled = !(cdev->flags & LED_SUSPENDED);
 		ret = pwm_apply_might_sleep(priv->leds[i].pwm,
 					    &priv->leds[i].state);
 		if (ret)