The rockchip_get_cru() helper is used by the sysreset_rockchip to get
the SoC specific CRU base address, and the rockchip_get_pmucru() helper
is only used by the RK3399 specific RAM driver. These helpers may
trigger a full clock driver probe to get the fixed CRU base address from
the clock driver private data, something that can take several ms.

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

Signed-off-by: Jonas Karlman <[email protected]>
---
 .../include/asm/arch-rockchip/cru_rk3568.h    |  5 +--
 arch/arm/mach-rockchip/rk3568/clk_rk3568.c    | 33 ++-----------------
 2 files changed, 5 insertions(+), 33 deletions(-)

diff --git a/arch/arm/include/asm/arch-rockchip/cru_rk3568.h 
b/arch/arm/include/asm/arch-rockchip/cru_rk3568.h
index d72f241d0150..e2dc3cda5577 100644
--- a/arch/arm/include/asm/arch-rockchip/cru_rk3568.h
+++ b/arch/arm/include/asm/arch-rockchip/cru_rk3568.h
@@ -35,7 +35,6 @@ struct rk3568_clk_info {
        bool is_cru;
 };
 
-/* Private data for the clock driver - used by rockchip_get_cru() */
 struct rk3568_pmuclk_priv {
        struct rk3568_pmucru *pmucru;
        ulong ppll_hz;
@@ -120,8 +119,10 @@ struct pll_rate_table {
        unsigned int frac;
 };
 
-#define RK3568_PMU_MODE                        0x80
+#define RK3568_PMU_CRU_BASE            0xfdd00000
 #define RK3568_PMU_PLL_CON(x)          ((x) * 0x4)
+#define RK3568_PMU_MODE                        0x80
+#define RK3568_CRU_BASE                        0xfdd20000
 #define RK3568_PLL_CON(x)              ((x) * 0x4)
 #define RK3568_MODE_CON                        0xc0
 
diff --git a/arch/arm/mach-rockchip/rk3568/clk_rk3568.c 
b/arch/arm/mach-rockchip/rk3568/clk_rk3568.c
index 1c6b2ece602b..ccd98a91cd16 100644
--- a/arch/arm/mach-rockchip/rk3568/clk_rk3568.c
+++ b/arch/arm/mach-rockchip/rk3568/clk_rk3568.c
@@ -4,10 +4,7 @@
  */
 
 #include <dm.h>
-#include <syscon.h>
-#include <asm/arch-rockchip/clock.h>
 #include <asm/arch-rockchip/cru_rk3568.h>
-#include <linux/err.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
@@ -17,36 +14,10 @@ int rockchip_get_clk(struct udevice **devp)
 
 void *rockchip_get_cru(void)
 {
-       struct rk3568_clk_priv *priv;
-       struct udevice *dev;
-       int ret;
-
-       ret = rockchip_get_clk(&dev);
-       if (ret)
-               return ERR_PTR(ret);
-
-       priv = dev_get_priv(dev);
-
-       return priv->cru;
-}
-
-static int rockchip_get_pmucruclk(struct udevice **devp)
-{
-       return uclass_get_device_by_driver(UCLASS_CLK,
-                       DM_DRIVER_GET(rockchip_rk3568_pmucru), devp);
+       return (void *)RK3568_CRU_BASE;
 }
 
 void *rockchip_get_pmucru(void)
 {
-       struct rk3568_pmuclk_priv *priv;
-       struct udevice *dev;
-       int ret;
-
-       ret = rockchip_get_pmucruclk(&dev);
-       if (ret)
-               return ERR_PTR(ret);
-
-       priv = dev_get_priv(dev);
-
-       return priv->pmucru;
+       return (void *)RK3568_PMU_CRU_BASE;
 }
-- 
2.54.0

Reply via email to