public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] leds: pwm-multicolor: Disable PWM when going to suspend
@ 2024-12-02  9:33 Jakob Riepler
  2024-12-02 12:07 ` [PATCH v2] " Jakob Riepler
  0 siblings, 1 reply; 10+ messages in thread
From: Jakob Riepler @ 2024-12-02  9:33 UTC (permalink / raw)
  To: Pavel Machek, Lee Jones; +Cc: linux-leds, linux-kernel, Uwe Kleine-König

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@chaosfield.at>
---
  drivers/leds/rgb/leds-pwm-multicolor.c | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)

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)
-- 
2.47.0


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

end of thread, other threads:[~2024-12-17 15:05 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-02  9:33 [PATCH] leds: pwm-multicolor: Disable PWM when going to suspend Jakob Riepler
2024-12-02 12:07 ` [PATCH v2] " Jakob Riepler
2024-12-12 17:43   ` Lee Jones
2024-12-12 23:07     ` Jakob Riepler
2024-12-13 16:34       ` Lee Jones
2024-12-13 19:10         ` [PATCH v3] " Jakob Riepler
2024-12-13 23:11           ` Uwe Kleine-König
2024-12-16  9:49             ` Lee Jones
2024-12-12 20:58   ` [PATCH v2] " Uwe Kleine-König
2024-12-17 15:05   ` (subset) " Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox