summary refs log tree commit diff
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2021-07-01 10:27:52 +0200
committerThierry Reding <thierry.reding@gmail.com>2021-07-08 16:08:38 +0200
commitfe8255f80b8617bc67a58f4ca2b54b3b9b32ff84 (patch)
treeea66e146519fc85ec9169bbfc5c32d7166322a11
parent65e2e6c1c20104ed19060a38f4edbf14e9f9a9a5 (diff)
downloadlinux-fe8255f80b8617bc67a58f4ca2b54b3b9b32ff84.tar.gz
pwm: spear: Ensure configuring period and duty_cycle isn't wrongly skipped
As the last call to spear_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: 98761ce4b91b ("pwm: spear: Implement .apply() callback")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
-rw-r--r--drivers/pwm/pwm-spear.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/pwm/pwm-spear.c b/drivers/pwm/pwm-spear.c
index 48c31dac2f32..54c7990967dd 100644
--- a/drivers/pwm/pwm-spear.c
+++ b/drivers/pwm/pwm-spear.c
@@ -177,12 +177,9 @@ static int spear_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 		return 0;
 	}
 
-	if (state->period != pwm->state.period ||
-	    state->duty_cycle != pwm->state.duty_cycle) {
-		err = spear_pwm_config(chip, pwm, state->duty_cycle, state->period);
-		if (err)
-			return err;
-	}
+	err = spear_pwm_config(chip, pwm, state->duty_cycle, state->period);
+	if (err)
+		return err;
 
 	if (!pwm->state.enabled)
 		return spear_pwm_enable(chip, pwm);