From be4980df16c77a87480a872035b49ed1d4cf8e04 Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Tue, 28 Jul 2020 15:58:04 +0800 Subject: [PATCH] soc: rockchip: cpuinfo: Add support for rv1126/rv1109 This patch add support for rv1126/rv1109 soc. Signed-off-by: Sugar Zhang Change-Id: Id27ce5bd3dd5c4e4f3273e09fbebcfd6a5d5f085 --- drivers/soc/rockchip/rockchip-cpuinfo.c | 14 ++++++++++++++ include/linux/rockchip/cpu.h | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/drivers/soc/rockchip/rockchip-cpuinfo.c b/drivers/soc/rockchip/rockchip-cpuinfo.c index 907eaa788485..e2eacd22c359 100644 --- a/drivers/soc/rockchip/rockchip-cpuinfo.c +++ b/drivers/soc/rockchip/rockchip-cpuinfo.c @@ -99,6 +99,16 @@ static struct platform_driver rockchip_cpuinfo_driver = { }, }; +static void rv1109_init(void) +{ + rockchip_soc_id = ROCKCHIP_SOC_RV1109; +} + +static void rv1126_init(void) +{ + rockchip_soc_id = ROCKCHIP_SOC_RV1126; +} + static void rk3288_init(void) { void __iomem *base; @@ -160,6 +170,10 @@ static int __init rockchip_soc_id_init(void) rk3126_init(); } else if (cpu_is_rk3308()) { rk3308_init(); + } else if (cpu_is_rv1109()) { + rv1109_init(); + } else if (cpu_is_rv1126()) { + rv1126_init(); } return 0; diff --git a/include/linux/rockchip/cpu.h b/include/linux/rockchip/cpu.h index e1b4a558c155..9c6bc082e3f0 100644 --- a/include/linux/rockchip/cpu.h +++ b/include/linux/rockchip/cpu.h @@ -18,6 +18,8 @@ #define ROCKCHIP_CPU_MASK 0xffff0000 #define ROCKCHIP_CPU_SHIFT 16 +#define ROCKCHIP_CPU_RV1109 0x11090000 +#define ROCKCHIP_CPU_RV1126 0x11260000 #define ROCKCHIP_CPU_RK312X 0x31260000 #define ROCKCHIP_CPU_RK3288 0x32880000 #define ROCKCHIP_CPU_RK3308 0x33080000 @@ -68,6 +70,25 @@ static inline void rockchip_set_cpu(unsigned long code) } #endif +#if defined(CONFIG_CPU_RV1126) || defined(CONFIG_CPU_RV1109) +static inline bool cpu_is_rv1109(void) +{ + if (rockchip_soc_id) + return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RV1109; + return of_machine_is_compatible("rockchip,rv1109"); +} + +static inline bool cpu_is_rv1126(void) +{ + if (rockchip_soc_id) + return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RV1126; + return of_machine_is_compatible("rockchip,rv1126"); +} +#else +static inline bool cpu_is_rv1109(void) { return false; } +static inline bool cpu_is_rv1126(void) { return false; } +#endif + #ifdef CONFIG_CPU_RK312X static inline bool cpu_is_rk312x(void) { @@ -107,6 +128,8 @@ static inline bool cpu_is_rk3308(void) { return false; } #endif #define ROCKCHIP_SOC_MASK (ROCKCHIP_CPU_MASK | 0xff) +#define ROCKCHIP_SOC_RV1109 (ROCKCHIP_CPU_RV1109 | 0x00) +#define ROCKCHIP_SOC_RV1126 (ROCKCHIP_CPU_RV1126 | 0x00) #define ROCKCHIP_SOC_RK3126 (ROCKCHIP_CPU_RK312X | 0x00) #define ROCKCHIP_SOC_RK3126B (ROCKCHIP_CPU_RK312X | 0x10) #define ROCKCHIP_SOC_RK3126C (ROCKCHIP_CPU_RK312X | 0x20) @@ -124,6 +147,8 @@ static inline bool soc_is_##id(void) \ return of_machine_is_compatible("rockchip,"#id); \ } +ROCKCHIP_SOC(rv1109, RV1109) +ROCKCHIP_SOC(rv1126, RV1126) ROCKCHIP_SOC(rk3126, RK3126) ROCKCHIP_SOC(rk3126b, RK3126B) ROCKCHIP_SOC(rk3126c, RK3126C)