* [PATCH 0/6] RK3588 Power Domain Support
@ 2022-06-23 16:23 Sebastian Reichel
2022-06-23 16:23 ` [PATCH 1/6] dt-bindings: arm: rockchip: add rk3388 compatible string to pmu.yaml Sebastian Reichel
` (5 more replies)
0 siblings, 6 replies; 13+ messages in thread
From: Sebastian Reichel @ 2022-06-23 16:23 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Sebastian Reichel, kernel
This adds power domain support for the new RK3588(s) SoC
series. The series has been tested with ethernet on the
RK3588 EVB1 board.
-- Sebastian
Elaine Zhang (1):
soc: rockchip: power-domain: do not enable PD
Finley Xiao (2):
dt-bindings: add power-domain header for rk3588
soc: rockchip: power-domain: add power domain support for rk3588
Sebastian Reichel (3):
dt-bindings: arm: rockchip: add rk3388 compatible string to pmu.yaml
dt-bindings: power: rockchip: Add bindings for rk3588
dt-bindings: mfd: syscon: Add rk3388 QoS register compatible
.../devicetree/bindings/arm/rockchip/pmu.yaml | 2 +
.../devicetree/bindings/mfd/syscon.yaml | 1 +
.../power/rockchip,power-controller.yaml | 2 +
drivers/soc/rockchip/pm_domains.c | 101 +++++++++++++++---
include/dt-bindings/power/rk3588-power.h | 69 ++++++++++++
5 files changed, 162 insertions(+), 13 deletions(-)
create mode 100644 include/dt-bindings/power/rk3588-power.h
--
2.35.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/6] dt-bindings: arm: rockchip: add rk3388 compatible string to pmu.yaml
2022-06-23 16:23 [PATCH 0/6] RK3588 Power Domain Support Sebastian Reichel
@ 2022-06-23 16:23 ` Sebastian Reichel
2022-06-23 16:29 ` Christopher Obbard
2022-06-23 16:23 ` [PATCH 2/6] dt-bindings: add power-domain header for rk3588 Sebastian Reichel
` (4 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Sebastian Reichel @ 2022-06-23 16:23 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Sebastian Reichel, kernel
Add the compatible for the pmu mfd on rk3388.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
Documentation/devicetree/bindings/arm/rockchip/pmu.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml b/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml
index 5ece38065e54..4c645049c15b 100644
--- a/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml
+++ b/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml
@@ -25,6 +25,7 @@ select:
- rockchip,rk3368-pmu
- rockchip,rk3399-pmu
- rockchip,rk3568-pmu
+ - rockchip,rk3588-pmu
required:
- compatible
@@ -39,6 +40,7 @@ properties:
- rockchip,rk3368-pmu
- rockchip,rk3399-pmu
- rockchip,rk3568-pmu
+ - rockchip,rk3588-pmu
- const: syscon
- const: simple-mfd
--
2.35.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/6] dt-bindings: add power-domain header for rk3588
2022-06-23 16:23 [PATCH 0/6] RK3588 Power Domain Support Sebastian Reichel
2022-06-23 16:23 ` [PATCH 1/6] dt-bindings: arm: rockchip: add rk3388 compatible string to pmu.yaml Sebastian Reichel
@ 2022-06-23 16:23 ` Sebastian Reichel
2022-06-30 22:04 ` Rob Herring
2022-06-23 16:23 ` [PATCH 3/6] dt-bindings: power: rockchip: Add bindings " Sebastian Reichel
` (3 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Sebastian Reichel @ 2022-06-23 16:23 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Finley Xiao, kernel,
Sebastian Reichel
From: Finley Xiao <finley.xiao@rock-chips.com>
According to a description from TRM, add all the power domains.
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
include/dt-bindings/power/rk3588-power.h | 69 ++++++++++++++++++++++++
1 file changed, 69 insertions(+)
create mode 100644 include/dt-bindings/power/rk3588-power.h
diff --git a/include/dt-bindings/power/rk3588-power.h b/include/dt-bindings/power/rk3588-power.h
new file mode 100644
index 000000000000..69f7e9060250
--- /dev/null
+++ b/include/dt-bindings/power/rk3588-power.h
@@ -0,0 +1,69 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __DT_BINDINGS_POWER_RK3588_POWER_H__
+#define __DT_BINDINGS_POWER_RK3588_POWER_H__
+
+/* VD_LITDSU */
+#define RK3588_PD_CPU_0 0
+#define RK3588_PD_CPU_1 1
+#define RK3588_PD_CPU_2 2
+#define RK3588_PD_CPU_3 3
+
+/* VD_BIGCORE0 */
+#define RK3588_PD_CPU_4 4
+#define RK3588_PD_CPU_5 5
+
+/* VD_BIGCORE1 */
+#define RK3588_PD_CPU_6 6
+#define RK3588_PD_CPU_7 7
+
+/* VD_NPU */
+#define RK3588_PD_NPU 8
+#define RK3588_PD_NPUTOP 9
+#define RK3588_PD_NPU1 10
+#define RK3588_PD_NPU2 11
+
+/* VD_GPU */
+#define RK3588_PD_GPU 12
+
+/* VD_VCODEC */
+#define RK3588_PD_VCODEC 13
+#define RK3588_PD_RKVDEC0 14
+#define RK3588_PD_RKVDEC1 15
+#define RK3588_PD_VENC0 16
+#define RK3588_PD_VENC1 17
+
+/* VD_DD01 */
+#define RK3588_PD_DDR01 18
+
+/* VD_DD23 */
+#define RK3588_PD_DDR23 19
+
+/* VD_LOGIC */
+#define RK3588_PD_CENTER 20
+#define RK3588_PD_VDPU 21
+#define RK3588_PD_RGA30 22
+#define RK3588_PD_AV1 23
+#define RK3588_PD_VOP 24
+#define RK3588_PD_VO0 25
+#define RK3588_PD_VO1 26
+#define RK3588_PD_VI 27
+#define RK3588_PD_ISP1 28
+#define RK3588_PD_FEC 29
+#define RK3588_PD_RGA31 30
+#define RK3588_PD_USB 31
+#define RK3588_PD_PHP 32
+#define RK3588_PD_GMAC 33
+#define RK3588_PD_PCIE 34
+#define RK3588_PD_NVM 35
+#define RK3588_PD_NVM0 36
+#define RK3588_PD_SDIO 37
+#define RK3588_PD_AUDIO 38
+#define RK3588_PD_SECURE 39
+#define RK3588_PD_SDMMC 40
+#define RK3588_PD_CRYPTO 41
+#define RK3588_PD_BUS 42
+
+/* VD_PMU */
+#define RK3588_PD_PMU1 43
+
+#endif
--
2.35.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/6] dt-bindings: power: rockchip: Add bindings for rk3588
2022-06-23 16:23 [PATCH 0/6] RK3588 Power Domain Support Sebastian Reichel
2022-06-23 16:23 ` [PATCH 1/6] dt-bindings: arm: rockchip: add rk3388 compatible string to pmu.yaml Sebastian Reichel
2022-06-23 16:23 ` [PATCH 2/6] dt-bindings: add power-domain header for rk3588 Sebastian Reichel
@ 2022-06-23 16:23 ` Sebastian Reichel
2022-06-30 22:04 ` Rob Herring
2022-06-23 16:23 ` [PATCH 4/6] dt-bindings: mfd: syscon: Add rk3388 QoS register compatible Sebastian Reichel
` (2 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Sebastian Reichel @ 2022-06-23 16:23 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Sebastian Reichel, kernel
Add the compatible string for RK3588 SoC.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
.../devicetree/bindings/power/rockchip,power-controller.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml
index 3deb0fc8dfd3..5a769517f5c4 100644
--- a/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml
+++ b/Documentation/devicetree/bindings/power/rockchip,power-controller.yaml
@@ -41,6 +41,7 @@ properties:
- rockchip,rk3368-power-controller
- rockchip,rk3399-power-controller
- rockchip,rk3568-power-controller
+ - rockchip,rk3588-power-controller
"#power-domain-cells":
const: 1
@@ -119,6 +120,7 @@ $defs:
"include/dt-bindings/power/rk3368-power.h"
"include/dt-bindings/power/rk3399-power.h"
"include/dt-bindings/power/rk3568-power.h"
+ "include/dt-bindings/power/rk3588-power.h"
clocks:
minItems: 1
--
2.35.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 4/6] dt-bindings: mfd: syscon: Add rk3388 QoS register compatible
2022-06-23 16:23 [PATCH 0/6] RK3588 Power Domain Support Sebastian Reichel
` (2 preceding siblings ...)
2022-06-23 16:23 ` [PATCH 3/6] dt-bindings: power: rockchip: Add bindings " Sebastian Reichel
@ 2022-06-23 16:23 ` Sebastian Reichel
2022-06-23 16:27 ` Christopher Obbard
2022-06-23 16:28 ` Christopher Obbard
2022-06-23 16:23 ` [PATCH 5/6] soc: rockchip: power-domain: do not enable PD Sebastian Reichel
2022-06-23 16:23 ` [PATCH 6/6] soc: rockchip: power-domain: add power domain support for rk3588 Sebastian Reichel
5 siblings, 2 replies; 13+ messages in thread
From: Sebastian Reichel @ 2022-06-23 16:23 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Sebastian Reichel, kernel
Document rk3368 compatible for QoS registers.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
Documentation/devicetree/bindings/mfd/syscon.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml b/Documentation/devicetree/bindings/mfd/syscon.yaml
index fb784045013f..ff1a7aae33f2 100644
--- a/Documentation/devicetree/bindings/mfd/syscon.yaml
+++ b/Documentation/devicetree/bindings/mfd/syscon.yaml
@@ -59,6 +59,7 @@ properties:
- rockchip,rk3368-qos
- rockchip,rk3399-qos
- rockchip,rk3568-qos
+ - rockchip,rk3588-qos
- samsung,exynos3-sysreg
- samsung,exynos4-sysreg
- samsung,exynos5-sysreg
--
2.35.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 5/6] soc: rockchip: power-domain: do not enable PD
2022-06-23 16:23 [PATCH 0/6] RK3588 Power Domain Support Sebastian Reichel
` (3 preceding siblings ...)
2022-06-23 16:23 ` [PATCH 4/6] dt-bindings: mfd: syscon: Add rk3388 QoS register compatible Sebastian Reichel
@ 2022-06-23 16:23 ` Sebastian Reichel
2022-06-23 16:23 ` [PATCH 6/6] soc: rockchip: power-domain: add power domain support for rk3588 Sebastian Reichel
5 siblings, 0 replies; 13+ messages in thread
From: Sebastian Reichel @ 2022-06-23 16:23 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Elaine Zhang, kernel,
Sebastian Reichel
From: Elaine Zhang <zhangqing@rock-chips.com>
It's not need to power on all pd when add pm domain. Instead
use PD's real status in pm_genpd_init().
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
drivers/soc/rockchip/pm_domains.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c
index 89795abac951..a59aa3b89a72 100644
--- a/drivers/soc/rockchip/pm_domains.c
+++ b/drivers/soc/rockchip/pm_domains.c
@@ -595,14 +595,6 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
}
}
- error = rockchip_pd_power(pd, true);
- if (error) {
- dev_err(pmu->dev,
- "failed to power on domain '%pOFn': %d\n",
- node, error);
- goto err_unprepare_clocks;
- }
-
if (pd->info->name)
pd->genpd.name = pd->info->name;
else
@@ -614,7 +606,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
pd->genpd.flags = GENPD_FLAG_PM_CLK;
if (pd_info->active_wakeup)
pd->genpd.flags |= GENPD_FLAG_ACTIVE_WAKEUP;
- pm_genpd_init(&pd->genpd, NULL, false);
+ pm_genpd_init(&pd->genpd, NULL, !rockchip_pmu_domain_is_on(pd));
pmu->genpd_data.domains[id] = &pd->genpd;
return 0;
--
2.35.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 6/6] soc: rockchip: power-domain: add power domain support for rk3588
2022-06-23 16:23 [PATCH 0/6] RK3588 Power Domain Support Sebastian Reichel
` (4 preceding siblings ...)
2022-06-23 16:23 ` [PATCH 5/6] soc: rockchip: power-domain: do not enable PD Sebastian Reichel
@ 2022-06-23 16:23 ` Sebastian Reichel
5 siblings, 0 replies; 13+ messages in thread
From: Sebastian Reichel @ 2022-06-23 16:23 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Finley Xiao, kernel,
Sebastian Reichel
From: Finley Xiao <finley.xiao@rock-chips.com>
This driver is modified to support RK3588 SoCs.
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
[port of downstream code incl. merging in fixes]
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
drivers/soc/rockchip/pm_domains.c | 91 +++++++++++++++++++++++++++++--
1 file changed, 87 insertions(+), 4 deletions(-)
diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c
index a59aa3b89a72..dff96cf4a66b 100644
--- a/drivers/soc/rockchip/pm_domains.c
+++ b/drivers/soc/rockchip/pm_domains.c
@@ -30,6 +30,7 @@
#include <dt-bindings/power/rk3368-power.h>
#include <dt-bindings/power/rk3399-power.h>
#include <dt-bindings/power/rk3568-power.h>
+#include <dt-bindings/power/rk3588-power.h>
struct rockchip_domain_info {
const char *name;
@@ -41,6 +42,9 @@ struct rockchip_domain_info {
bool active_wakeup;
int pwr_w_mask;
int req_w_mask;
+ int repair_status_mask;
+ u32 pwr_offset;
+ u32 req_offset;
};
struct rockchip_pmu_info {
@@ -49,6 +53,7 @@ struct rockchip_pmu_info {
u32 req_offset;
u32 idle_offset;
u32 ack_offset;
+ u32 repair_status_offset;
u32 core_pwrcnt_offset;
u32 gpu_pwrcnt_offset;
@@ -113,6 +118,22 @@ struct rockchip_pmu {
.active_wakeup = wakeup, \
}
+#define DOMAIN_M_O_R(_name, p_offset, pwr, status, r_status, r_offset, req, idle, ack, wakeup) \
+{ \
+ .name = _name, \
+ .pwr_offset = p_offset, \
+ .pwr_w_mask = (pwr) << 16, \
+ .pwr_mask = (pwr), \
+ .status_mask = (status), \
+ .repair_status_mask = (r_status), \
+ .req_offset = r_offset, \
+ .req_w_mask = (req) << 16, \
+ .req_mask = (req), \
+ .idle_mask = (idle), \
+ .ack_mask = (ack), \
+ .active_wakeup = wakeup, \
+}
+
#define DOMAIN_RK3036(_name, req, ack, idle, wakeup) \
{ \
.name = _name, \
@@ -244,6 +265,9 @@ void rockchip_pmu_unblock(void)
}
EXPORT_SYMBOL_GPL(rockchip_pmu_unblock);
+#define DOMAIN_RK3588(name, p_offset, pwr, status, r_status, r_offset, req, idle, wakeup) \
+ DOMAIN_M_O_R(name, p_offset, pwr, status, r_status, r_offset, req, idle, idle, wakeup)
+
static bool rockchip_pmu_domain_is_idle(struct rockchip_pm_domain *pd)
{
struct rockchip_pmu *pmu = pd->pmu;
@@ -268,6 +292,7 @@ static int rockchip_pmu_set_idle_request(struct rockchip_pm_domain *pd,
const struct rockchip_domain_info *pd_info = pd->info;
struct generic_pm_domain *genpd = &pd->genpd;
struct rockchip_pmu *pmu = pd->pmu;
+ u32 pd_req_offset = pd_info->req_offset;
unsigned int target_ack;
unsigned int val;
bool is_idle;
@@ -276,11 +301,11 @@ static int rockchip_pmu_set_idle_request(struct rockchip_pm_domain *pd,
if (pd_info->req_mask == 0)
return 0;
else if (pd_info->req_w_mask)
- regmap_write(pmu->regmap, pmu->info->req_offset,
+ regmap_write(pmu->regmap, pmu->info->req_offset + pd_req_offset,
idle ? (pd_info->req_mask | pd_info->req_w_mask) :
pd_info->req_w_mask);
else
- regmap_update_bits(pmu->regmap, pmu->info->req_offset,
+ regmap_update_bits(pmu->regmap, pmu->info->req_offset + pd_req_offset,
pd_info->req_mask, idle ? -1U : 0);
wmb();
@@ -363,6 +388,12 @@ static bool rockchip_pmu_domain_is_on(struct rockchip_pm_domain *pd)
struct rockchip_pmu *pmu = pd->pmu;
unsigned int val;
+ if (pd->info->repair_status_mask) {
+ regmap_read(pmu->regmap, pmu->info->repair_status_offset, &val);
+ /* 1'b1: power on, 1'b0: power off */
+ return val & pd->info->repair_status_mask;
+ }
+
/* check idle status for idle-only domains */
if (pd->info->status_mask == 0)
return !rockchip_pmu_domain_is_idle(pd);
@@ -378,16 +409,17 @@ static void rockchip_do_pmu_set_power_domain(struct rockchip_pm_domain *pd,
{
struct rockchip_pmu *pmu = pd->pmu;
struct generic_pm_domain *genpd = &pd->genpd;
+ u32 pd_pwr_offset = pd->info->pwr_offset;
bool is_on;
if (pd->info->pwr_mask == 0)
return;
else if (pd->info->pwr_w_mask)
- regmap_write(pmu->regmap, pmu->info->pwr_offset,
+ regmap_write(pmu->regmap, pmu->info->pwr_offset + pd_pwr_offset,
on ? pd->info->pwr_w_mask :
(pd->info->pwr_mask | pd->info->pwr_w_mask));
else
- regmap_update_bits(pmu->regmap, pmu->info->pwr_offset,
+ regmap_update_bits(pmu->regmap, pmu->info->pwr_offset + pd_pwr_offset,
pd->info->pwr_mask, on ? 0 : -1U);
wmb();
@@ -514,6 +546,9 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu,
node, id);
return -EINVAL;
}
+ /* RK3588 has domains with two parents (RKVDEC0/RKVDEC1) */
+ if (pmu->genpd_data.domains[id])
+ return 0;
pd_info = &pmu->info->domain_info[id];
if (!pd_info) {
@@ -974,6 +1009,38 @@ static const struct rockchip_domain_info rk3568_pm_domains[] = {
[RK3568_PD_PIPE] = DOMAIN_RK3568("pipe", BIT(8), BIT(11), false),
};
+static const struct rockchip_domain_info rk3588_pm_domains[] = {
+ [RK3588_PD_GPU] = DOMAIN_RK3588("gpu", 0x0, BIT(0), 0, BIT(1), 0x0, BIT(0), BIT(0), false),
+ [RK3588_PD_NPU] = DOMAIN_RK3588("npu", 0x0, BIT(1), BIT(1), 0, 0x0, 0, 0, false),
+ [RK3588_PD_VCODEC] = DOMAIN_RK3588("vcodec", 0x0, BIT(2), BIT(2), 0, 0x0, 0, 0, false),
+ [RK3588_PD_NPUTOP] = DOMAIN_RK3588("nputop", 0x0, BIT(3), 0, BIT(2), 0x0, BIT(1), BIT(1), false),
+ [RK3588_PD_NPU1] = DOMAIN_RK3588("npu1", 0x0, BIT(4), 0, BIT(3), 0x0, BIT(2), BIT(2), false),
+ [RK3588_PD_NPU2] = DOMAIN_RK3588("npu2", 0x0, BIT(5), 0, BIT(4), 0x0, BIT(3), BIT(3), false),
+ [RK3588_PD_VENC0] = DOMAIN_RK3588("venc0", 0x0, BIT(6), 0, BIT(5), 0x0, BIT(4), BIT(4), false),
+ [RK3588_PD_VENC1] = DOMAIN_RK3588("venc1", 0x0, BIT(7), 0, BIT(6), 0x0, BIT(5), BIT(5), false),
+ [RK3588_PD_RKVDEC0] = DOMAIN_RK3588("rkvdec0", 0x0, BIT(8), 0, BIT(7), 0x0, BIT(6), BIT(6), false),
+ [RK3588_PD_RKVDEC1] = DOMAIN_RK3588("rkvdec1", 0x0, BIT(9), 0, BIT(8), 0x0, BIT(7), BIT(7), false),
+ [RK3588_PD_VDPU] = DOMAIN_RK3588("vdpu", 0x0, BIT(10), 0, BIT(9), 0x0, BIT(8), BIT(8), false),
+ [RK3588_PD_RGA30] = DOMAIN_RK3588("rga30", 0x0, BIT(11), 0, BIT(10), 0x0, 0, 0, false),
+ [RK3588_PD_AV1] = DOMAIN_RK3588("av1", 0x0, BIT(12), 0, BIT(11), 0x0, BIT(9), BIT(9), false),
+ [RK3588_PD_VI] = DOMAIN_RK3588("vi", 0x0, BIT(13), 0, BIT(12), 0x0, BIT(10), BIT(10), false),
+ [RK3588_PD_FEC] = DOMAIN_RK3588("fec", 0x0, BIT(14), 0, BIT(13), 0x0, 0, 0, false),
+ [RK3588_PD_ISP1] = DOMAIN_RK3588("isp1", 0x0, BIT(15), 0, BIT(14), 0x0, BIT(11), BIT(11), false),
+ [RK3588_PD_RGA31] = DOMAIN_RK3588("rga31", 0x4, BIT(0), 0, BIT(15), 0x0, BIT(12), BIT(12), false),
+ [RK3588_PD_VOP] = DOMAIN_RK3588("vop", 0x4, BIT(1), 0, BIT(16), 0x0, BIT(13) | BIT(14), BIT(13) | BIT(14), false),
+ [RK3588_PD_VO0] = DOMAIN_RK3588("vo0", 0x4, BIT(2), 0, BIT(17), 0x0, BIT(15), BIT(15), false),
+ [RK3588_PD_VO1] = DOMAIN_RK3588("vo1", 0x4, BIT(3), 0, BIT(18), 0x4, BIT(0), BIT(16), false),
+ [RK3588_PD_AUDIO] = DOMAIN_RK3588("audio", 0x4, BIT(4), 0, BIT(19), 0x4, BIT(1), BIT(17), false),
+ [RK3588_PD_PHP] = DOMAIN_RK3588("php", 0x4, BIT(5), 0, BIT(20), 0x4, BIT(5), BIT(21), false),
+ [RK3588_PD_GMAC] = DOMAIN_RK3588("gmac", 0x4, BIT(6), 0, BIT(21), 0x0, 0, 0, false),
+ [RK3588_PD_PCIE] = DOMAIN_RK3588("pcie", 0x4, BIT(7), 0, BIT(22), 0x0, 0, 0, true),
+ [RK3588_PD_NVM] = DOMAIN_RK3588("nvm", 0x4, BIT(8), BIT(24), 0, 0x4, BIT(2), BIT(18), false),
+ [RK3588_PD_NVM0] = DOMAIN_RK3588("nvm0", 0x4, BIT(9), 0, BIT(23), 0x0, 0, 0, false),
+ [RK3588_PD_SDIO] = DOMAIN_RK3588("sdio", 0x4, BIT(10), 0, BIT(24), 0x4, BIT(3), BIT(19), false),
+ [RK3588_PD_USB] = DOMAIN_RK3588("usb", 0x4, BIT(11), 0, BIT(25), 0x4, BIT(4), BIT(20), true),
+ [RK3588_PD_SDMMC] = DOMAIN_RK3588("sdmmc", 0x4, BIT(13), 0, BIT(26), 0x0, 0, 0, false),
+};
+
static const struct rockchip_pmu_info px30_pmu = {
.pwr_offset = 0x18,
.status_offset = 0x20,
@@ -1120,6 +1187,18 @@ static const struct rockchip_pmu_info rk3568_pmu = {
.domain_info = rk3568_pm_domains,
};
+static const struct rockchip_pmu_info rk3588_pmu = {
+ .pwr_offset = 0x14c,
+ .status_offset = 0x180,
+ .req_offset = 0x10c,
+ .idle_offset = 0x120,
+ .ack_offset = 0x118,
+ .repair_status_offset = 0x290,
+
+ .num_domains = ARRAY_SIZE(rk3588_pm_domains),
+ .domain_info = rk3588_pm_domains,
+};
+
static const struct of_device_id rockchip_pm_domain_dt_match[] = {
{
.compatible = "rockchip,px30-power-controller",
@@ -1169,6 +1248,10 @@ static const struct of_device_id rockchip_pm_domain_dt_match[] = {
.compatible = "rockchip,rk3568-power-controller",
.data = (void *)&rk3568_pmu,
},
+ {
+ .compatible = "rockchip,rk3588-power-controller",
+ .data = (void *)&rk3588_pmu,
+ },
{ /* sentinel */ },
};
--
2.35.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 4/6] dt-bindings: mfd: syscon: Add rk3388 QoS register compatible
2022-06-23 16:23 ` [PATCH 4/6] dt-bindings: mfd: syscon: Add rk3388 QoS register compatible Sebastian Reichel
@ 2022-06-23 16:27 ` Christopher Obbard
2022-06-23 16:28 ` Christopher Obbard
1 sibling, 0 replies; 13+ messages in thread
From: Christopher Obbard @ 2022-06-23 16:27 UTC (permalink / raw)
To: Sebastian Reichel, Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, kernel
On Thu, 2022-06-23 at 18:23 +0200, Sebastian Reichel wrote:
> Document rk3368 compatible for QoS registers.
Hey Sebastian,
Looks like this (and the patch subject) should instead refer to the
rk3588 ?
Thanks!
Chris
>
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> ---
> Documentation/devicetree/bindings/mfd/syscon.yaml | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml
> b/Documentation/devicetree/bindings/mfd/syscon.yaml
> index fb784045013f..ff1a7aae33f2 100644
> --- a/Documentation/devicetree/bindings/mfd/syscon.yaml
> +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml
> @@ -59,6 +59,7 @@ properties:
> - rockchip,rk3368-qos
> - rockchip,rk3399-qos
> - rockchip,rk3568-qos
> + - rockchip,rk3588-qos
> - samsung,exynos3-sysreg
> - samsung,exynos4-sysreg
> - samsung,exynos5-sysreg
> --
> 2.35.1
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/6] dt-bindings: mfd: syscon: Add rk3388 QoS register compatible
2022-06-23 16:23 ` [PATCH 4/6] dt-bindings: mfd: syscon: Add rk3388 QoS register compatible Sebastian Reichel
2022-06-23 16:27 ` Christopher Obbard
@ 2022-06-23 16:28 ` Christopher Obbard
1 sibling, 0 replies; 13+ messages in thread
From: Christopher Obbard @ 2022-06-23 16:28 UTC (permalink / raw)
To: Sebastian Reichel, Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, kernel
On Thu, 2022-06-23 at 18:23 +0200, Sebastian Reichel wrote:
> Document rk3368 compatible for QoS registers.
Hey Sebastian,
Also looks looks like this (and the patch subject) should instead refer
to the rk3588 ?
Thanks!
Chris
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> ---
> Documentation/devicetree/bindings/mfd/syscon.yaml | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml
> b/Documentation/devicetree/bindings/mfd/syscon.yaml
> index fb784045013f..ff1a7aae33f2 100644
> --- a/Documentation/devicetree/bindings/mfd/syscon.yaml
> +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml
> @@ -59,6 +59,7 @@ properties:
> - rockchip,rk3368-qos
> - rockchip,rk3399-qos
> - rockchip,rk3568-qos
> + - rockchip,rk3588-qos
> - samsung,exynos3-sysreg
> - samsung,exynos4-sysreg
> - samsung,exynos5-sysreg
> --
> 2.35.1
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/6] dt-bindings: arm: rockchip: add rk3388 compatible string to pmu.yaml
2022-06-23 16:23 ` [PATCH 1/6] dt-bindings: arm: rockchip: add rk3388 compatible string to pmu.yaml Sebastian Reichel
@ 2022-06-23 16:29 ` Christopher Obbard
0 siblings, 0 replies; 13+ messages in thread
From: Christopher Obbard @ 2022-06-23 16:29 UTC (permalink / raw)
To: Sebastian Reichel, Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, kernel
On Thu, 2022-06-23 at 18:23 +0200, Sebastian Reichel wrote:
> Add the compatible for the pmu mfd on rk3388.
Hey Sebastian,
Also looks looks like this (and the patch subject) should instead refer
to the rk3588 ?
Thanks!
Chris
>
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> ---
> Documentation/devicetree/bindings/arm/rockchip/pmu.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml
> b/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml
> index 5ece38065e54..4c645049c15b 100644
> --- a/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml
> +++ b/Documentation/devicetree/bindings/arm/rockchip/pmu.yaml
> @@ -25,6 +25,7 @@ select:
> - rockchip,rk3368-pmu
> - rockchip,rk3399-pmu
> - rockchip,rk3568-pmu
> + - rockchip,rk3588-pmu
>
> required:
> - compatible
> @@ -39,6 +40,7 @@ properties:
> - rockchip,rk3368-pmu
> - rockchip,rk3399-pmu
> - rockchip,rk3568-pmu
> + - rockchip,rk3588-pmu
> - const: syscon
> - const: simple-mfd
>
> --
> 2.35.1
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/6] dt-bindings: add power-domain header for rk3588
2022-06-23 16:23 ` [PATCH 2/6] dt-bindings: add power-domain header for rk3588 Sebastian Reichel
@ 2022-06-30 22:04 ` Rob Herring
0 siblings, 0 replies; 13+ messages in thread
From: Rob Herring @ 2022-06-30 22:04 UTC (permalink / raw)
To: Sebastian Reichel
Cc: Heiko Stuebner, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Finley Xiao, kernel
On Thu, Jun 23, 2022 at 06:23:05PM +0200, Sebastian Reichel wrote:
> From: Finley Xiao <finley.xiao@rock-chips.com>
>
> According to a description from TRM, add all the power domains.
>
> Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> ---
> include/dt-bindings/power/rk3588-power.h | 69 ++++++++++++++++++++++++
> 1 file changed, 69 insertions(+)
> create mode 100644 include/dt-bindings/power/rk3588-power.h
>
> diff --git a/include/dt-bindings/power/rk3588-power.h b/include/dt-bindings/power/rk3588-power.h
> new file mode 100644
> index 000000000000..69f7e9060250
> --- /dev/null
> +++ b/include/dt-bindings/power/rk3588-power.h
> @@ -0,0 +1,69 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
Dual license please. It would be nice to get agreement from Rockchip on
this and *all* DT headers.
> +#ifndef __DT_BINDINGS_POWER_RK3588_POWER_H__
> +#define __DT_BINDINGS_POWER_RK3588_POWER_H__
> +
> +/* VD_LITDSU */
> +#define RK3588_PD_CPU_0 0
> +#define RK3588_PD_CPU_1 1
> +#define RK3588_PD_CPU_2 2
> +#define RK3588_PD_CPU_3 3
> +
> +/* VD_BIGCORE0 */
> +#define RK3588_PD_CPU_4 4
> +#define RK3588_PD_CPU_5 5
> +
> +/* VD_BIGCORE1 */
> +#define RK3588_PD_CPU_6 6
> +#define RK3588_PD_CPU_7 7
> +
> +/* VD_NPU */
> +#define RK3588_PD_NPU 8
> +#define RK3588_PD_NPUTOP 9
> +#define RK3588_PD_NPU1 10
> +#define RK3588_PD_NPU2 11
> +
> +/* VD_GPU */
> +#define RK3588_PD_GPU 12
> +
> +/* VD_VCODEC */
> +#define RK3588_PD_VCODEC 13
> +#define RK3588_PD_RKVDEC0 14
> +#define RK3588_PD_RKVDEC1 15
> +#define RK3588_PD_VENC0 16
> +#define RK3588_PD_VENC1 17
> +
> +/* VD_DD01 */
> +#define RK3588_PD_DDR01 18
> +
> +/* VD_DD23 */
> +#define RK3588_PD_DDR23 19
> +
> +/* VD_LOGIC */
> +#define RK3588_PD_CENTER 20
> +#define RK3588_PD_VDPU 21
> +#define RK3588_PD_RGA30 22
> +#define RK3588_PD_AV1 23
> +#define RK3588_PD_VOP 24
> +#define RK3588_PD_VO0 25
> +#define RK3588_PD_VO1 26
> +#define RK3588_PD_VI 27
> +#define RK3588_PD_ISP1 28
> +#define RK3588_PD_FEC 29
> +#define RK3588_PD_RGA31 30
> +#define RK3588_PD_USB 31
> +#define RK3588_PD_PHP 32
> +#define RK3588_PD_GMAC 33
> +#define RK3588_PD_PCIE 34
> +#define RK3588_PD_NVM 35
> +#define RK3588_PD_NVM0 36
> +#define RK3588_PD_SDIO 37
> +#define RK3588_PD_AUDIO 38
> +#define RK3588_PD_SECURE 39
> +#define RK3588_PD_SDMMC 40
> +#define RK3588_PD_CRYPTO 41
> +#define RK3588_PD_BUS 42
> +
> +/* VD_PMU */
> +#define RK3588_PD_PMU1 43
> +
> +#endif
> --
> 2.35.1
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/6] dt-bindings: power: rockchip: Add bindings for rk3588
2022-06-23 16:23 ` [PATCH 3/6] dt-bindings: power: rockchip: Add bindings " Sebastian Reichel
@ 2022-06-30 22:04 ` Rob Herring
0 siblings, 0 replies; 13+ messages in thread
From: Rob Herring @ 2022-06-30 22:04 UTC (permalink / raw)
To: Sebastian Reichel
Cc: linux-arm-kernel, Rob Herring, devicetree, Krzysztof Kozlowski,
Heiko Stuebner, linux-rockchip, kernel
On Thu, 23 Jun 2022 18:23:06 +0200, Sebastian Reichel wrote:
> Add the compatible string for RK3588 SoC.
>
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> ---
> .../devicetree/bindings/power/rockchip,power-controller.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>
Acked-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 0/6] RK3588 Power Domain Support
@ 2022-08-31 18:26 Sebastian Reichel
0 siblings, 0 replies; 13+ messages in thread
From: Sebastian Reichel @ 2022-08-31 18:26 UTC (permalink / raw)
To: Heiko Stuebner
Cc: Rob Herring, Krzysztof Kozlowski, linux-rockchip,
linux-arm-kernel, devicetree, Sebastian Reichel, kernel
This adds power domain support for the new RK3588(s) SoC
series. The series has been tested with ethernet on the
RK3588 EVB1 board.
Unchanged:
* DT header has not been dual licensed (no feedback from Rockchip)
Changes since PATCHv1:
* https://lore.kernel.org/all/20220623162309.243766-1-sebastian.reichel@collabora.com/
* Rebased to v6.0-rc1
* Fixed typos when referencing rk3588
* Collected Acked-by for the DT binding
-- Sebastian
Elaine Zhang (1):
soc: rockchip: power-domain: do not enable PD
Finley Xiao (2):
dt-bindings: add power-domain header for rk3588
soc: rockchip: power-domain: add power domain support for rk3588
Sebastian Reichel (3):
dt-bindings: arm: rockchip: add rk5388 compatible string to pmu.yaml
dt-bindings: power: rockchip: Add bindings for rk3588
dt-bindings: mfd: syscon: Add rk3588 QoS register compatible
.../devicetree/bindings/arm/rockchip/pmu.yaml | 2 +
.../devicetree/bindings/mfd/syscon.yaml | 1 +
.../power/rockchip,power-controller.yaml | 2 +
drivers/soc/rockchip/pm_domains.c | 101 +++++++++++++++---
include/dt-bindings/power/rk3588-power.h | 69 ++++++++++++
5 files changed, 162 insertions(+), 13 deletions(-)
create mode 100644 include/dt-bindings/power/rk3588-power.h
--
2.35.1
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-08-31 18:31 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-23 16:23 [PATCH 0/6] RK3588 Power Domain Support Sebastian Reichel
2022-06-23 16:23 ` [PATCH 1/6] dt-bindings: arm: rockchip: add rk3388 compatible string to pmu.yaml Sebastian Reichel
2022-06-23 16:29 ` Christopher Obbard
2022-06-23 16:23 ` [PATCH 2/6] dt-bindings: add power-domain header for rk3588 Sebastian Reichel
2022-06-30 22:04 ` Rob Herring
2022-06-23 16:23 ` [PATCH 3/6] dt-bindings: power: rockchip: Add bindings " Sebastian Reichel
2022-06-30 22:04 ` Rob Herring
2022-06-23 16:23 ` [PATCH 4/6] dt-bindings: mfd: syscon: Add rk3388 QoS register compatible Sebastian Reichel
2022-06-23 16:27 ` Christopher Obbard
2022-06-23 16:28 ` Christopher Obbard
2022-06-23 16:23 ` [PATCH 5/6] soc: rockchip: power-domain: do not enable PD Sebastian Reichel
2022-06-23 16:23 ` [PATCH 6/6] soc: rockchip: power-domain: add power domain support for rk3588 Sebastian Reichel
2022-08-31 18:26 [PATCH 0/6] RK3588 Power Domain Support Sebastian Reichel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).