From: Lad Prabhakar <[email protected]>

Replace the older FIELD_GET-wrapping helper macros with plain GENMASK
definitions for the PLL CLK1/CLK2 field masks (CPG_PLL_CLK1_KDIV,
CPG_PLL_CLK1_MDIV, CPG_PLL_CLK1_PDIV and CPG_PLL_CLK2_SDIV). Update
rzv2h_cpg_pll_clk_recalc_rate() to explicitly extract those fields with
FIELD_GET and cast the KDIV extraction to s16 to ensure proper sign
extension when computing the PLL output rate.

Co-developed-by: Fabrizio Castro <[email protected]>
Signed-off-by: Fabrizio Castro <[email protected]>
Signed-off-by: Lad Prabhakar <[email protected]>
Acked-by: Tomi Valkeinen <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
---
v10->v11:
- New patch, split up from patch 3/7
- Added Acked-by tag from Tomi
- Added Reviewed-by tag from Geert
---
 drivers/clk/renesas/rzv2h-cpg.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/clk/renesas/rzv2h-cpg.c b/drivers/clk/renesas/rzv2h-cpg.c
index ff688dc88ba3..9c4c5dfd5593 100644
--- a/drivers/clk/renesas/rzv2h-cpg.c
+++ b/drivers/clk/renesas/rzv2h-cpg.c
@@ -49,11 +49,11 @@
 #define CPG_PLL_STBY_RESETB    BIT(0)
 #define CPG_PLL_STBY_RESETB_WEN        BIT(16)
 #define CPG_PLL_CLK1(x)                ((x) + 0x004)
-#define CPG_PLL_CLK1_KDIV(x)   ((s16)FIELD_GET(GENMASK(31, 16), (x)))
-#define CPG_PLL_CLK1_MDIV(x)   FIELD_GET(GENMASK(15, 6), (x))
-#define CPG_PLL_CLK1_PDIV(x)   FIELD_GET(GENMASK(5, 0), (x))
+#define CPG_PLL_CLK1_KDIV      GENMASK(31, 16)
+#define CPG_PLL_CLK1_MDIV      GENMASK(15, 6)
+#define CPG_PLL_CLK1_PDIV      GENMASK(5, 0)
 #define CPG_PLL_CLK2(x)                ((x) + 0x008)
-#define CPG_PLL_CLK2_SDIV(x)   FIELD_GET(GENMASK(2, 0), (x))
+#define CPG_PLL_CLK2_SDIV      GENMASK(2, 0)
 #define CPG_PLL_MON(x)         ((x) + 0x010)
 #define CPG_PLL_MON_RESETB     BIT(0)
 #define CPG_PLL_MON_LOCK       BIT(4)
@@ -231,10 +231,11 @@ static unsigned long rzv2h_cpg_pll_clk_recalc_rate(struct 
clk_hw *hw,
        clk1 = readl(priv->base + CPG_PLL_CLK1(pll.offset));
        clk2 = readl(priv->base + CPG_PLL_CLK2(pll.offset));
 
-       rate = mul_u64_u32_shr(parent_rate, (CPG_PLL_CLK1_MDIV(clk1) << 16) +
-                              CPG_PLL_CLK1_KDIV(clk1), 16 + 
CPG_PLL_CLK2_SDIV(clk2));
+       rate = mul_u64_u32_shr(parent_rate, (FIELD_GET(CPG_PLL_CLK1_MDIV, clk1) 
<< 16) +
+                              (s16)FIELD_GET(CPG_PLL_CLK1_KDIV, clk1),
+                              16 + FIELD_GET(CPG_PLL_CLK2_SDIV, clk2));
 
-       return DIV_ROUND_CLOSEST_ULL(rate, CPG_PLL_CLK1_PDIV(clk1));
+       return DIV_ROUND_CLOSEST_ULL(rate, FIELD_GET(CPG_PLL_CLK1_PDIV, clk1));
 }
 
 static const struct clk_ops rzv2h_cpg_pll_ops = {
-- 
2.43.0

Reply via email to