[PATCH v2 1/1] k210: fix k210_pll_calc_config()

Sean Anderson seanga2 at gmail.com
Sun Oct 16 20:03:57 CEST 2022


On 10/16/22 12:12, Heinrich Schuchardt wrote:
> The k210 driver is selected by sandbox_defconfig.
> Building the sandbox on 32bit systems fails with:
> 
> test/dm/k210_pll.c: In function ‘dm_test_k210_pll_calc_config’:
> include/linux/bitops.h:11:38: warning:
> left shift count >= width of type [-Wshift-count-overflow]
>     11 | #define BIT(nr)         (1UL << (nr))
>        |                              ^~
> test/dm/k210_pll.c:36:54: note: in expansion of macro ‘BIT’
>     36 |                         error = abs((error - BIT(32))) >> 16;
>        |                                              ^~~
> 
> Use the BIT_ULL() macro to create a u64 value.
> Replace abs() by abs64() to get correct results on 32bit system
> Apply the same for the unit test.
> 
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> v2:
> 	use abs64()
> 	fix unit test too
> ---
>   drivers/clk/clk_k210.c | 2 +-
>   test/dm/k210_pll.c     | 2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/clk/clk_k210.c b/drivers/clk/clk_k210.c
> index 1961efaa5e..f7d36963f8 100644
> --- a/drivers/clk/clk_k210.c
> +++ b/drivers/clk/clk_k210.c
> @@ -846,7 +846,7 @@ again:
>   
>   		error = DIV_ROUND_CLOSEST_ULL(f * inv_ratio, r * od);
>   		/* The lower 16 bits are spurious */
> -		error = abs((error - BIT(32))) >> 16;
> +		error = abs64((error - BIT_ULL(32))) >> 16;
>   
>   		if (error < best_error) {
>   			best->r = r;
> diff --git a/test/dm/k210_pll.c b/test/dm/k210_pll.c
> index a0cc84c396..857b72a12a 100644
> --- a/test/dm/k210_pll.c
> +++ b/test/dm/k210_pll.c
> @@ -33,7 +33,7 @@ static int dm_test_k210_pll_calc_config(u32 rate, u32 rate_in,
>   				error = DIV_ROUND_CLOSEST_ULL(f * inv_ratio,
>   							      r * od);
>   				/* The lower 16 bits are spurious */
> -				error = abs((error - BIT(32))) >> 16;
> +				error = abs64((error - BIT_ULL(32))) >> 16;
>   				if (error < best_error) {
>   					best->r = r;
>   					best->f = f;

Reviewed-by: Sean Anderson <seanga2 at gmail.com>


More information about the U-Boot mailing list