pwm: atmel-hlcdc: Fix clock imbalance related to suspend support
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Fri, 26 Jan 2024 12:04:33 +0000 (13:04 +0100)
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Sun, 4 Feb 2024 12:53:57 +0000 (13:53 +0100)
The suspend callback disables the periph clock when the PWM is enabled
and resume reenables this clock if the PWM was disabled before. Judging
from the code comment it's suspend that is wrong here. Fix accordingly.

Fixes: f9bb9da7c09d ("pwm: atmel-hlcdc: Implement the suspend/resume hooks")
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
Link: https://lore.kernel.org/r/b51ea92b0a45eff3dc83b08adefd43d930df996c.1706269232.git.u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
drivers/pwm/pwm-atmel-hlcdc.c

index 3f2c5031a3ba85fd756f02a17b63739fd4575256..1f6fc9a9fcf3ece292a530005388965e749afe9f 100644 (file)
@@ -185,7 +185,7 @@ static int atmel_hlcdc_pwm_suspend(struct device *dev)
        struct atmel_hlcdc_pwm *atmel = dev_get_drvdata(dev);
 
        /* Keep the periph clock enabled if the PWM is still running. */
-       if (pwm_is_enabled(&atmel->chip.pwms[0]))
+       if (!pwm_is_enabled(&atmel->chip.pwms[0]))
                clk_disable_unprepare(atmel->hlcdc->periph_clk);
 
        return 0;