pwm: imx-tpm: force 'real_period' to be zero in suspend
authorFancy Fang <chen.fang@nxp.com>
Fri, 5 May 2023 06:58:39 +0000 (14:58 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Jul 2023 14:21:59 +0000 (16:21 +0200)
[ Upstream commit 661dfb7f46298e53f6c3deaa772fa527aae86193 ]

During suspend, all the tpm registers will lose values.
So the 'real_period' value of struct 'imx_tpm_pwm_chip'
should be forced to be zero to force the period update
code can be executed after system resume back.

Signed-off-by: Fancy Fang <chen.fang@nxp.com>
Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Fixes: 738a1cfec2ed ("pwm: Add i.MX TPM PWM driver support")
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/pwm/pwm-imx-tpm.c

index ed1aad9..318dc0b 100644 (file)
@@ -399,6 +399,13 @@ static int __maybe_unused pwm_imx_tpm_suspend(struct device *dev)
        if (tpm->enable_count > 0)
                return -EBUSY;
 
+       /*
+        * Force 'real_period' to be zero to force period update code
+        * can be executed after system resume back, since suspend causes
+        * the period related registers to become their reset values.
+        */
+       tpm->real_period = 0;
+
        clk_disable_unprepare(tpm->clk);
 
        return 0;