k210 is 64bit but the driver and tests are also built in sandbox, and
that can be built 32bit.

BIT(32) does not work on 32bit, shift before subtraction to fit into
32bit integer with BIT values.

Signed-off-by: Michal Suchanek <msucha...@suse.de>
---

 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..e85f8ae14a 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 = abs((error >> 16) - BIT(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..622b1c9bef 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 = abs((error >> 16) - BIT(32 - 16));
                                if (error < best_error) {
                                        best->r = r;
                                        best->f = f;
-- 
2.37.3

Reply via email to