pwm: imx27: only enable the clocks once in .get_state

Message ID 20190110193353.20767-1-u.kleine-koenig@pengutronix.de
State Accepted
Headers show
Series
  • pwm: imx27: only enable the clocks once in .get_state
Related show

Commit Message

Uwe Kleine-König Jan. 10, 2019, 7:33 p.m.
Currently the function pwm_imx27_get_state() of enables the clocks once
unconditionally at the start, a second time if the PWM is enabled and
disables unconditionally at the end.

Simplify that to enable once at the start and disable conditionally at
the end.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/pwm/pwm-imx27.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

Comments

Thierry Reding March 4, 2019, 11:23 a.m. | #1
On Thu, Jan 10, 2019 at 08:33:53PM +0100, Uwe Kleine-König wrote:
> Currently the function pwm_imx27_get_state() of enables the clocks once
> unconditionally at the start, a second time if the PWM is enabled and
> disables unconditionally at the end.
> 
> Simplify that to enable once at the start and disable conditionally at
> the end.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
>  drivers/pwm/pwm-imx27.c | 11 ++++-------
>  1 file changed, 4 insertions(+), 7 deletions(-)

Applied, thanks.

Thierry

Patch

diff --git a/drivers/pwm/pwm-imx27.c b/drivers/pwm/pwm-imx27.c
index 8997c4c1bd03..4dc2d62c0e1c 100644
--- a/drivers/pwm/pwm-imx27.c
+++ b/drivers/pwm/pwm-imx27.c
@@ -125,14 +125,10 @@  static void pwm_imx27_get_state(struct pwm_chip *chip,
 
 	val = readl(imx->mmio_base + MX3_PWMCR);
 
-	if (val & MX3_PWMCR_EN) {
+	if (val & MX3_PWMCR_EN)
 		state->enabled = true;
-		ret = pwm_imx27_clk_prepare_enable(chip);
-		if (ret)
-			return;
-	} else {
+	else
 		state->enabled = false;
-	}
 
 	switch (FIELD_GET(MX3_PWMCR_POUTC, val)) {
 	case MX3_PWMCR_POUTC_NORMAL:
@@ -164,7 +160,8 @@  static void pwm_imx27_get_state(struct pwm_chip *chip,
 		state->duty_cycle = 0;
 	}
 
-	pwm_imx27_clk_disable_unprepare(chip);
+	if (!state->enabled)
+		pwm_imx27_clk_disable_unprepare(chip);
 }
 
 static void pwm_imx27_sw_reset(struct pwm_chip *chip)