hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/drivers/soc/rockchip/pm_domains.c
....@@ -37,6 +37,7 @@
3737 #include <dt-bindings/power/rk3366-power.h>
3838 #include <dt-bindings/power/rk3368-power.h>
3939 #include <dt-bindings/power/rk3399-power.h>
40
+#include <dt-bindings/power/rk3528-power.h>
4041 #include <dt-bindings/power/rk3568-power.h>
4142
4243 struct rockchip_domain_info {
....@@ -146,6 +147,20 @@
146147 .keepon_startup = keepon, \
147148 }
148149
150
+#define DOMAIN_M_A(pwr, status, req, idle, ack, always, wakeup, keepon) \
151
+{ \
152
+ .pwr_w_mask = (pwr) << 16, \
153
+ .pwr_mask = (pwr), \
154
+ .status_mask = (status), \
155
+ .req_w_mask = (req) << 16, \
156
+ .req_mask = (req), \
157
+ .idle_mask = (idle), \
158
+ .ack_mask = (ack), \
159
+ .always_on = always, \
160
+ .active_wakeup = wakeup, \
161
+ .keepon_startup = keepon, \
162
+}
163
+
149164 #define DOMAIN_M_O(pwr, status, p_offset, req, idle, ack, r_offset, wakeup, keepon) \
150165 { \
151166 .pwr_w_mask = (pwr) << 16, \
....@@ -205,6 +220,9 @@
205220
206221 #define DOMAIN_RK3399_PROTECT(pwr, status, req, wakeup) \
207222 DOMAIN(pwr, status, req, req, req, wakeup, true)
223
+
224
+#define DOMAIN_RK3528(pwr, req, always, wakeup) \
225
+ DOMAIN_M_A(pwr, pwr, req, req, req, always, wakeup, false)
208226
209227 #define DOMAIN_RK3568(pwr, req, wakeup) \
210228 DOMAIN_M(pwr, pwr, req, req, req, wakeup, false)
....@@ -1357,6 +1375,18 @@
13571375 [RK3399_PD_SDIOAUDIO] = DOMAIN_RK3399(BIT(31), BIT(31), BIT(29), true),
13581376 };
13591377
1378
+static const struct rockchip_domain_info rk3528_pm_domains[] = {
1379
+ [RK3528_PD_PMU] = DOMAIN_RK3528(0, BIT(0), true, false),
1380
+ [RK3528_PD_BUS] = DOMAIN_RK3528(0, BIT(1), true, false),
1381
+ [RK3528_PD_DDR] = DOMAIN_RK3528(0, BIT(2), true, false),
1382
+ [RK3528_PD_MSCH] = DOMAIN_RK3528(0, BIT(3), true, false),
1383
+ [RK3528_PD_GPU] = DOMAIN_RK3528(BIT(0), BIT(4), true, false),
1384
+ [RK3528_PD_RKVDEC] = DOMAIN_RK3528(0, BIT(5), true, false),
1385
+ [RK3528_PD_RKVENC] = DOMAIN_RK3528(0, BIT(6), true, false),
1386
+ [RK3528_PD_VO] = DOMAIN_RK3528(0, BIT(7), true, false),
1387
+ [RK3528_PD_VPU] = DOMAIN_RK3528(0, BIT(8), true, false),
1388
+};
1389
+
13601390 static const struct rockchip_domain_info rk3568_pm_domains[] = {
13611391 [RK3568_PD_NPU] = DOMAIN_RK3568(BIT(1), BIT(2), false),
13621392 [RK3568_PD_GPU] = DOMAIN_RK3568(BIT(0), BIT(1), false),
....@@ -1508,6 +1538,17 @@
15081538 .domain_info = rk3399_pm_domains,
15091539 };
15101540
1541
+static const struct rockchip_pmu_info rk3528_pmu = {
1542
+ .pwr_offset = 0x1210,
1543
+ .status_offset = 0x1230,
1544
+ .req_offset = 0x1110,
1545
+ .idle_offset = 0x1128,
1546
+ .ack_offset = 0x1120,
1547
+
1548
+ .num_domains = ARRAY_SIZE(rk3528_pm_domains),
1549
+ .domain_info = rk3528_pm_domains,
1550
+};
1551
+
15111552 static const struct rockchip_pmu_info rk3568_pmu = {
15121553 .pwr_offset = 0xa0,
15131554 .status_offset = 0x98,
....@@ -1586,6 +1627,12 @@
15861627 .data = (void *)&rk3399_pmu,
15871628 },
15881629 #endif
1630
+#ifdef CONFIG_CPU_RK3528
1631
+ {
1632
+ .compatible = "rockchip,rk3528-power-controller",
1633
+ .data = (void *)&rk3528_pmu,
1634
+ },
1635
+#endif
15891636 #ifdef CONFIG_CPU_RK3568
15901637 {
15911638 .compatible = "rockchip,rk3568-power-controller",