mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
soc: rockchip: cpuinfo: Add support for rv1106/3
This patch adds support for rv1106/3 soc and get chip version from OS_REG1[2:0] which was written by SPL. Details ref to Rockchip_Introduction_OS_REG.md Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com> Change-Id: Ib833a55acb70490945a37b5fdab7a29dcb5c3e6e
This commit is contained in:
@@ -108,6 +108,16 @@ static struct platform_driver rockchip_cpuinfo_driver = {
|
||||
},
|
||||
};
|
||||
|
||||
static void rockchip_set_cpu_version_from_os_reg(u32 reg)
|
||||
{
|
||||
void __iomem *r = ioremap(reg, 0x4);
|
||||
|
||||
if (r) {
|
||||
rockchip_set_cpu_version(readl_relaxed(r) & GENMASK(2, 0));
|
||||
iounmap(r);
|
||||
}
|
||||
}
|
||||
|
||||
static void px30_init(void)
|
||||
{
|
||||
void __iomem *base;
|
||||
@@ -125,6 +135,19 @@ static void px30_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
#define RV1106_OS_REG1 0xff020204
|
||||
static void rv1103_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RV1103;
|
||||
rockchip_set_cpu_version_from_os_reg(RV1106_OS_REG1);
|
||||
}
|
||||
|
||||
static void rv1106_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RV1106;
|
||||
rockchip_set_cpu_version_from_os_reg(RV1106_OS_REG1);
|
||||
}
|
||||
|
||||
static void rv1109_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RV1109;
|
||||
@@ -230,6 +253,10 @@ int __init rockchip_soc_id_init(void)
|
||||
rk3126_init();
|
||||
} else if (cpu_is_rk3308()) {
|
||||
rk3308_init();
|
||||
} else if (cpu_is_rv1103()) {
|
||||
rv1103_init();
|
||||
} else if (cpu_is_rv1106()) {
|
||||
rv1106_init();
|
||||
} else if (cpu_is_rv1109()) {
|
||||
rv1109_init();
|
||||
} else if (cpu_is_rv1126()) {
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#define ROCKCHIP_CPU_MASK 0xffff0000
|
||||
#define ROCKCHIP_CPU_SHIFT 16
|
||||
#define ROCKCHIP_CPU_PX30 0x33260000
|
||||
#define ROCKCHIP_CPU_RV1103 0x11030000
|
||||
#define ROCKCHIP_CPU_RV1106 0x11060000
|
||||
#define ROCKCHIP_CPU_RV1109 0x11090000
|
||||
#define ROCKCHIP_CPU_RV1126 0x11260000
|
||||
#define ROCKCHIP_CPU_RK312X 0x31260000
|
||||
@@ -96,6 +98,25 @@ static inline bool cpu_is_px30(void)
|
||||
static inline bool cpu_is_px30(void) { return false; }
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_RV1106)
|
||||
static inline bool cpu_is_rv1103(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RV1103;
|
||||
return of_machine_is_compatible("rockchip,rv1103");
|
||||
}
|
||||
|
||||
static inline bool cpu_is_rv1106(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_RV1106;
|
||||
return of_machine_is_compatible("rockchip,rv1106");
|
||||
}
|
||||
#else
|
||||
static inline bool cpu_is_rv1103(void) { return false; }
|
||||
static inline bool cpu_is_rv1106(void) { return false; }
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_RV1126) || defined(CONFIG_CPU_RV1109)
|
||||
static inline bool cpu_is_rv1109(void)
|
||||
{
|
||||
@@ -176,6 +197,8 @@ static inline bool cpu_is_rk3568(void) { return false; }
|
||||
#define ROCKCHIP_SOC_MASK (ROCKCHIP_CPU_MASK | 0xff)
|
||||
#define ROCKCHIP_SOC_PX30 (ROCKCHIP_CPU_PX30 | 0x00)
|
||||
#define ROCKCHIP_SOC_PX30S (ROCKCHIP_CPU_PX30 | 0x01)
|
||||
#define ROCKCHIP_SOC_RV1103 (ROCKCHIP_CPU_RV1103 | 0x00)
|
||||
#define ROCKCHIP_SOC_RV1106 (ROCKCHIP_CPU_RV1106 | 0x00)
|
||||
#define ROCKCHIP_SOC_RV1109 (ROCKCHIP_CPU_RV1109 | 0x00)
|
||||
#define ROCKCHIP_SOC_RV1126 (ROCKCHIP_CPU_RV1126 | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3126 (ROCKCHIP_CPU_RK312X | 0x00)
|
||||
@@ -202,6 +225,8 @@ static inline bool soc_is_##id(void) \
|
||||
|
||||
ROCKCHIP_SOC(PX30, px30, PX30)
|
||||
ROCKCHIP_SOC(PX30, px30s, PX30S)
|
||||
ROCKCHIP_SOC(RV1106, rv1103, RV1103)
|
||||
ROCKCHIP_SOC(RV1106, rv1106, RV1106)
|
||||
ROCKCHIP_SOC(RV1126, rv1109, RV1109)
|
||||
ROCKCHIP_SOC(RV1126, rv1126, RV1126)
|
||||
ROCKCHIP_SOC(RK312X, rk3126, RK3126)
|
||||
|
||||
Reference in New Issue
Block a user