Em ter., 2 de nov. de 2021 às 05:39, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> escreveu: > > Hi Maíra, > > On Sat, Oct 30, 2021 at 3:35 PM Maíra Canal <maira.canal@xxxxxx> wrote: > > Remove legacy PWM interface (pwm_config, pwm_enable, pwm_disable) and > > replace it for the atomic PWM API. > > > > Signed-off-by: Maíra Canal <maira.canal@xxxxxx> > > Thanks for your patch! > > > --- a/drivers/video/backlight/lp855x_bl.c > > +++ b/drivers/video/backlight/lp855x_bl.c > > @@ -233,9 +233,8 @@ static int lp855x_configure(struct lp855x *lp) > > > > static void lp855x_pwm_ctrl(struct lp855x *lp, int br, int max_br) > > { > > - unsigned int period = lp->pdata->period_ns; > > - unsigned int duty = br * period / max_br; > > - struct pwm_device *pwm; > > + struct pwm_device *pwm = NULL; > > + struct pwm_state state; > > > > /* request pwm device with the consumer name */ > > if (!lp->pwm) { > > @@ -245,18 +244,16 @@ static void lp855x_pwm_ctrl(struct lp855x *lp, int br, int max_br) > > > > lp->pwm = pwm; > > > > - /* > > - * FIXME: pwm_apply_args() should be removed when switching to > > - * the atomic PWM API. > > - */ > > - pwm_apply_args(pwm); > > + pwm_init_state(lp->pwm, &state); > > + state.period = lp->pdata->period_ns; > > } > > > > - pwm_config(lp->pwm, duty, period); > > - if (duty) > > - pwm_enable(lp->pwm); > > - else > > - pwm_disable(lp->pwm); > > + pwm_get_state(lp->pwm, &state); > > + > > + state.duty_cycle = br * state.period / max_br; > > Above is a 64-by-32 division, which should not be open-coded, as > that will cause link failures on 32-bit platform (cfr. "undefined > reference to `__udivdi3'", as reported by the kernel test robot). > Please use div_u64() instead. Hi Geert, Thank you for the suggestion! I fixed this problem a bit differently and submitted the v4. I made use of the PWM API and applied the pwm_set_relative_duty_cycle function, which solved this division problem. > > > + state.enabled = state.duty_cycle; > > + > > + pwm_apply_state(lp->pwm, &state); > > } > > > > static int lp855x_bl_update_status(struct backlight_device *bl) > > 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