* [PATCH v2 0/5] rockchip: Add power controller support for RK3528
@ 2025-07-23 8:56 Jonas Karlman
2025-07-23 8:56 ` [PATCH v2 1/5] dt-bindings: gpio: rockchip: Allow use of a power-domain Jonas Karlman
` (5 more replies)
0 siblings, 6 replies; 13+ messages in thread
From: Jonas Karlman @ 2025-07-23 8:56 UTC (permalink / raw)
To: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: Yao Zi, Chukun Pan, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman
The Rockchip RK3528 support multiple power domains, one PD_GPU that can
fully be powered down, and other that can be idle requested.
Vendor kernel flag all power domains on RK3528 as always-on, this takes
a different route and instead tries to describe all devices power-domain
in the device tree, even for controllers with unsupported runtime status.
The PD_RKVDEC is used by RKVDEC and DDRPHY CRU, and is kept disabled to
prevent a full system reset when trying to read current rate of the
SCMI_CLK_DDR clock.
pm_genpd_summary on a Radxa E20C after this:
domain status children performance
/device runtime status managed by
------------------------------------------------------------------------------
vpu on 0
ffaf0000.gpio unsupported 0 SW
ffb10000.gpio unsupported 0 SW
ffbe0000.ethernet active 0 SW
ffae0000.adc unsupported 0 SW
ffbf0000.mmc suspended 0 SW
vo on 0
ffb00000.gpio unsupported 0 SW
ffc30000.mmc suspended 0 SW
venc on 0
ffb20000.gpio unsupported 0 SW
ffa58000.i2c unsupported 0 SW
gpu off-0 0
ff700000.gpu suspended 0 SW
Changes in v2:
- Drop already applied patches
- Add snps-dw-apb-uart dt-bindings patch
- Update commit messages
This series depend on the patch "arm64: dts: rockchip: convert rk3528
power-domains to dt-binding constants" [1] for a clean apply.
[1] https://lore.kernel.org/r/20250620201715.1572609-1-heiko@sntech.de
Jonas Karlman (5):
dt-bindings: gpio: rockchip: Allow use of a power-domain
dt-bindings: i2c: i2c-rk3x: Allow use of a power-domain
dt-bindings: iio: adc: rockchip-saradc: Allow use of a power-domain
dt-bindings: serial: snps-dw-apb-uart: Allow use of a power-domain
arm64: dts: rockchip: Enable more power domains for RK3528
.../bindings/gpio/rockchip,gpio-bank.yaml | 3 ++
.../devicetree/bindings/i2c/i2c-rk3x.yaml | 3 ++
.../bindings/iio/adc/rockchip-saradc.yaml | 3 ++
.../bindings/serial/snps-dw-apb-uart.yaml | 3 ++
arch/arm64/boot/dts/rockchip/rk3528.dtsi | 30 +++++++++++++++++--
5 files changed, 39 insertions(+), 3 deletions(-)
--
2.50.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/5] dt-bindings: gpio: rockchip: Allow use of a power-domain
2025-07-23 8:56 [PATCH v2 0/5] rockchip: Add power controller support for RK3528 Jonas Karlman
@ 2025-07-23 8:56 ` Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 8:56 ` [PATCH v2 2/5] dt-bindings: i2c: i2c-rk3x: " Jonas Karlman
` (4 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Jonas Karlman @ 2025-07-23 8:56 UTC (permalink / raw)
To: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Linus Walleij, Bartosz Golaszewski
Cc: Yao Zi, Chukun Pan, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman, linux-gpio
The GPIO controllers in most Rockchip SoCs are part of power domains
that are always powered on, i.e. PD_BUS or PD_PMU. These always powered
on power domains have typically not been described in the device tree.
Because these power domains have been left out of the device tree there
has not been any real need to properly describe the GPIO controllers
power domain.
On RK3528 the GPIO controllers are spread out among the described
PD_RKVENC, PD_VO and PD_VPU power domains. However, one GPIO controller
belong to an undescribed always powered on power domain.
Add support to describe an optional power-domains for the GPIO
controllers in Rockchip SoCs.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: Update commit message
---
Documentation/devicetree/bindings/gpio/rockchip,gpio-bank.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/gpio/rockchip,gpio-bank.yaml b/Documentation/devicetree/bindings/gpio/rockchip,gpio-bank.yaml
index d76987ce8e50..bdd83f42615c 100644
--- a/Documentation/devicetree/bindings/gpio/rockchip,gpio-bank.yaml
+++ b/Documentation/devicetree/bindings/gpio/rockchip,gpio-bank.yaml
@@ -41,6 +41,9 @@ properties:
"#interrupt-cells":
const: 2
+ power-domains:
+ maxItems: 1
+
patternProperties:
"^.+-hog(-[0-9]+)?$":
type: object
--
2.50.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/5] dt-bindings: i2c: i2c-rk3x: Allow use of a power-domain
2025-07-23 8:56 [PATCH v2 0/5] rockchip: Add power controller support for RK3528 Jonas Karlman
2025-07-23 8:56 ` [PATCH v2 1/5] dt-bindings: gpio: rockchip: Allow use of a power-domain Jonas Karlman
@ 2025-07-23 8:56 ` Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 22:45 ` Andi Shyti
2025-07-23 8:56 ` [PATCH v2 3/5] dt-bindings: iio: adc: rockchip-saradc: " Jonas Karlman
` (3 subsequent siblings)
5 siblings, 2 replies; 13+ messages in thread
From: Jonas Karlman @ 2025-07-23 8:56 UTC (permalink / raw)
To: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Andi Shyti
Cc: Yao Zi, Chukun Pan, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman, linux-i2c
The I2C controllers in most Rockchip SoCs are part of power domains that
are always powered on, i.e. PD_BUS or PD_PMU. These always powered
on power domains have typically not been described in the device tree.
Because these power domains have been left out of the device tree there
has not been any real need to properly describe the I2C controllers
power domain.
On RK3528 the I2C controllers are spread out among the described
PD_RKVENC, PD_VO and PD_VPU power domains. However, one I2C controller
belong to an undescribed always powered on power domain.
Add support to describe an optional power-domains for the I2C
controllers in Rockchip SoCs.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: Update commit message
---
Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml b/Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml
index 2f1e97969c3f..4ac5a40a3886 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml
+++ b/Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml
@@ -105,6 +105,9 @@ properties:
(t(f) in the I2C specification). If not specified we will use the SCL
value since they are the same in nearly all cases.
+ power-domains:
+ maxItems: 1
+
required:
- compatible
- reg
--
2.50.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/5] dt-bindings: iio: adc: rockchip-saradc: Allow use of a power-domain
2025-07-23 8:56 [PATCH v2 0/5] rockchip: Add power controller support for RK3528 Jonas Karlman
2025-07-23 8:56 ` [PATCH v2 1/5] dt-bindings: gpio: rockchip: Allow use of a power-domain Jonas Karlman
2025-07-23 8:56 ` [PATCH v2 2/5] dt-bindings: i2c: i2c-rk3x: " Jonas Karlman
@ 2025-07-23 8:56 ` Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 15:50 ` Jonathan Cameron
2025-07-23 8:56 ` [PATCH v2 4/5] dt-bindings: serial: snps-dw-apb-uart: " Jonas Karlman
` (2 subsequent siblings)
5 siblings, 2 replies; 13+ messages in thread
From: Jonas Karlman @ 2025-07-23 8:56 UTC (permalink / raw)
To: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko
Cc: Yao Zi, Chukun Pan, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman, linux-iio
The SARADC controller in most Rockchip SoCs are part of power domains
that are always powered on, i.e. PD_BUS or PD_PERI. These always powered
on power domains have typically not been described in the device tree.
Because these power domains have been left out of the device tree there
has not been any real need to properly describe the power domain of the
SARADC controller.
On RK3528 the SARADC controller is part of the PD_VPU power domain.
Add support to describe an optional power-domains for the SARADC
controller in Rockchip SoCs.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: Update commit message
---
Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
index 41e0c56ef8e3..f776041fd08f 100644
--- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
@@ -47,6 +47,9 @@ properties:
- const: saradc
- const: apb_pclk
+ power-domains:
+ maxItems: 1
+
resets:
maxItems: 1
--
2.50.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/5] dt-bindings: serial: snps-dw-apb-uart: Allow use of a power-domain
2025-07-23 8:56 [PATCH v2 0/5] rockchip: Add power controller support for RK3528 Jonas Karlman
` (2 preceding siblings ...)
2025-07-23 8:56 ` [PATCH v2 3/5] dt-bindings: iio: adc: rockchip-saradc: " Jonas Karlman
@ 2025-07-23 8:56 ` Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 8:56 ` [PATCH v2 5/5] arm64: dts: rockchip: Enable more power domains for RK3528 Jonas Karlman
2025-07-24 9:55 ` (subset) [PATCH v2 0/5] rockchip: Add power controller support " Bartosz Golaszewski
5 siblings, 1 reply; 13+ messages in thread
From: Jonas Karlman @ 2025-07-23 8:56 UTC (permalink / raw)
To: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Greg Kroah-Hartman, Jiri Slaby
Cc: Yao Zi, Chukun Pan, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman, linux-serial
The UART controllers in most Rockchip SoCs are part of power domains
that are always powered on. These always powered on power domains have
typically not been described in the device tree.
Because these power domains have been left out of the device tree there
has not been any real need to properly describe the UART controllers
power domain of Rockchip SoCs.
On Rockchip RK3528 the UART controllers are spread out among the
described PD_RKVENC, PD_VO and PD_VPU power domains. However, one UART
controller belong to an undescribed always powered on power domain.
Add support to describe an optional power-domains for the UART
controllers.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: New patch
---
Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml
index 8f1b7f704c5b..cb9da6c97afc 100644
--- a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml
+++ b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml
@@ -108,6 +108,9 @@ properties:
parameter. Define this if your UART does not implement the busy functionality.
type: boolean
+ power-domains:
+ maxItems: 1
+
resets:
minItems: 1
maxItems: 2
--
2.50.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 5/5] arm64: dts: rockchip: Enable more power domains for RK3528
2025-07-23 8:56 [PATCH v2 0/5] rockchip: Add power controller support for RK3528 Jonas Karlman
` (3 preceding siblings ...)
2025-07-23 8:56 ` [PATCH v2 4/5] dt-bindings: serial: snps-dw-apb-uart: " Jonas Karlman
@ 2025-07-23 8:56 ` Jonas Karlman
2025-07-24 9:55 ` (subset) [PATCH v2 0/5] rockchip: Add power controller support " Bartosz Golaszewski
5 siblings, 0 replies; 13+ messages in thread
From: Jonas Karlman @ 2025-07-23 8:56 UTC (permalink / raw)
To: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: Yao Zi, Chukun Pan, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman
Describe device power-domains and enable the PD_RKVENC, PD_VO and PD_VPU
power-domains on RK3528.
The PD_RKVDEC is used by RKVDEC and DDRPHY CRU, and is kept disabled to
prevent a full system reset trying to read the rate of the SCMI_CLK_DDR
clock.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
Changes in v2:
- Add power-domains for spi nodes
- Rebased on top of next-20250722
---
arch/arm64/boot/dts/rockchip/rk3528.dtsi | 30 +++++++++++++++++++++---
1 file changed, 27 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3528.dtsi b/arch/arm64/boot/dts/rockchip/rk3528.dtsi
index 54fa8089c4d3..85bc3f5aa2c7 100644
--- a/arch/arm64/boot/dts/rockchip/rk3528.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3528.dtsi
@@ -155,6 +155,7 @@ gpio1: gpio@ffaf0000 {
gpio-ranges = <&pinctrl 0 32 32>;
interrupt-controller;
#interrupt-cells = <2>;
+ power-domains = <&power RK3528_PD_VPU>;
};
gpio2: gpio@ffb00000 {
@@ -167,6 +168,7 @@ gpio2: gpio@ffb00000 {
gpio-ranges = <&pinctrl 0 64 32>;
interrupt-controller;
#interrupt-cells = <2>;
+ power-domains = <&power RK3528_PD_VO>;
};
gpio3: gpio@ffb10000 {
@@ -179,6 +181,7 @@ gpio3: gpio@ffb10000 {
gpio-ranges = <&pinctrl 0 96 32>;
interrupt-controller;
#interrupt-cells = <2>;
+ power-domains = <&power RK3528_PD_VPU>;
};
gpio4: gpio@ffb20000 {
@@ -191,6 +194,7 @@ gpio4: gpio@ffb20000 {
gpio-ranges = <&pinctrl 0 128 32>;
interrupt-controller;
#interrupt-cells = <2>;
+ power-domains = <&power RK3528_PD_RKVENC>;
};
};
@@ -501,7 +505,6 @@ power-domain@RK3528_PD_RKVENC {
reg = <RK3528_PD_RKVENC>;
pm_qos = <&qos_rkvenc>;
#power-domain-cells = <0>;
- status = "disabled";
};
power-domain@RK3528_PD_VO {
reg = <RK3528_PD_VO>;
@@ -515,7 +518,6 @@ power-domain@RK3528_PD_VO {
<&qos_vdpp>,
<&qos_vop>;
#power-domain-cells = <0>;
- status = "disabled";
};
power-domain@RK3528_PD_VPU {
reg = <RK3528_PD_VPU>;
@@ -529,7 +531,6 @@ power-domain@RK3528_PD_VPU {
<&qos_usb3otg>,
<&qos_vpu>;
#power-domain-cells = <0>;
- status = "disabled";
};
};
};
@@ -571,6 +572,7 @@ spi0: spi@ff9c0000 {
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 25>, <&dmac 24>;
dma-names = "tx", "rx";
+ power-domains = <&power RK3528_PD_RKVENC>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -585,6 +587,7 @@ spi1: spi@ff9d0000 {
interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 31>, <&dmac 30>;
dma-names = "tx", "rx";
+ power-domains = <&power RK3528_PD_VPU>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -609,6 +612,7 @@ uart1: serial@ff9f8000 {
clock-names = "baudclk", "apb_pclk";
interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 11>, <&dmac 10>;
+ power-domains = <&power RK3528_PD_RKVENC>;
reg-io-width = <4>;
reg-shift = <2>;
status = "disabled";
@@ -621,6 +625,7 @@ uart2: serial@ffa00000 {
clock-names = "baudclk", "apb_pclk";
interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 13>, <&dmac 12>;
+ power-domains = <&power RK3528_PD_VPU>;
reg-io-width = <4>;
reg-shift = <2>;
status = "disabled";
@@ -633,6 +638,7 @@ uart3: serial@ffa08000 {
clock-names = "baudclk", "apb_pclk";
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 15>, <&dmac 14>;
+ power-domains = <&power RK3528_PD_RKVENC>;
reg-io-width = <4>;
reg-shift = <2>;
status = "disabled";
@@ -645,6 +651,7 @@ uart4: serial@ffa10000 {
clock-names = "baudclk", "apb_pclk";
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 17>, <&dmac 16>;
+ power-domains = <&power RK3528_PD_VO>;
reg-io-width = <4>;
reg-shift = <2>;
status = "disabled";
@@ -657,6 +664,7 @@ uart5: serial@ffa18000 {
clock-names = "baudclk", "apb_pclk";
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 19>, <&dmac 18>;
+ power-domains = <&power RK3528_PD_VPU>;
reg-io-width = <4>;
reg-shift = <2>;
status = "disabled";
@@ -669,6 +677,7 @@ uart6: serial@ffa20000 {
clock-names = "baudclk", "apb_pclk";
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 21>, <&dmac 20>;
+ power-domains = <&power RK3528_PD_VPU>;
reg-io-width = <4>;
reg-shift = <2>;
status = "disabled";
@@ -681,6 +690,7 @@ uart7: serial@ffa28000 {
clock-names = "baudclk", "apb_pclk";
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&dmac 23>, <&dmac 22>;
+ power-domains = <&power RK3528_PD_VPU>;
reg-io-width = <4>;
reg-shift = <2>;
status = "disabled";
@@ -693,6 +703,7 @@ i2c0: i2c@ffa50000 {
clocks = <&cru CLK_I2C0>, <&cru PCLK_I2C0>;
clock-names = "i2c", "pclk";
interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3528_PD_RKVENC>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -705,6 +716,7 @@ i2c1: i2c@ffa58000 {
clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
clock-names = "i2c", "pclk";
interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3528_PD_RKVENC>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -731,6 +743,7 @@ i2c3: i2c@ffa68000 {
clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>;
clock-names = "i2c", "pclk";
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3528_PD_VPU>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -745,6 +758,7 @@ i2c4: i2c@ffa70000 {
interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&i2c4_xfer>;
+ power-domains = <&power RK3528_PD_VO>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -757,6 +771,7 @@ i2c5: i2c@ffa78000 {
clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>;
clock-names = "i2c", "pclk";
interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3528_PD_VPU>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -769,6 +784,7 @@ i2c6: i2c@ffa80000 {
clocks = <&cru CLK_I2C6>, <&cru PCLK_I2C6>;
clock-names = "i2c", "pclk";
interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3528_PD_VPU>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -783,6 +799,7 @@ i2c7: i2c@ffa88000 {
interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&i2c7_xfer>;
+ power-domains = <&power RK3528_PD_VO>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@@ -874,6 +891,7 @@ saradc: adc@ffae0000 {
clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
clock-names = "saradc", "apb_pclk";
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+ power-domains = <&power RK3528_PD_VPU>;
resets = <&cru SRST_P_SARADC>;
reset-names = "saradc-apb";
#io-channel-cells = <1>;
@@ -894,6 +912,7 @@ gmac0: ethernet@ffbd0000 {
interrupt-names = "macirq", "eth_wake_irq";
phy-handle = <&rmii0_phy>;
phy-mode = "rmii";
+ power-domains = <&power RK3528_PD_VO>;
resets = <&cru SRST_A_MAC_VO>;
reset-names = "stmmaceth";
rockchip,grf = <&vo_grf>;
@@ -952,6 +971,7 @@ gmac1: ethernet@ffbe0000 {
interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "macirq", "eth_wake_irq";
+ power-domains = <&power RK3528_PD_VPU>;
resets = <&cru SRST_A_MAC>;
reset-names = "stmmaceth";
rockchip,grf = <&vpu_grf>;
@@ -1002,6 +1022,7 @@ sdhci: mmc@ffbf0000 {
pinctrl-names = "default";
pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>,
<&emmc_strb>;
+ power-domains = <&power RK3528_PD_VPU>;
resets = <&cru SRST_C_EMMC>, <&cru SRST_H_EMMC>,
<&cru SRST_A_EMMC>, <&cru SRST_B_EMMC>,
<&cru SRST_T_EMMC>;
@@ -1023,6 +1044,7 @@ sdio0: mmc@ffc10000 {
max-frequency = <200000000>;
pinctrl-names = "default";
pinctrl-0 = <&sdio0_bus4>, <&sdio0_clk>, <&sdio0_cmd>;
+ power-domains = <&power RK3528_PD_VPU>;
resets = <&cru SRST_H_SDIO0>;
reset-names = "reset";
status = "disabled";
@@ -1042,6 +1064,7 @@ sdio1: mmc@ffc20000 {
max-frequency = <200000000>;
pinctrl-names = "default";
pinctrl-0 = <&sdio1_bus4>, <&sdio1_clk>, <&sdio1_cmd>;
+ power-domains = <&power RK3528_PD_VPU>;
resets = <&cru SRST_H_SDIO1>;
reset-names = "reset";
status = "disabled";
@@ -1062,6 +1085,7 @@ sdmmc: mmc@ffc30000 {
pinctrl-names = "default";
pinctrl-0 = <&sdmmc_bus4>, <&sdmmc_clk>, <&sdmmc_cmd>,
<&sdmmc_det>;
+ power-domains = <&power RK3528_PD_VO>;
resets = <&cru SRST_H_SDMMC0>;
reset-names = "reset";
rockchip,default-sample-phase = <90>;
--
2.50.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/5] dt-bindings: gpio: rockchip: Allow use of a power-domain
2025-07-23 8:56 ` [PATCH v2 1/5] dt-bindings: gpio: rockchip: Allow use of a power-domain Jonas Karlman
@ 2025-07-23 13:47 ` Rob Herring (Arm)
0 siblings, 0 replies; 13+ messages in thread
From: Rob Herring (Arm) @ 2025-07-23 13:47 UTC (permalink / raw)
To: Jonas Karlman
Cc: linux-arm-kernel, Krzysztof Kozlowski, Yao Zi, Chukun Pan,
Bartosz Golaszewski, Linus Walleij, linux-kernel, linux-rockchip,
linux-gpio, Heiko Stuebner, devicetree, Conor Dooley
On Wed, 23 Jul 2025 08:56:43 +0000, Jonas Karlman wrote:
> The GPIO controllers in most Rockchip SoCs are part of power domains
> that are always powered on, i.e. PD_BUS or PD_PMU. These always powered
> on power domains have typically not been described in the device tree.
>
> Because these power domains have been left out of the device tree there
> has not been any real need to properly describe the GPIO controllers
> power domain.
>
> On RK3528 the GPIO controllers are spread out among the described
> PD_RKVENC, PD_VO and PD_VPU power domains. However, one GPIO controller
> belong to an undescribed always powered on power domain.
>
> Add support to describe an optional power-domains for the GPIO
> controllers in Rockchip SoCs.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> ---
> v2: Update commit message
> ---
> Documentation/devicetree/bindings/gpio/rockchip,gpio-bank.yaml | 3 +++
> 1 file changed, 3 insertions(+)
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] dt-bindings: i2c: i2c-rk3x: Allow use of a power-domain
2025-07-23 8:56 ` [PATCH v2 2/5] dt-bindings: i2c: i2c-rk3x: " Jonas Karlman
@ 2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 22:45 ` Andi Shyti
1 sibling, 0 replies; 13+ messages in thread
From: Rob Herring (Arm) @ 2025-07-23 13:47 UTC (permalink / raw)
To: Jonas Karlman
Cc: linux-arm-kernel, Yao Zi, Conor Dooley, linux-kernel, Chukun Pan,
Krzysztof Kozlowski, devicetree, linux-i2c, Heiko Stuebner,
linux-rockchip, Andi Shyti
On Wed, 23 Jul 2025 08:56:44 +0000, Jonas Karlman wrote:
> The I2C controllers in most Rockchip SoCs are part of power domains that
> are always powered on, i.e. PD_BUS or PD_PMU. These always powered
> on power domains have typically not been described in the device tree.
>
> Because these power domains have been left out of the device tree there
> has not been any real need to properly describe the I2C controllers
> power domain.
>
> On RK3528 the I2C controllers are spread out among the described
> PD_RKVENC, PD_VO and PD_VPU power domains. However, one I2C controller
> belong to an undescribed always powered on power domain.
>
> Add support to describe an optional power-domains for the I2C
> controllers in Rockchip SoCs.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> ---
> v2: Update commit message
> ---
> Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml | 3 +++
> 1 file changed, 3 insertions(+)
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/5] dt-bindings: iio: adc: rockchip-saradc: Allow use of a power-domain
2025-07-23 8:56 ` [PATCH v2 3/5] dt-bindings: iio: adc: rockchip-saradc: " Jonas Karlman
@ 2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 15:50 ` Jonathan Cameron
1 sibling, 0 replies; 13+ messages in thread
From: Rob Herring (Arm) @ 2025-07-23 13:47 UTC (permalink / raw)
To: Jonas Karlman
Cc: Yao Zi, Andy Shevchenko, Chukun Pan, Heiko Stuebner,
linux-arm-kernel, Jonathan Cameron, Conor Dooley, Nuno Sá,
linux-rockchip, David Lechner, linux-kernel, devicetree,
linux-iio, Krzysztof Kozlowski
On Wed, 23 Jul 2025 08:56:45 +0000, Jonas Karlman wrote:
> The SARADC controller in most Rockchip SoCs are part of power domains
> that are always powered on, i.e. PD_BUS or PD_PERI. These always powered
> on power domains have typically not been described in the device tree.
>
> Because these power domains have been left out of the device tree there
> has not been any real need to properly describe the power domain of the
> SARADC controller.
>
> On RK3528 the SARADC controller is part of the PD_VPU power domain.
>
> Add support to describe an optional power-domains for the SARADC
> controller in Rockchip SoCs.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> ---
> v2: Update commit message
> ---
> Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml | 3 +++
> 1 file changed, 3 insertions(+)
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 4/5] dt-bindings: serial: snps-dw-apb-uart: Allow use of a power-domain
2025-07-23 8:56 ` [PATCH v2 4/5] dt-bindings: serial: snps-dw-apb-uart: " Jonas Karlman
@ 2025-07-23 13:47 ` Rob Herring (Arm)
0 siblings, 0 replies; 13+ messages in thread
From: Rob Herring (Arm) @ 2025-07-23 13:47 UTC (permalink / raw)
To: Jonas Karlman
Cc: devicetree, Krzysztof Kozlowski, Jiri Slaby, Yao Zi,
Heiko Stuebner, Chukun Pan, linux-kernel, Greg Kroah-Hartman,
linux-serial, linux-arm-kernel, Conor Dooley, linux-rockchip
On Wed, 23 Jul 2025 08:56:46 +0000, Jonas Karlman wrote:
> The UART controllers in most Rockchip SoCs are part of power domains
> that are always powered on. These always powered on power domains have
> typically not been described in the device tree.
>
> Because these power domains have been left out of the device tree there
> has not been any real need to properly describe the UART controllers
> power domain of Rockchip SoCs.
>
> On Rockchip RK3528 the UART controllers are spread out among the
> described PD_RKVENC, PD_VO and PD_VPU power domains. However, one UART
> controller belong to an undescribed always powered on power domain.
>
> Add support to describe an optional power-domains for the UART
> controllers.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> ---
> v2: New patch
> ---
> Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml | 3 +++
> 1 file changed, 3 insertions(+)
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/5] dt-bindings: iio: adc: rockchip-saradc: Allow use of a power-domain
2025-07-23 8:56 ` [PATCH v2 3/5] dt-bindings: iio: adc: rockchip-saradc: " Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
@ 2025-07-23 15:50 ` Jonathan Cameron
1 sibling, 0 replies; 13+ messages in thread
From: Jonathan Cameron @ 2025-07-23 15:50 UTC (permalink / raw)
To: Jonas Karlman
Cc: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
David Lechner, Nuno Sá, Andy Shevchenko, Yao Zi, Chukun Pan,
devicetree, linux-rockchip, linux-arm-kernel, linux-kernel,
linux-iio
On Wed, 23 Jul 2025 08:56:45 +0000
Jonas Karlman <jonas@kwiboo.se> wrote:
> The SARADC controller in most Rockchip SoCs are part of power domains
> that are always powered on, i.e. PD_BUS or PD_PERI. These always powered
> on power domains have typically not been described in the device tree.
>
> Because these power domains have been left out of the device tree there
> has not been any real need to properly describe the power domain of the
> SARADC controller.
>
> On RK3528 the SARADC controller is part of the PD_VPU power domain.
>
> Add support to describe an optional power-domains for the SARADC
> controller in Rockchip SoCs.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Applied to the testing branch of iio.git.
I'll be rebasing on rc1 once available.
Thanks,
Jonathan
> ---
> v2: Update commit message
> ---
> Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
> index 41e0c56ef8e3..f776041fd08f 100644
> --- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
> +++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.yaml
> @@ -47,6 +47,9 @@ properties:
> - const: saradc
> - const: apb_pclk
>
> + power-domains:
> + maxItems: 1
> +
> resets:
> maxItems: 1
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] dt-bindings: i2c: i2c-rk3x: Allow use of a power-domain
2025-07-23 8:56 ` [PATCH v2 2/5] dt-bindings: i2c: i2c-rk3x: " Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
@ 2025-07-23 22:45 ` Andi Shyti
1 sibling, 0 replies; 13+ messages in thread
From: Andi Shyti @ 2025-07-23 22:45 UTC (permalink / raw)
To: Jonas Karlman
Cc: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Yao Zi, Chukun Pan, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, linux-i2c
Hi Jonas,
On Wed, Jul 23, 2025 at 08:56:44AM +0000, Jonas Karlman wrote:
> The I2C controllers in most Rockchip SoCs are part of power domains that
> are always powered on, i.e. PD_BUS or PD_PMU. These always powered
> on power domains have typically not been described in the device tree.
>
> Because these power domains have been left out of the device tree there
> has not been any real need to properly describe the I2C controllers
> power domain.
>
> On RK3528 the I2C controllers are spread out among the described
> PD_RKVENC, PD_VO and PD_VPU power domains. However, one I2C controller
> belong to an undescribed always powered on power domain.
>
> Add support to describe an optional power-domains for the I2C
> controllers in Rockchip SoCs.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
merged to i2c/i2c-host.
Thanks,
Andi
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: (subset) [PATCH v2 0/5] rockchip: Add power controller support for RK3528
2025-07-23 8:56 [PATCH v2 0/5] rockchip: Add power controller support for RK3528 Jonas Karlman
` (4 preceding siblings ...)
2025-07-23 8:56 ` [PATCH v2 5/5] arm64: dts: rockchip: Enable more power domains for RK3528 Jonas Karlman
@ 2025-07-24 9:55 ` Bartosz Golaszewski
5 siblings, 0 replies; 13+ messages in thread
From: Bartosz Golaszewski @ 2025-07-24 9:55 UTC (permalink / raw)
To: Heiko Stuebner, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jonas Karlman
Cc: Bartosz Golaszewski, Yao Zi, Chukun Pan, devicetree,
linux-rockchip, linux-arm-kernel, linux-kernel
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
On Wed, 23 Jul 2025 08:56:42 +0000, Jonas Karlman wrote:
> The Rockchip RK3528 support multiple power domains, one PD_GPU that can
> fully be powered down, and other that can be idle requested.
>
> Vendor kernel flag all power domains on RK3528 as always-on, this takes
> a different route and instead tries to describe all devices power-domain
> in the device tree, even for controllers with unsupported runtime status.
>
> [...]
Applied, thanks!
[1/5] dt-bindings: gpio: rockchip: Allow use of a power-domain
https://git.kernel.org/brgl/linux/c/cc2f156a33278d9b23b5cf8f738c55c842d0f225
Best regards,
--
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-07-24 9:55 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-23 8:56 [PATCH v2 0/5] rockchip: Add power controller support for RK3528 Jonas Karlman
2025-07-23 8:56 ` [PATCH v2 1/5] dt-bindings: gpio: rockchip: Allow use of a power-domain Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 8:56 ` [PATCH v2 2/5] dt-bindings: i2c: i2c-rk3x: " Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 22:45 ` Andi Shyti
2025-07-23 8:56 ` [PATCH v2 3/5] dt-bindings: iio: adc: rockchip-saradc: " Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 15:50 ` Jonathan Cameron
2025-07-23 8:56 ` [PATCH v2 4/5] dt-bindings: serial: snps-dw-apb-uart: " Jonas Karlman
2025-07-23 13:47 ` Rob Herring (Arm)
2025-07-23 8:56 ` [PATCH v2 5/5] arm64: dts: rockchip: Enable more power domains for RK3528 Jonas Karlman
2025-07-24 9:55 ` (subset) [PATCH v2 0/5] rockchip: Add power controller support " Bartosz Golaszewski
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).