82 lines
2.9 KiB
Diff
82 lines
2.9 KiB
Diff
From 3068b386232f0a7d84da6d1366dbd0b7926c5652 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 18 May 2025 22:06:49 +0000
|
|
Subject: [PATCH] pmdomain: rockchip: Add support for RK3528
|
|
|
|
Add configuration and power domains for RK3528 SoC.
|
|
|
|
Only PD_GPU can fully be powered down. PD_RKVDEC, PD_RKVENC, PD_VO and
|
|
PD_VPU are used by miscellaneous devices in RK3528.
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
Link: https://lore.kernel.org/r/20250518220707.669515-3-jonas@kwiboo.se
|
|
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
|
---
|
|
drivers/pmdomain/rockchip/pm-domains.c | 27 ++++++++++++++++++++++++++
|
|
1 file changed, 27 insertions(+)
|
|
|
|
--- a/drivers/pmdomain/rockchip/pm-domains.c
|
|
+++ b/drivers/pmdomain/rockchip/pm-domains.c
|
|
@@ -34,6 +34,7 @@
|
|
#include <dt-bindings/power/rk3366-power.h>
|
|
#include <dt-bindings/power/rk3368-power.h>
|
|
#include <dt-bindings/power/rk3399-power.h>
|
|
+#include <dt-bindings/power/rockchip,rk3528-power.h>
|
|
#include <dt-bindings/power/rk3568-power.h>
|
|
#include <dt-bindings/power/rockchip,rk3576-power.h>
|
|
#include <dt-bindings/power/rk3588-power.h>
|
|
@@ -196,6 +197,9 @@ struct rockchip_pmu {
|
|
#define DOMAIN_RK3399(name, pwr, status, req, wakeup) \
|
|
DOMAIN(name, pwr, status, req, req, req, wakeup)
|
|
|
|
+#define DOMAIN_RK3528(name, pwr, req) \
|
|
+ DOMAIN_M(name, pwr, pwr, req, req, req, false)
|
|
+
|
|
#define DOMAIN_RK3568(name, pwr, req, wakeup) \
|
|
DOMAIN_M(name, pwr, pwr, req, req, req, wakeup)
|
|
|
|
@@ -1139,6 +1143,14 @@ static const struct rockchip_domain_info
|
|
[RK3399_PD_SDIOAUDIO] = DOMAIN_RK3399("sdioaudio", BIT(31), BIT(31), BIT(29), true),
|
|
};
|
|
|
|
+static const struct rockchip_domain_info rk3528_pm_domains[] = {
|
|
+ [RK3528_PD_GPU] = DOMAIN_RK3528("gpu", BIT(0), BIT(4)),
|
|
+ [RK3528_PD_RKVDEC] = DOMAIN_RK3528("vdec", 0, BIT(5)),
|
|
+ [RK3528_PD_RKVENC] = DOMAIN_RK3528("venc", 0, BIT(6)),
|
|
+ [RK3528_PD_VO] = DOMAIN_RK3528("vo", 0, BIT(7)),
|
|
+ [RK3528_PD_VPU] = DOMAIN_RK3528("vpu", 0, BIT(8)),
|
|
+};
|
|
+
|
|
static const struct rockchip_domain_info rk3568_pm_domains[] = {
|
|
[RK3568_PD_NPU] = DOMAIN_RK3568("npu", BIT(1), BIT(2), false),
|
|
[RK3568_PD_GPU] = DOMAIN_RK3568("gpu", BIT(0), BIT(1), false),
|
|
@@ -1340,6 +1352,17 @@ static const struct rockchip_pmu_info rk
|
|
.domain_info = rk3399_pm_domains,
|
|
};
|
|
|
|
+static const struct rockchip_pmu_info rk3528_pmu = {
|
|
+ .pwr_offset = 0x1210,
|
|
+ .status_offset = 0x1230,
|
|
+ .req_offset = 0x1110,
|
|
+ .idle_offset = 0x1128,
|
|
+ .ack_offset = 0x1120,
|
|
+
|
|
+ .num_domains = ARRAY_SIZE(rk3528_pm_domains),
|
|
+ .domain_info = rk3528_pm_domains,
|
|
+};
|
|
+
|
|
static const struct rockchip_pmu_info rk3568_pmu = {
|
|
.pwr_offset = 0xa0,
|
|
.status_offset = 0x98,
|
|
@@ -1439,6 +1462,10 @@ static const struct of_device_id rockchi
|
|
.data = (void *)&rk3399_pmu,
|
|
},
|
|
{
|
|
+ .compatible = "rockchip,rk3528-power-controller",
|
|
+ .data = (void *)&rk3528_pmu,
|
|
+ },
|
|
+ {
|
|
.compatible = "rockchip,rk3568-power-controller",
|
|
.data = (void *)&rk3568_pmu,
|
|
},
|