Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pmdomain: rockchip: Add support for RV1126B

Add configuration and power domains for RV1126 SoC.

Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

authored by

Finley Xiao and committed by
Ulf Hansson
47c7b3c2 56b0d230

+41
+41
drivers/pmdomain/rockchip/pm-domains.c
··· 25 25 #include <soc/rockchip/rockchip_sip.h> 26 26 #include <dt-bindings/power/px30-power.h> 27 27 #include <dt-bindings/power/rockchip,rv1126-power.h> 28 + #include <dt-bindings/power/rockchip,rv1126b-power-controller.h> 28 29 #include <dt-bindings/power/rk3036-power.h> 29 30 #include <dt-bindings/power/rk3066-power.h> 30 31 #include <dt-bindings/power/rk3128-power.h> ··· 138 137 .active_wakeup = wakeup, \ 139 138 } 140 139 140 + #define DOMAIN_M_G(_name, pwr, status, req, idle, ack, g_mask, wakeup, keepon) \ 141 + { \ 142 + .name = _name, \ 143 + .pwr_w_mask = (pwr) << 16, \ 144 + .pwr_mask = (pwr), \ 145 + .status_mask = (status), \ 146 + .req_w_mask = (req) << 16, \ 147 + .req_mask = (req), \ 148 + .idle_mask = (idle), \ 149 + .ack_mask = (ack), \ 150 + .clk_ungate_mask = (g_mask), \ 151 + .active_wakeup = wakeup, \ 152 + } 153 + 141 154 #define DOMAIN_M_G_SD(_name, pwr, status, req, idle, ack, g_mask, mem, wakeup, keepon) \ 142 155 { \ 143 156 .name = _name, \ ··· 219 204 220 205 #define DOMAIN_RV1126(name, pwr, req, idle, wakeup) \ 221 206 DOMAIN_M(name, pwr, pwr, req, idle, idle, wakeup) 207 + 208 + #define DOMAIN_RV1126B(name, pwr, req, wakeup) \ 209 + DOMAIN_M_G(name, pwr, pwr, req, req, req, req, wakeup, true) 222 210 223 211 #define DOMAIN_RK3288(name, pwr, status, req, wakeup) \ 224 212 DOMAIN(name, pwr, status, req, req, (req) << 16, wakeup) ··· 1122 1104 [RV1126_PD_USB] = DOMAIN_RV1126("usb", BIT(9), BIT(15), BIT(15), false), 1123 1105 }; 1124 1106 1107 + static const struct rockchip_domain_info rv1126b_pm_domains[] = { 1108 + /* name pwr req wakeup */ 1109 + [RV1126B_PD_NPU] = DOMAIN_RV1126B("npu", BIT(0), BIT(8), false), 1110 + [RV1126B_PD_VDO] = DOMAIN_RV1126B("vdo", BIT(1), BIT(9), false), 1111 + [RV1126B_PD_AIISP] = DOMAIN_RV1126B("aiisp", BIT(2), BIT(10), false), 1112 + }; 1113 + 1125 1114 static const struct rockchip_domain_info rk3036_pm_domains[] = { 1126 1115 [RK3036_PD_MSCH] = DOMAIN_RK3036("msch", BIT(14), BIT(23), BIT(30), true), 1127 1116 [RK3036_PD_CORE] = DOMAIN_RK3036("core", BIT(13), BIT(17), BIT(24), false), ··· 1541 1516 .domain_info = rv1126_pm_domains, 1542 1517 }; 1543 1518 1519 + static const struct rockchip_pmu_info rv1126b_pmu = { 1520 + .pwr_offset = 0x210, 1521 + .status_offset = 0x230, 1522 + .req_offset = 0x110, 1523 + .idle_offset = 0x128, 1524 + .ack_offset = 0x120, 1525 + .clk_ungate_offset = 0x140, 1526 + 1527 + .num_domains = ARRAY_SIZE(rv1126b_pm_domains), 1528 + .domain_info = rv1126b_pm_domains, 1529 + }; 1530 + 1544 1531 static const struct of_device_id rockchip_pm_domain_dt_match[] = { 1545 1532 { 1546 1533 .compatible = "rockchip,px30-power-controller", ··· 1621 1584 { 1622 1585 .compatible = "rockchip,rv1126-power-controller", 1623 1586 .data = (void *)&rv1126_pmu, 1587 + }, 1588 + { 1589 + .compatible = "rockchip,rv1126b-power-controller", 1590 + .data = (void *)&rv1126b_pmu, 1624 1591 }, 1625 1592 { /* sentinel */ }, 1626 1593 };