Hi Uwe, On Fri, Dec 7, 2018 at 10:08 AM Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > On Fri, Dec 07, 2018 at 05:29:30PM +0900, Yoshihiro Shimoda wrote: > > This patch adds support for "atomic" API. Behavior is the same as > > when using legacy APIs. > > > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> > > --- > > drivers/pwm/pwm-rcar.c | 32 ++++++++++++++++++++++++++++++++ > > 1 file changed, 32 insertions(+) > > > > diff --git a/drivers/pwm/pwm-rcar.c b/drivers/pwm/pwm-rcar.c > > index 9cf4567..a5ea0f3 100644 > > --- a/drivers/pwm/pwm-rcar.c > > +++ b/drivers/pwm/pwm-rcar.c > > @@ -200,12 +200,44 @@ static void rcar_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm) > > rcar_pwm_update(rp, RCAR_PWMCR_EN0, 0, RCAR_PWMCR); > > } > > > > +static int rcar_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, > > + struct pwm_state *state) > > +{ > > + struct rcar_pwm_chip *rp = to_rcar_pwm_chip(chip); > > + int div, ret; > > + > > + div = rcar_pwm_get_clock_division(rp, state->period); > > + if (div < 0) > > + return div; > > + > > + rcar_pwm_update(rp, RCAR_PWMCR_SYNC, RCAR_PWMCR_SYNC, RCAR_PWMCR); > > + > > + rcar_pwm_calc_counter(rp, div, state->duty_cycle, state->period); > > + ret = rcar_pwm_set_counter(rp); > > + if (!ret) > > + rcar_pwm_set_clock_control(rp, div); > > + > > + /* The SYNC should be set to 0 even if rcar_pwm_set_counter failed */ > > + rcar_pwm_update(rp, RCAR_PWMCR_SYNC, 0, RCAR_PWMCR); > > + > > + if (!ret && state->enabled) > > + ret = rcar_pwm_enable(chip, pwm); > > + > > + if (!state->enabled) { > > + rcar_pwm_disable(chip, pwm); > > + ret = 0; > > + } > > + > > + return ret; > > state->polarity isn't used here which is a bug I think. > > Is the documentation for this hardware publically available? Please check Section 59 of the "User's Manual: Hardware" at https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/rz/rzg/rzg1m.html Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds