[PATCH 1/1] video: avoid build failure on veyron board

Simon Glass sjg at google.com
Fri Aug 4 05:02:20 CEST 2023


Hi,

On Thu, 3 Aug 2023 at 18:37, Alvaro Fernando García
<alvarofernandogarcia at gmail.com> wrote:
>
> 533ad9dc avoided an overflow but causes compilation
> failure on 32bit boards (eg. veyron speedy)
>
> this commit uses div_u64 which has a fallback codepath
> for 32bit platforms
>
> Signed-off-by: Alvaro Fernando García <alvarofernandogarcia at gmail.com>
> ---
>
>  drivers/video/pwm_backlight.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)

Tested-by: Simon Glass <sjg at chromium.org>  # chromebook_jerry

Can you please advise which toolchain you are using and what the
warning actually says? I don't see this on my board.

>
> diff --git a/drivers/video/pwm_backlight.c b/drivers/video/pwm_backlight.c
> index 46c16a8f44..aa0e292866 100644
> --- a/drivers/video/pwm_backlight.c
> +++ b/drivers/video/pwm_backlight.c
> @@ -14,6 +14,7 @@
>  #include <pwm.h>
>  #include <asm/gpio.h>
>  #include <linux/delay.h>
> +#include <linux/math64.h>
>  #include <power/regulator.h>
>
>  /**
> @@ -59,12 +60,14 @@ struct pwm_backlight_priv {
>
>  static int set_pwm(struct pwm_backlight_priv *priv)
>  {
> +       u64 width;
>         uint duty_cycle;
>         int ret;
>
>         if (priv->period_ns) {
> -               duty_cycle = (u64)priv->period_ns * (priv->cur_level - priv->min_level) /
> -                       (priv->max_level - priv->min_level);
> +               width = priv->period_ns * (priv->cur_level - priv->min_level);
> +               duty_cycle = div_u64(width,
> +                                    (priv->max_level - priv->min_level));
>                 ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns,
>                                      duty_cycle);
>         } else {
> --
> 2.41.0
>

Regards,
Simon


More information about the U-Boot mailing list