Re: [PATCH 1/3] clk: tegra: refactor 7.1 div calculation

From: Stephen Boyd
Date: Fri Jul 06 2018 - 13:10:14 EST


Quoting Aapo Vienamo (2018-07-04 00:51:48)
> On Tue, 3 Jul 2018 11:10:21 -0400
> Peter Geis <pgwipeout@xxxxxxxxx> wrote:
>
> > Good Morning,
> >
> > Just a heads up.
> > During compilation with your patches, I get the following warning:
> >
> > In file included from ./arch/arm/include/asm/div64.h:127:0,
> > from ./include/linux/kernel.h:174,
> > from drivers/clk/tegra/div71.c:17:
> > drivers/clk/tegra/div71.c: In function âdiv71_getâ:
> > ./include/asm-generic/div64.h:222:28: warning: comparison of distinct
> > pointer types lacks a cast
> > (void)(((typeof((n)) *)0) == ((uint64_t *)0)); \
> > ^
> > drivers/clk/tegra/div71.c:40:2: note: in expansion of macro âdo_divâ
> > do_div(divider_ux1, rate);
> > ^~~~~~
> >
> > Very Respectfully,
> > Peter Geis
> >
>
> That's indeed true. Looks like this warning is produced only on 32-bit
> arm as it uses a different variant of the do_div macro than arm64.
>

divider_ux1 is an s64, but the generic do_div() macro is checking to
make sure that's compatible with a u64, and it isn't. Maybe you should
use a function like div64_long()?