[PATCH 5/5] pwm: atmel-tcb: Don't track polarity in driver data
claudiu beznea
claudiu.beznea at tuxon.dev
Wed Jul 26 22:59:29 PDT 2023
On 19.07.2023 22:20, Uwe Kleine-König wrote:
> struct atmel_tcb_pwm_device::polarity is only used in atmel_tcb_pwm_enable
> and atmel_tcb_pwm_disable(). These functions are only called by
> atmel_tcb_pwm_apply() after the member variable was assigned to
> state->polarity. So the value assigned in atmel_tcb_pwm_request() is
> never used and the member can be dropped from struct atmel_tcb_pwm_device.
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
Reviewed-by: Claudiu Beznea <claudiu.beznea at tuxon.dev>
> ---
> drivers/pwm/pwm-atmel-tcb.c | 18 ++++++------------
> 1 file changed, 6 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/pwm/pwm-atmel-tcb.c b/drivers/pwm/pwm-atmel-tcb.c
> index 32a60d7f8ed2..30c966238e41 100644
> --- a/drivers/pwm/pwm-atmel-tcb.c
> +++ b/drivers/pwm/pwm-atmel-tcb.c
> @@ -34,7 +34,6 @@
> ATMEL_TC_BEEVT | ATMEL_TC_BSWTRG)
>
> struct atmel_tcb_pwm_device {
> - enum pwm_polarity polarity; /* PWM polarity */
> unsigned div; /* PWM clock divider */
> unsigned duty; /* PWM duty expressed in clk cycles */
> unsigned period; /* PWM period expressed in clk cycles */
> @@ -80,7 +79,6 @@ static int atmel_tcb_pwm_request(struct pwm_chip *chip,
> if (ret)
> return ret;
>
> - tcbpwm->polarity = PWM_POLARITY_NORMAL;
> tcbpwm->duty = 0;
> tcbpwm->period = 0;
> tcbpwm->div = 0;
> @@ -123,12 +121,12 @@ static void atmel_tcb_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
> clk_disable_unprepare(tcbpwmc->clk);
> }
>
> -static void atmel_tcb_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
> +static void atmel_tcb_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm,
> + enum pwm_polarity polarity)
> {
> struct atmel_tcb_pwm_chip *tcbpwmc = to_tcb_chip(chip);
> struct atmel_tcb_pwm_device *tcbpwm = &tcbpwmc->pwms[pwm->hwpwm];
> unsigned cmr;
> - enum pwm_polarity polarity = tcbpwm->polarity;
>
> /*
> * If duty is 0 the timer will be stopped and we have to
> @@ -180,12 +178,12 @@ static void atmel_tcb_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
> spin_unlock(&tcbpwmc->lock);
> }
>
> -static int atmel_tcb_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
> +static int atmel_tcb_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm,
> + enum pwm_polarity polarity)
> {
> struct atmel_tcb_pwm_chip *tcbpwmc = to_tcb_chip(chip);
> struct atmel_tcb_pwm_device *tcbpwm = &tcbpwmc->pwms[pwm->hwpwm];
> u32 cmr;
> - enum pwm_polarity polarity = tcbpwm->polarity;
>
> /*
> * If duty is 0 the timer will be stopped and we have to
> @@ -345,15 +343,11 @@ static int atmel_tcb_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
> static int atmel_tcb_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
> const struct pwm_state *state)
> {
> - struct atmel_tcb_pwm_chip *tcbpwmc = to_tcb_chip(chip);
> - struct atmel_tcb_pwm_device *tcbpwm = &tcbpwmc->pwms[pwm->hwpwm];
> int duty_cycle, period;
> int ret;
>
> - tcbpwm->polarity = state->polarity;
> -
> if (!state->enabled) {
> - atmel_tcb_pwm_disable(chip, pwm);
> + atmel_tcb_pwm_disable(chip, pwm, state->polarity);
> return 0;
> }
>
> @@ -364,7 +358,7 @@ static int atmel_tcb_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
> if (ret)
> return ret;
>
> - return atmel_tcb_pwm_enable(chip, pwm);
> + return atmel_tcb_pwm_enable(chip, pwm, state->polarity);
> }
>
> static const struct pwm_ops atmel_tcb_pwm_ops = {
More information about the linux-arm-kernel
mailing list