forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 072de836f53be56a70cecf70b43ae43b7ce17376
kernel/drivers/soc/rockchip/rockchip-cpuinfo.c
....@@ -81,12 +81,15 @@
8181
8282 kfree(efuse_buf);
8383
84
+ dev_info(dev, "SoC\t\t: %lx\n", rockchip_soc_id);
85
+
86
+#ifdef CONFIG_NO_GKI
8487 system_serial_low = crc32(0, buf, 8);
8588 system_serial_high = crc32(system_serial_low, buf + 8, 8);
8689
87
- dev_info(dev, "SoC\t\t: %lx\n", rockchip_soc_id);
8890 dev_info(dev, "Serial\t\t: %08x%08x\n",
8991 system_serial_high, system_serial_low);
92
+#endif
9093
9194 return 0;
9295 }
....@@ -105,6 +108,16 @@
105108 },
106109 };
107110
111
+static void rockchip_set_cpu_version_from_os_reg(u32 reg)
112
+{
113
+ void __iomem *r = ioremap(reg, 0x4);
114
+
115
+ if (r) {
116
+ rockchip_set_cpu_version(readl_relaxed(r) & GENMASK(2, 0));
117
+ iounmap(r);
118
+ }
119
+}
120
+
108121 static void px30_init(void)
109122 {
110123 void __iomem *base;
....@@ -120,6 +133,19 @@
120133 rockchip_soc_id = ROCKCHIP_SOC_PX30S;
121134 iounmap(base);
122135 }
136
+}
137
+
138
+#define RV1106_OS_REG1 0xff020204
139
+static void rv1103_init(void)
140
+{
141
+ rockchip_soc_id = ROCKCHIP_SOC_RV1103;
142
+ rockchip_set_cpu_version_from_os_reg(RV1106_OS_REG1);
143
+}
144
+
145
+static void rv1106_init(void)
146
+{
147
+ rockchip_soc_id = ROCKCHIP_SOC_RV1106;
148
+ rockchip_set_cpu_version_from_os_reg(RV1106_OS_REG1);
123149 }
124150
125151 static void rv1109_init(void)
....@@ -176,15 +202,22 @@
176202 #define RK3308_GRF_CHIP_ID 0x800
177203 base = ioremap(RK3308_GRF_PHYS, SZ_4K);
178204 if (base) {
179
- if (readl_relaxed(base + RK3308_GRF_CHIP_ID) == 0x3308)
205
+ u32 v = readl_relaxed(base + RK3308_GRF_CHIP_ID);
206
+
207
+ if (v == 0x3308)
180208 rockchip_soc_id = ROCKCHIP_SOC_RK3308B;
209
+ if (v == 0x3308c)
210
+ rockchip_soc_id = ROCKCHIP_SOC_RK3308BS;
181211 iounmap(base);
182212 }
183213 }
184214
185215 static void rk3528_init(void)
186216 {
187
- rockchip_soc_id = ROCKCHIP_SOC_RK3528;
217
+ if (of_machine_is_compatible("rockchip,rk3528"))
218
+ rockchip_soc_id = ROCKCHIP_SOC_RK3528;
219
+ else if (of_machine_is_compatible("rockchip,rk3528a"))
220
+ rockchip_soc_id = ROCKCHIP_SOC_RK3528A;
188221 }
189222
190223 #define RK356X_PMU_GRF_PHYS 0xfdc20000
....@@ -208,13 +241,19 @@
208241 rk356x_set_cpu_version();
209242 }
210243
244
+static void rk3567_init(void)
245
+{
246
+ rockchip_soc_id = ROCKCHIP_SOC_RK3567;
247
+ rk356x_set_cpu_version();
248
+}
249
+
211250 static void rk3568_init(void)
212251 {
213252 rockchip_soc_id = ROCKCHIP_SOC_RK3568;
214253 rk356x_set_cpu_version();
215254 }
216255
217
-int __init rockchip_soc_id_init(void)
256
+int rockchip_soc_id_init(void)
218257 {
219258 if (rockchip_soc_id)
220259 return 0;
....@@ -228,6 +267,10 @@
228267 rk3126_init();
229268 } else if (cpu_is_rk3308()) {
230269 rk3308_init();
270
+ } else if (cpu_is_rv1103()) {
271
+ rv1103_init();
272
+ } else if (cpu_is_rv1106()) {
273
+ rv1106_init();
231274 } else if (cpu_is_rv1109()) {
232275 rv1109_init();
233276 } else if (cpu_is_rv1126()) {
....@@ -236,6 +279,8 @@
236279 rk3528_init();
237280 } else if (cpu_is_rk3566()) {
238281 rk3566_init();
282
+ } else if (cpu_is_rk3567()) {
283
+ rk3567_init();
239284 } else if (cpu_is_rk3568()) {
240285 rk3568_init();
241286 } else if (cpu_is_px30()) {
....@@ -244,6 +289,7 @@
244289
245290 return 0;
246291 }
292
+EXPORT_SYMBOL(rockchip_soc_id_init);
247293 #ifndef MODULE
248294 pure_initcall(rockchip_soc_id_init);
249295 #endif