The RK3568 PMU PLL helpers lookup the PMU CRU udevice before accessing
PMU PLL regs. This may trigger a full PMU clock driver probe to get the
PMU CRU base address from the clock driver private data, something that
can take several ms.

Change to use the RK3568 specific PMU CRU base address consant directly
to simplify and remove the unneeded complexity of using runtime lookup
in SoC specific code.

Signed-off-by: Jonas Karlman <[email protected]>
---
 drivers/clk/rockchip/clk_rk3568.c | 34 +++++--------------------------
 1 file changed, 5 insertions(+), 29 deletions(-)

diff --git a/drivers/clk/rockchip/clk_rk3568.c 
b/drivers/clk/rockchip/clk_rk3568.c
index 5a05f1b4de00..eaf51728520a 100644
--- a/drivers/clk/rockchip/clk_rk3568.c
+++ b/drivers/clk/rockchip/clk_rk3568.c
@@ -94,44 +94,20 @@ static ulong
 rk3568_pmu_pll_set_rate(struct rk3568_clk_priv *priv,
                        ulong pll_id, ulong rate)
 {
-       struct udevice *pmucru_dev;
-       struct rk3568_pmuclk_priv *pmu_priv;
-       int ret;
-
-       ret = uclass_get_device_by_driver(UCLASS_CLK,
-                                         DM_DRIVER_GET(rockchip_rk3568_pmucru),
-                                         &pmucru_dev);
-       if (ret) {
-               printf("%s: could not find pmucru device\n", __func__);
-               return ret;
-       }
-       pmu_priv = dev_get_priv(pmucru_dev);
-
-       rockchip_pll_set_rate(&rk3568_pll_clks[pll_id],
-                             pmu_priv->pmucru, pll_id, rate);
+       static void * const pmu_cru_base = (void *)RK3568_PMU_CRU_BASE;
 
-       return 0;
+       return rockchip_pll_set_rate(&rk3568_pll_clks[pll_id],
+                                    pmu_cru_base, pll_id, rate);
 }
 #endif
 
 static ulong rk3568_pmu_pll_get_rate(struct rk3568_clk_priv *priv,
                                     ulong pll_id)
 {
-       struct udevice *pmucru_dev;
-       struct rk3568_pmuclk_priv *pmu_priv;
-       int ret;
-
-       ret = uclass_get_device_by_driver(UCLASS_CLK,
-                                         DM_DRIVER_GET(rockchip_rk3568_pmucru),
-                                         &pmucru_dev);
-       if (ret) {
-               printf("%s: could not find pmucru device\n", __func__);
-               return ret;
-       }
-       pmu_priv = dev_get_priv(pmucru_dev);
+       static void * const pmu_cru_base = (void *)RK3568_PMU_CRU_BASE;
 
        return rockchip_pll_get_rate(&rk3568_pll_clks[pll_id],
-                                     pmu_priv->pmucru, pll_id);
+                                    pmu_cru_base, pll_id);
 }
 
 /*
-- 
2.54.0

Reply via email to