diff options
author | Miquel Raynal <miquel.raynal@bootlin.com> | 2024-09-10 11:13:59 +0200 |
---|---|---|
committer | Fabio Estevam <festevam@gmail.com> | 2024-09-11 17:02:36 -0300 |
commit | 5748aa1e372d2db3db6bf3e863f4571bf2ffedb9 (patch) | |
tree | b7824d825095d0259d01fe807fa4fb16e45d9a75 | |
parent | 4aea3110aba9238fbcb6c4a5273abce4cb176691 (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.c | 5 |
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); |