diff --git a/drivers/soc/rockchip/rockchip-cpuinfo.c b/drivers/soc/rockchip/rockchip-cpuinfo.c index 724ba622a34d..c88d54cff8ab 100644 --- a/drivers/soc/rockchip/rockchip-cpuinfo.c +++ b/drivers/soc/rockchip/rockchip-cpuinfo.c @@ -195,8 +195,11 @@ static void rk3568_init(void) rk356x_set_cpu_version(); } -static int __init rockchip_soc_id_init(void) +int __init rockchip_soc_id_init(void) { + if (rockchip_soc_id) + return 0; + if (cpu_is_rk3288()) { rk3288_init(); } else if (cpu_is_rk312x()) { diff --git a/include/linux/rockchip/cpu.h b/include/linux/rockchip/cpu.h index 727a2d621745..33a1db1f8e5f 100644 --- a/include/linux/rockchip/cpu.h +++ b/include/linux/rockchip/cpu.h @@ -54,6 +54,9 @@ static inline void rockchip_set_cpu(unsigned long code) rockchip_soc_id &= ~ROCKCHIP_CPU_MASK; rockchip_soc_id |= (code << ROCKCHIP_CPU_SHIFT) & ROCKCHIP_CPU_MASK; } + +int rockchip_soc_id_init(void); + #else #define rockchip_soc_id 0 @@ -70,6 +73,12 @@ static inline void rockchip_set_cpu_version(unsigned long ver) static inline void rockchip_set_cpu(unsigned long code) { } + +static inline int rockchip_soc_id_init(void) +{ + return 0; +} + #endif #if defined(CONFIG_CPU_RV1126) || defined(CONFIG_CPU_RV1109)