From: Uwe Kleine-König Date: Thu, 10 Jan 2019 19:33:53 +0000 (+0100) Subject: pwm: imx27: Only enable the clocks once in .get_state() X-Git-Tag: v5.1-rc1~38^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=519ef9b5f23c16dcb3a3a8a890baf7c084974730;p=thirdparty%2Flinux.git pwm: imx27: Only enable the clocks once in .get_state() 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 Signed-off-by: Thierry Reding --- diff --git a/drivers/pwm/pwm-imx27.c b/drivers/pwm/pwm-imx27.c index 55666cca4ceed..806130654211f 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)