diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2021-07-01 10:27:51 +0200 |
---|---|---|
committer | Thierry Reding <thierry.reding@gmail.com> | 2021-07-08 16:08:08 +0200 |
commit | 65e2e6c1c20104ed19060a38f4edbf14e9f9a9a5 (patch) | |
tree | 750714da2ed2d93f68530f7787c98a8811cfb0c8 /drivers/pwm/pwm-sprd.c | |
parent | bebedf2bb4a9e0cb4ffa72cbc960728051b338a4 (diff) | |
download | linux-stable-65e2e6c1c20104ed19060a38f4edbf14e9f9a9a5.tar.gz linux-stable-65e2e6c1c20104ed19060a38f4edbf14e9f9a9a5.tar.bz2 linux-stable-65e2e6c1c20104ed19060a38f4edbf14e9f9a9a5.zip |
pwm: sprd: Ensure configuring period and duty_cycle isn't wrongly skipped
As the last call to sprd_pwm_apply() might have exited early if
state->enabled was false, the values for period and duty_cycle stored in
pwm->state might not have been written to hardware and it must be
ensured that they are configured before enabling the PWM.
Fixes: 8aae4b02e8a6 ("pwm: sprd: Add Spreadtrum PWM support")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Diffstat (limited to 'drivers/pwm/pwm-sprd.c')
-rw-r--r-- | drivers/pwm/pwm-sprd.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/pwm/pwm-sprd.c b/drivers/pwm/pwm-sprd.c index f2a85e8dd941..7004f55bbf11 100644 --- a/drivers/pwm/pwm-sprd.c +++ b/drivers/pwm/pwm-sprd.c @@ -183,13 +183,10 @@ static int sprd_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, } } - if (state->period != cstate->period || - state->duty_cycle != cstate->duty_cycle) { - ret = sprd_pwm_config(spc, pwm, state->duty_cycle, - state->period); - if (ret) - return ret; - } + ret = sprd_pwm_config(spc, pwm, state->duty_cycle, + state->period); + if (ret) + return ret; sprd_pwm_write(spc, pwm->hwpwm, SPRD_PWM_ENABLE, 1); } else if (cstate->enabled) { |