mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
soc: rockchip: add cpuid for px30/px30s
The value of bit[15:14] in DDR_GRF_BASE1 define px30/px30s. px30: bit[15:14]=0x00 px30s: bit[15:14]=0x03 Change-Id: I07e31e8fd56ee2eea7883a5f5de012740ec0e98a Signed-off-by: Liang Chen <cl@rock-chips.com>
This commit is contained in:
@@ -105,6 +105,23 @@ static struct platform_driver rockchip_cpuinfo_driver = {
|
||||
},
|
||||
};
|
||||
|
||||
static void px30_init(void)
|
||||
{
|
||||
void __iomem *base;
|
||||
|
||||
rockchip_soc_id = ROCKCHIP_SOC_PX30;
|
||||
#define PX30_DDR_GRF_BASE 0xFF630000
|
||||
#define PX30_DDR_GRF_CON1 0x04
|
||||
base = ioremap(PX30_DDR_GRF_BASE, SZ_4K);
|
||||
if (base) {
|
||||
unsigned int val = readl_relaxed(base + PX30_DDR_GRF_CON1);
|
||||
|
||||
if (((val >> 14) & 0x03) == 0x03)
|
||||
rockchip_soc_id = ROCKCHIP_SOC_PX30S;
|
||||
iounmap(base);
|
||||
}
|
||||
}
|
||||
|
||||
static void rv1109_init(void)
|
||||
{
|
||||
rockchip_soc_id = ROCKCHIP_SOC_RV1109;
|
||||
@@ -214,6 +231,8 @@ int __init rockchip_soc_id_init(void)
|
||||
rk3566_init();
|
||||
} else if (cpu_is_rk3568()) {
|
||||
rk3568_init();
|
||||
} else if (cpu_is_px30()) {
|
||||
px30_init();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#define ROCKCHIP_CPU_MASK 0xffff0000
|
||||
#define ROCKCHIP_CPU_SHIFT 16
|
||||
#define ROCKCHIP_CPU_PX30 0x33260000
|
||||
#define ROCKCHIP_CPU_RV1109 0x11090000
|
||||
#define ROCKCHIP_CPU_RV1126 0x11260000
|
||||
#define ROCKCHIP_CPU_RK312X 0x31260000
|
||||
@@ -81,6 +82,20 @@ static inline int rockchip_soc_id_init(void)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_PX30
|
||||
static inline bool cpu_is_px30(void)
|
||||
{
|
||||
if (rockchip_soc_id)
|
||||
return (rockchip_soc_id & ROCKCHIP_CPU_MASK) == ROCKCHIP_CPU_PX30;
|
||||
return of_machine_is_compatible("rockchip,px30") ||
|
||||
of_machine_is_compatible("rockchip,px30s") ||
|
||||
of_machine_is_compatible("rockchip,rk3326") ||
|
||||
of_machine_is_compatible("rockchip,rk3326s");
|
||||
}
|
||||
#else
|
||||
static inline bool cpu_is_px30(void) { return false; }
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_RV1126) || defined(CONFIG_CPU_RV1109)
|
||||
static inline bool cpu_is_rv1109(void)
|
||||
{
|
||||
@@ -158,6 +173,8 @@ static inline bool cpu_is_rk3568(void) { return false; }
|
||||
#endif
|
||||
|
||||
#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_RV1109 (ROCKCHIP_CPU_RV1109 | 0x00)
|
||||
#define ROCKCHIP_SOC_RV1126 (ROCKCHIP_CPU_RV1126 | 0x00)
|
||||
#define ROCKCHIP_SOC_RK3126 (ROCKCHIP_CPU_RK312X | 0x00)
|
||||
@@ -179,6 +196,8 @@ static inline bool soc_is_##id(void) \
|
||||
return of_machine_is_compatible("rockchip,"#id); \
|
||||
}
|
||||
|
||||
ROCKCHIP_SOC(px30, PX30)
|
||||
ROCKCHIP_SOC(px30s, PX30S)
|
||||
ROCKCHIP_SOC(rv1109, RV1109)
|
||||
ROCKCHIP_SOC(rv1126, RV1126)
|
||||
ROCKCHIP_SOC(rk3126, RK3126)
|
||||
|
||||
Reference in New Issue
Block a user