From 95099d4622f8cb224d94e314c7a8e0df60b13f87 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 08:38:01 +0000
Subject: [PATCH] enable docker ppp
---
kernel/drivers/soc/rockchip/rockchip-cpuinfo.c | 41 ++++++++++++++++++++++++++++++++++++++---
1 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/kernel/drivers/soc/rockchip/rockchip-cpuinfo.c b/kernel/drivers/soc/rockchip/rockchip-cpuinfo.c
index 69c2077..9eea6f3 100644
--- a/kernel/drivers/soc/rockchip/rockchip-cpuinfo.c
+++ b/kernel/drivers/soc/rockchip/rockchip-cpuinfo.c
@@ -81,12 +81,15 @@
kfree(efuse_buf);
+ dev_info(dev, "SoC\t\t: %lx\n", rockchip_soc_id);
+
+#ifdef CONFIG_NO_GKI
system_serial_low = crc32(0, buf, 8);
system_serial_high = crc32(system_serial_low, buf + 8, 8);
- dev_info(dev, "SoC\t\t: %lx\n", rockchip_soc_id);
dev_info(dev, "Serial\t\t: %08x%08x\n",
system_serial_high, system_serial_low);
+#endif
return 0;
}
@@ -105,6 +108,16 @@
},
};
+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;
@@ -120,6 +133,19 @@
rockchip_soc_id = ROCKCHIP_SOC_PX30S;
iounmap(base);
}
+}
+
+#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)
@@ -176,8 +202,12 @@
#define RK3308_GRF_CHIP_ID 0x800
base = ioremap(RK3308_GRF_PHYS, SZ_4K);
if (base) {
- if (readl_relaxed(base + RK3308_GRF_CHIP_ID) == 0x3308)
+ u32 v = readl_relaxed(base + RK3308_GRF_CHIP_ID);
+
+ if (v == 0x3308)
rockchip_soc_id = ROCKCHIP_SOC_RK3308B;
+ if (v == 0x3308c)
+ rockchip_soc_id = ROCKCHIP_SOC_RK3308BS;
iounmap(base);
}
}
@@ -214,7 +244,7 @@
rk356x_set_cpu_version();
}
-int __init rockchip_soc_id_init(void)
+int rockchip_soc_id_init(void)
{
if (rockchip_soc_id)
return 0;
@@ -228,6 +258,10 @@
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()) {
@@ -244,6 +278,7 @@
return 0;
}
+EXPORT_SYMBOL(rockchip_soc_id_init);
#ifndef MODULE
pure_initcall(rockchip_soc_id_init);
#endif
--
Gitblit v1.6.2