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

Simon Glass sjg at google.com
Wed Aug 9 04:03:53 CEST 2023


Hi Alvaro,


On Fri, 4 Aug 2023 at 06:42, Alvaro Fernando García
<alvarofernandogarcia at gmail.com> wrote:
>
> Hello Simon,
>
> El vie, 4 ago 2023 a la(s) 00:02, Simon Glass (sjg at google.com) escribió:
>>
>> 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
>
>
> I built U-Boot on a Debian Bookworm container following these steps:
>
>> make distclean
>> make chromebook_speedy_defconfig
>> make -j8
>
>
> Container is using these gcc and linker versions:
>
>> # gcc --version
>> gcc (Debian 12.2.0-14) 12.2.0
>
>
>> # ld --version
>> GNU ld (GNU Binutils for Debian) 2.40
>
>
> The error I was getting before the patch is this one:
>
>> ld.bfd: error: /usr/lib/gcc/arm-linux-gnueabihf/12/libgcc.a(_udivmoddi4.o) uses VFP register arguments, u-boot does not
>> ld.bfd: warning: /usr/lib/gcc/arm-linux-gnueabihf/12/libgcc.a(_udivmoddi4.o) uses 4-byte wchar_t yet the output is to use 2-byte wchar_t; use of wchar_t values across objects may fail
>> ld.bfd: failed to merge target specific data of file /usr/lib/gcc/arm-linux-gnueabihf/12/libgcc.a(_udivmoddi4.o)
>> make: *** [Makefile:1764: u-boot] Error 1
>
>
> Please do tell me if there is any other information I can provide.

OK, thank you.

Regards,
Simon


More information about the U-Boot mailing list