* [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
* 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
* [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
* 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 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
* [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
* 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 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
* [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
* 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
* [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: (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 13:52 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).