| From: Vignesh R <vigneshr@ti.com> |
| Date: Mon, 11 Jun 2018 11:39:56 +0530 |
| Subject: pwm: tiehrpwm: Fix disabling of output of PWMs |
| |
| commit 38dabd91ff0bde33352ca3cc65ef515599b77a05 upstream. |
| |
| pwm-tiehrpwm driver disables PWM output by putting it in low output |
| state via active AQCSFRC register in ehrpwm_pwm_disable(). But, the |
| AQCSFRC shadow register is not updated. Therefore, when shadow AQCSFRC |
| register is re-enabled in ehrpwm_pwm_enable() (say to enable second PWM |
| output), previous settings are lost as shadow register value is loaded |
| into active register. This results in things like PWMA getting enabled |
| automatically, when PWMB is enabled and vice versa. Fix this by |
| updating AQCSFRC shadow register as well during ehrpwm_pwm_disable(). |
| |
| Fixes: 19891b20e7c2 ("pwm: pwm-tiehrpwm: PWM driver support for EHRPWM") |
| Signed-off-by: Vignesh R <vigneshr@ti.com> |
| Signed-off-by: Thierry Reding <thierry.reding@gmail.com> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/pwm/pwm-tiehrpwm.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/pwm/pwm-tiehrpwm.c |
| +++ b/drivers/pwm/pwm-tiehrpwm.c |
| @@ -378,6 +378,8 @@ static void ehrpwm_pwm_disable(struct pw |
| aqcsfrc_mask = AQCSFRC_CSFA_MASK; |
| } |
| |
| + /* Update shadow register first before modifying active register */ |
| + ehrpwm_modify(pc->mmio_base, AQCSFRC, aqcsfrc_mask, aqcsfrc_val); |
| /* |
| * Changes to immediate action on Action Qualifier. This puts |
| * Action Qualifier control on PWM output from next TBCLK |