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
