summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Raynal <miquel.raynal@bootlin.com>2024-09-10 11:13:59 +0200
committerFabio Estevam <festevam@gmail.com>2024-09-11 17:02:36 -0300
commit5748aa1e372d2db3db6bf3e863f4571bf2ffedb9 (patch)
treeb7824d825095d0259d01fe807fa4fb16e45d9a75
parent4aea3110aba9238fbcb6c4a5273abce4cb176691 (diff)
pwm: imx: Don't drop the enable bit once set
Changing the duty-cycle should not blindly override (and clear) the enable (EN) bit if it has already been set. For instance, a PWM backlight can be enabled and set to a specific intensity using two operations. The order of these operations should not matter. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Fabio Estevam <festevam@gmail.com>
-rw-r--r--drivers/pwm/pwm-imx.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c
index 320ea7c4239..bb37b39fa0e 100644
--- a/drivers/pwm/pwm-imx.c
+++ b/drivers/pwm/pwm-imx.c
@@ -20,10 +20,11 @@ int pwm_config_internal(struct pwm_regs *pwm, unsigned long period_cycles,
u32 cr;
writel(0, &pwm->ir);
- cr = PWMCR_PRESCALER(prescale) |
+
+ cr = readl(&pwm->cr) & PWMCR_EN;
+ cr |= PWMCR_PRESCALER(prescale) |
PWMCR_DOZEEN | PWMCR_WAITEN |
PWMCR_DBGEN | PWMCR_CLKSRC_IPG_HIGH;
-
writel(cr, &pwm->cr);
/* set duty cycles */
writel(duty_cycles, &pwm->sar);