* [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1
@ 2026-02-13 2:35 Shawn Lin
2026-02-13 2:35 ` [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1 Shawn Lin
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Shawn Lin @ 2026-02-13 2:35 UTC (permalink / raw)
To: Heiko Stuebner; +Cc: linux-rockchip, devicetree, linux-arm-kernel, Shawn Lin
Thus the board dts files could add property for these nodes.
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
---
arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
index 7fe9593..4fb8888 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
@@ -907,7 +907,7 @@
#size-cells = <0>;
#power-domain-cells = <0>;
- power-domain@RK3588_PD_RKVDEC0 {
+ pd_rkvdec0: power-domain@RK3588_PD_RKVDEC0 {
reg = <RK3588_PD_RKVDEC0>;
clocks = <&cru HCLK_RKVDEC0>,
<&cru HCLK_VDPU_ROOT>,
@@ -917,7 +917,7 @@
pm_qos = <&qos_rkvdec0>;
#power-domain-cells = <0>;
};
- power-domain@RK3588_PD_RKVDEC1 {
+ pd_rkvdec1: power-domain@RK3588_PD_RKVDEC1 {
reg = <RK3588_PD_RKVDEC1>;
clocks = <&cru HCLK_RKVDEC1>,
<&cru HCLK_VDPU_ROOT>,
@@ -926,7 +926,7 @@
pm_qos = <&qos_rkvdec1>;
#power-domain-cells = <0>;
};
- power-domain@RK3588_PD_VENC0 {
+ pd_venc0: power-domain@RK3588_PD_VENC0 {
reg = <RK3588_PD_VENC0>;
clocks = <&cru HCLK_RKVENC0>,
<&cru ACLK_RKVENC0>;
@@ -937,7 +937,7 @@
#size-cells = <0>;
#power-domain-cells = <0>;
- power-domain@RK3588_PD_VENC1 {
+ pd_venc1: power-domain@RK3588_PD_VENC1 {
reg = <RK3588_PD_VENC1>;
clocks = <&cru HCLK_RKVENC1>,
<&cru HCLK_RKVENC0>,
--
2.7.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1
2026-02-13 2:35 [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1 Shawn Lin
@ 2026-02-13 2:35 ` Shawn Lin
2026-02-13 2:42 ` Shawn Lin
2026-02-13 10:32 ` [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1 Chaoyi Chen
2026-02-22 22:39 ` Heiko Stuebner
2 siblings, 1 reply; 11+ messages in thread
From: Shawn Lin @ 2026-02-13 2:35 UTC (permalink / raw)
To: Heiko Stuebner; +Cc: linux-rockchip, devicetree, linux-arm-kernel, Shawn Lin
The power domains pd_rkvdec0/1 and pd_venc0/1 depend on two voltage supplies,
vdd_vdenc_s0 and vdd_vdenc_mem_s0. These supplies might be missing or cause probe
deferral. Since the Rockchip power domain management code currently supports managing
only one power supply, and both supplies belong to the same PMIC (making it highly
unlikely for one to be available while the other is not), a practical solution is
implemented.
Both supplies are configured with the boot-on and always-on properties. Only one
of them is assigned as the domain-supply for pd_rkvdec0/1 and pd_venc0/1. This allows
the power domain code to perform a nominal enable operation on this single supply,
thereby successfully acquiring a reference to both supplies (as they are from the same
PMIC). The system then relies on their boot-on and always-on flags to maintain the
correct state.
Crucially, this approach handles cases like probe deferral correctly:
if the PMIC is not yet ready, enabling the power domain will be deferred until the
necessary supplies become available.
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
---
arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts | 16 ++++++++++++++++
arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts | 17 +++++++++++++++++
2 files changed, 33 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
index c9d284c..09bc7b6 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
@@ -568,6 +568,22 @@
domain-supply = <&vdd_gpu_s0>;
};
+&pd_rkvdec0 {
+ domain-supply = <&vdd_vdenc_s0>;
+};
+
+&pd_rkvdec1 {
+ domain-supply = <&vdd_vdenc_s0>;
+};
+
+&pd_venc0 {
+ domain-supply = <&vdd_vdenc_s0>;
+};
+
+&pd_venc1 {
+ domain-supply = <&vdd_vdenc_s0>;
+};
+
&pinctrl {
audio {
hp_detect: headphone-detect {
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
index f820505..25d80b6 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
@@ -381,6 +381,22 @@
domain-supply = <&vdd_gpu_s0>;
};
+&pd_rkvdec0 {
+ domain-supply = <&vdd_vdenc_s0>;
+};
+
+&pd_rkvdec1 {
+ domain-supply = <&vdd_vdenc_s0>;
+};
+
+&pd_venc0 {
+ domain-supply = <&vdd_vdenc_s0>;
+};
+
+&pd_venc1 {
+ domain-supply = <&vdd_vdenc_s0>;
+};
+
&pinctrl {
audio {
hp_detect: headphone-detect {
@@ -580,6 +596,7 @@
vdd_gpu_mem_s0: dcdc-reg5 {
regulator-name = "vdd_gpu_mem_s0";
regulator-boot-on;
+ regulator-always-on;
regulator-min-microvolt = <675000>;
regulator-max-microvolt = <950000>;
regulator-ramp-delay = <12500>;
--
2.7.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1
2026-02-13 2:35 ` [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1 Shawn Lin
@ 2026-02-13 2:42 ` Shawn Lin
2026-02-22 13:11 ` Heiko Stuebner
0 siblings, 1 reply; 11+ messages in thread
From: Shawn Lin @ 2026-02-13 2:42 UTC (permalink / raw)
To: Heiko Stuebner, linux-rockchip; +Cc: shawn.lin, devicetree, linux-arm-kernel
在 2026/02/13 星期五 10:35, Shawn Lin 写道:
> The power domains pd_rkvdec0/1 and pd_venc0/1 depend on two voltage supplies,
> vdd_vdenc_s0 and vdd_vdenc_mem_s0. These supplies might be missing or cause probe
> deferral. Since the Rockchip power domain management code currently supports managing
> only one power supply, and both supplies belong to the same PMIC (making it highly
> unlikely for one to be available while the other is not), a practical solution is
> implemented.
>
> Both supplies are configured with the boot-on and always-on properties. Only one
> of them is assigned as the domain-supply for pd_rkvdec0/1 and pd_venc0/1. This allows
> the power domain code to perform a nominal enable operation on this single supply,
> thereby successfully acquiring a reference to both supplies (as they are from the same
> PMIC). The system then relies on their boot-on and always-on flags to maintain the
> correct state.
>
> Crucially, this approach handles cases like probe deferral correctly:
> if the PMIC is not yet ready, enabling the power domain will be deferred until the
> necessary supplies become available.
>
> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
> ---
>
> arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts | 16 ++++++++++++++++
> arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts | 17 +++++++++++++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> index c9d284c..09bc7b6 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> @@ -568,6 +568,22 @@
> domain-supply = <&vdd_gpu_s0>;
> };
>
> +&pd_rkvdec0 {
> + domain-supply = <&vdd_vdenc_s0>;
> +};
> +
> +&pd_rkvdec1 {
> + domain-supply = <&vdd_vdenc_s0>;
> +};
> +
> +&pd_venc0 {
> + domain-supply = <&vdd_vdenc_s0>;
> +};
> +
> +&pd_venc1 {
> + domain-supply = <&vdd_vdenc_s0>;
> +};
> +
> &pinctrl {
> audio {
> hp_detect: headphone-detect {
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> index f820505..25d80b6 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> @@ -381,6 +381,22 @@
> domain-supply = <&vdd_gpu_s0>;
> };
>
> +&pd_rkvdec0 {
> + domain-supply = <&vdd_vdenc_s0>;
> +};
> +
> +&pd_rkvdec1 {
> + domain-supply = <&vdd_vdenc_s0>;
> +};
> +
> +&pd_venc0 {
> + domain-supply = <&vdd_vdenc_s0>;
> +};
> +
> +&pd_venc1 {
> + domain-supply = <&vdd_vdenc_s0>;
> +};
> +
> &pinctrl {
> audio {
> hp_detect: headphone-detect {
> @@ -580,6 +596,7 @@
> vdd_gpu_mem_s0: dcdc-reg5 {
> regulator-name = "vdd_gpu_mem_s0";
> regulator-boot-on;
> + regulator-always-on;
Oops, I sent the wrong version. Should remove the this line change.
Will fix it if v2 needed.
> regulator-min-microvolt = <675000>;
> regulator-max-microvolt = <950000>;
> regulator-ramp-delay = <12500>;
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1
2026-02-13 2:35 [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1 Shawn Lin
2026-02-13 2:35 ` [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1 Shawn Lin
@ 2026-02-13 10:32 ` Chaoyi Chen
2026-02-13 11:11 ` Shawn Lin
2026-02-22 22:39 ` Heiko Stuebner
2 siblings, 1 reply; 11+ messages in thread
From: Chaoyi Chen @ 2026-02-13 10:32 UTC (permalink / raw)
To: Shawn Lin; +Cc: Heiko Stuebner, linux-rockchip, devicetree, linux-arm-kernel
Hello Shawn,
On 2/13/2026 10:35 AM, Shawn Lin wrote:
> Thus the board dts files could add property for these nodes.
>
> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
> ---
You should also add pmdomain driver.
I've encountered a similar issue before.
Finley told me to use the new PMIC, and that would solve the problem.
Maybe you're using the same old PMIC as I did :)
>
> arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> index 7fe9593..4fb8888 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> @@ -907,7 +907,7 @@
> #size-cells = <0>;
> #power-domain-cells = <0>;
>
> - power-domain@RK3588_PD_RKVDEC0 {
> + pd_rkvdec0: power-domain@RK3588_PD_RKVDEC0 {
> reg = <RK3588_PD_RKVDEC0>;
> clocks = <&cru HCLK_RKVDEC0>,
> <&cru HCLK_VDPU_ROOT>,
> @@ -917,7 +917,7 @@
> pm_qos = <&qos_rkvdec0>;
> #power-domain-cells = <0>;
> };
> - power-domain@RK3588_PD_RKVDEC1 {
> + pd_rkvdec1: power-domain@RK3588_PD_RKVDEC1 {
> reg = <RK3588_PD_RKVDEC1>;
> clocks = <&cru HCLK_RKVDEC1>,
> <&cru HCLK_VDPU_ROOT>,
> @@ -926,7 +926,7 @@
> pm_qos = <&qos_rkvdec1>;
> #power-domain-cells = <0>;
> };
> - power-domain@RK3588_PD_VENC0 {
> + pd_venc0: power-domain@RK3588_PD_VENC0 {
> reg = <RK3588_PD_VENC0>;
> clocks = <&cru HCLK_RKVENC0>,
> <&cru ACLK_RKVENC0>;
> @@ -937,7 +937,7 @@
> #size-cells = <0>;
> #power-domain-cells = <0>;
>
> - power-domain@RK3588_PD_VENC1 {
> + pd_venc1: power-domain@RK3588_PD_VENC1 {
> reg = <RK3588_PD_VENC1>;
> clocks = <&cru HCLK_RKVENC1>,
> <&cru HCLK_RKVENC0>,
--
Best,
Chaoyi
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1
2026-02-13 10:32 ` [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1 Chaoyi Chen
@ 2026-02-13 11:11 ` Shawn Lin
2026-02-24 1:42 ` Chaoyi Chen
0 siblings, 1 reply; 11+ messages in thread
From: Shawn Lin @ 2026-02-13 11:11 UTC (permalink / raw)
To: Chaoyi Chen
Cc: shawn.lin, Heiko Stuebner, linux-rockchip, devicetree,
linux-arm-kernel
Hi Chaoyi
在 2026/02/13 星期五 18:32, Chaoyi Chen 写道:
> Hello Shawn,
>
> On 2/13/2026 10:35 AM, Shawn Lin wrote:
>> Thus the board dts files could add property for these nodes.
>>
>> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
>> ---
> You should also add pmdomain driver.
>
> I've encountered a similar issue before.
> Finley told me to use the new PMIC, and that would solve the problem.
> Maybe you're using the same old PMIC as I did :)
>
I don't know what does new PMIC mean? New RK806 driver or new RK806
hardware?
The problem is these power domains rely on voltage supply which could
be probed late after pmdomain driver, then the system enables the PD and
access the IP without PD actually enabled(even w/o voltage supply
enabled).
>
>>
>> arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 8 ++++----
>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>> index 7fe9593..4fb8888 100644
>> --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>> +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>> @@ -907,7 +907,7 @@
>> #size-cells = <0>;
>> #power-domain-cells = <0>;
>>
>> - power-domain@RK3588_PD_RKVDEC0 {
>> + pd_rkvdec0: power-domain@RK3588_PD_RKVDEC0 {
>> reg = <RK3588_PD_RKVDEC0>;
>> clocks = <&cru HCLK_RKVDEC0>,
>> <&cru HCLK_VDPU_ROOT>,
>> @@ -917,7 +917,7 @@
>> pm_qos = <&qos_rkvdec0>;
>> #power-domain-cells = <0>;
>> };
>> - power-domain@RK3588_PD_RKVDEC1 {
>> + pd_rkvdec1: power-domain@RK3588_PD_RKVDEC1 {
>> reg = <RK3588_PD_RKVDEC1>;
>> clocks = <&cru HCLK_RKVDEC1>,
>> <&cru HCLK_VDPU_ROOT>,
>> @@ -926,7 +926,7 @@
>> pm_qos = <&qos_rkvdec1>;
>> #power-domain-cells = <0>;
>> };
>> - power-domain@RK3588_PD_VENC0 {
>> + pd_venc0: power-domain@RK3588_PD_VENC0 {
>> reg = <RK3588_PD_VENC0>;
>> clocks = <&cru HCLK_RKVENC0>,
>> <&cru ACLK_RKVENC0>;
>> @@ -937,7 +937,7 @@
>> #size-cells = <0>;
>> #power-domain-cells = <0>;
>>
>> - power-domain@RK3588_PD_VENC1 {
>> + pd_venc1: power-domain@RK3588_PD_VENC1 {
>> reg = <RK3588_PD_VENC1>;
>> clocks = <&cru HCLK_RKVENC1>,
>> <&cru HCLK_RKVENC0>,
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1
2026-02-13 2:42 ` Shawn Lin
@ 2026-02-22 13:11 ` Heiko Stuebner
2026-02-22 13:15 ` Heiko Stuebner
0 siblings, 1 reply; 11+ messages in thread
From: Heiko Stuebner @ 2026-02-22 13:11 UTC (permalink / raw)
To: linux-rockchip, Shawn Lin; +Cc: shawn.lin, devicetree, linux-arm-kernel
Hi Shawn,
Am Freitag, 13. Februar 2026, 03:42:07 Mitteleuropäische Normalzeit schrieb Shawn Lin:
> 在 2026/02/13 星期五 10:35, Shawn Lin 写道:
> > The power domains pd_rkvdec0/1 and pd_venc0/1 depend on two voltage supplies,
> > vdd_vdenc_s0 and vdd_vdenc_mem_s0. These supplies might be missing or cause probe
> > deferral. Since the Rockchip power domain management code currently supports managing
> > only one power supply, and both supplies belong to the same PMIC (making it highly
> > unlikely for one to be available while the other is not), a practical solution is
> > implemented.
> >
> > Both supplies are configured with the boot-on and always-on properties. Only one
> > of them is assigned as the domain-supply for pd_rkvdec0/1 and pd_venc0/1. This allows
> > the power domain code to perform a nominal enable operation on this single supply,
> > thereby successfully acquiring a reference to both supplies (as they are from the same
> > PMIC). The system then relies on their boot-on and always-on flags to maintain the
> > correct state.
> >
> > Crucially, this approach handles cases like probe deferral correctly:
> > if the PMIC is not yet ready, enabling the power domain will be deferred until the
> > necessary supplies become available.
just as a question, does the board have problems without these supplies?
Aka, is this a fix for a problem, or "just" future proofing the board?
Thanks
Heiko
> > Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
> > ---
> >
> > arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts | 16 ++++++++++++++++
> > arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts | 17 +++++++++++++++++
> > 2 files changed, 33 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> > index c9d284c..09bc7b6 100644
> > --- a/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> > +++ b/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> > @@ -568,6 +568,22 @@
> > domain-supply = <&vdd_gpu_s0>;
> > };
> >
> > +&pd_rkvdec0 {
> > + domain-supply = <&vdd_vdenc_s0>;
> > +};
> > +
> > +&pd_rkvdec1 {
> > + domain-supply = <&vdd_vdenc_s0>;
> > +};
> > +
> > +&pd_venc0 {
> > + domain-supply = <&vdd_vdenc_s0>;
> > +};
> > +
> > +&pd_venc1 {
> > + domain-supply = <&vdd_vdenc_s0>;
> > +};
> > +
> > &pinctrl {
> > audio {
> > hp_detect: headphone-detect {
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> > index f820505..25d80b6 100644
> > --- a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> > +++ b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> > @@ -381,6 +381,22 @@
> > domain-supply = <&vdd_gpu_s0>;
> > };
> >
> > +&pd_rkvdec0 {
> > + domain-supply = <&vdd_vdenc_s0>;
> > +};
> > +
> > +&pd_rkvdec1 {
> > + domain-supply = <&vdd_vdenc_s0>;
> > +};
> > +
> > +&pd_venc0 {
> > + domain-supply = <&vdd_vdenc_s0>;
> > +};
> > +
> > +&pd_venc1 {
> > + domain-supply = <&vdd_vdenc_s0>;
> > +};
> > +
> > &pinctrl {
> > audio {
> > hp_detect: headphone-detect {
> > @@ -580,6 +596,7 @@
> > vdd_gpu_mem_s0: dcdc-reg5 {
> > regulator-name = "vdd_gpu_mem_s0";
> > regulator-boot-on;
> > + regulator-always-on;
>
> Oops, I sent the wrong version. Should remove the this line change.
> Will fix it if v2 needed.
>
> > regulator-min-microvolt = <675000>;
> > regulator-max-microvolt = <950000>;
> > regulator-ramp-delay = <12500>;
> >
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1
2026-02-22 13:11 ` Heiko Stuebner
@ 2026-02-22 13:15 ` Heiko Stuebner
0 siblings, 0 replies; 11+ messages in thread
From: Heiko Stuebner @ 2026-02-22 13:15 UTC (permalink / raw)
To: linux-rockchip, Shawn Lin; +Cc: shawn.lin, devicetree, linux-arm-kernel
Am Sonntag, 22. Februar 2026, 14:11:26 Mitteleuropäische Normalzeit schrieb Heiko Stuebner:
> Hi Shawn,
>
> Am Freitag, 13. Februar 2026, 03:42:07 Mitteleuropäische Normalzeit schrieb Shawn Lin:
> > 在 2026/02/13 星期五 10:35, Shawn Lin 写道:
> > > The power domains pd_rkvdec0/1 and pd_venc0/1 depend on two voltage supplies,
> > > vdd_vdenc_s0 and vdd_vdenc_mem_s0. These supplies might be missing or cause probe
> > > deferral. Since the Rockchip power domain management code currently supports managing
> > > only one power supply, and both supplies belong to the same PMIC (making it highly
> > > unlikely for one to be available while the other is not), a practical solution is
> > > implemented.
> > >
> > > Both supplies are configured with the boot-on and always-on properties. Only one
> > > of them is assigned as the domain-supply for pd_rkvdec0/1 and pd_venc0/1. This allows
> > > the power domain code to perform a nominal enable operation on this single supply,
> > > thereby successfully acquiring a reference to both supplies (as they are from the same
> > > PMIC). The system then relies on their boot-on and always-on flags to maintain the
> > > correct state.
> > >
> > > Crucially, this approach handles cases like probe deferral correctly:
> > > if the PMIC is not yet ready, enabling the power domain will be deferred until the
> > > necessary supplies become available.
>
> just as a question, does the board have problems without these supplies?
> Aka, is this a fix for a problem, or "just" future proofing the board?
Ah, I take everything back. The pmdomain patch in
https://lore.kernel.org/r/1770891364-52147-1-git-send-email-shawn.lin@rock-chips.com
is the actual fix.
With that patch applied all board should work correctly by deferring
the vdec probe until each board adds its domain-supply.
To not cause too much disturbance, this then counts as feature :-)
Heiko
> > > Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
> > > ---
> > >
> > > arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts | 16 ++++++++++++++++
> > > arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts | 17 +++++++++++++++++
> > > 2 files changed, 33 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> > > index c9d284c..09bc7b6 100644
> > > --- a/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> > > +++ b/arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dts
> > > @@ -568,6 +568,22 @@
> > > domain-supply = <&vdd_gpu_s0>;
> > > };
> > >
> > > +&pd_rkvdec0 {
> > > + domain-supply = <&vdd_vdenc_s0>;
> > > +};
> > > +
> > > +&pd_rkvdec1 {
> > > + domain-supply = <&vdd_vdenc_s0>;
> > > +};
> > > +
> > > +&pd_venc0 {
> > > + domain-supply = <&vdd_vdenc_s0>;
> > > +};
> > > +
> > > +&pd_venc1 {
> > > + domain-supply = <&vdd_vdenc_s0>;
> > > +};
> > > +
> > > &pinctrl {
> > > audio {
> > > hp_detect: headphone-detect {
> > > diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> > > index f820505..25d80b6 100644
> > > --- a/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> > > +++ b/arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts
> > > @@ -381,6 +381,22 @@
> > > domain-supply = <&vdd_gpu_s0>;
> > > };
> > >
> > > +&pd_rkvdec0 {
> > > + domain-supply = <&vdd_vdenc_s0>;
> > > +};
> > > +
> > > +&pd_rkvdec1 {
> > > + domain-supply = <&vdd_vdenc_s0>;
> > > +};
> > > +
> > > +&pd_venc0 {
> > > + domain-supply = <&vdd_vdenc_s0>;
> > > +};
> > > +
> > > +&pd_venc1 {
> > > + domain-supply = <&vdd_vdenc_s0>;
> > > +};
> > > +
> > > &pinctrl {
> > > audio {
> > > hp_detect: headphone-detect {
> > > @@ -580,6 +596,7 @@
> > > vdd_gpu_mem_s0: dcdc-reg5 {
> > > regulator-name = "vdd_gpu_mem_s0";
> > > regulator-boot-on;
> > > + regulator-always-on;
> >
> > Oops, I sent the wrong version. Should remove the this line change.
> > Will fix it if v2 needed.
> >
> > > regulator-min-microvolt = <675000>;
> > > regulator-max-microvolt = <950000>;
> > > regulator-ramp-delay = <12500>;
> > >
> >
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1
2026-02-13 2:35 [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1 Shawn Lin
2026-02-13 2:35 ` [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1 Shawn Lin
2026-02-13 10:32 ` [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1 Chaoyi Chen
@ 2026-02-22 22:39 ` Heiko Stuebner
2 siblings, 0 replies; 11+ messages in thread
From: Heiko Stuebner @ 2026-02-22 22:39 UTC (permalink / raw)
To: Shawn Lin; +Cc: Heiko Stuebner, linux-rockchip, devicetree, linux-arm-kernel
On Fri, 13 Feb 2026 10:35:12 +0800, Shawn Lin wrote:
> Thus the board dts files could add property for these nodes.
>
>
Applied, thanks!
[1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1
commit: 9e79dcc4d8681df3ea1a0665dce5e35a37ece4b6
[2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1
commit: 52ad35272559db09ad571d698665fe33d93534a8
Best regards,
--
Heiko Stuebner <heiko@sntech.de>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1
2026-02-13 11:11 ` Shawn Lin
@ 2026-02-24 1:42 ` Chaoyi Chen
2026-02-24 3:14 ` Shawn Lin
0 siblings, 1 reply; 11+ messages in thread
From: Chaoyi Chen @ 2026-02-24 1:42 UTC (permalink / raw)
To: Shawn Lin; +Cc: Heiko Stuebner, linux-rockchip, devicetree, linux-arm-kernel
On 2/13/2026 7:11 PM, Shawn Lin wrote:
> Hi Chaoyi
>
> 在 2026/02/13 星期五 18:32, Chaoyi Chen 写道:
>> Hello Shawn,
>>
>> On 2/13/2026 10:35 AM, Shawn Lin wrote:
>>> Thus the board dts files could add property for these nodes.
>>>
>>> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
>>> ---
>> You should also add pmdomain driver.
>>
>> I've encountered a similar issue before.
>> Finley told me to use the new PMIC, and that would solve the problem.
>> Maybe you're using the same old PMIC as I did :)
>>
>
> I don't know what does new PMIC mean? New RK806 driver or new RK806
> hardware?
It is new RK806 hardware. According to Finley, end users are currently using
this new type of PMIC.
>
> The problem is these power domains rely on voltage supply which could
> be probed late after pmdomain driver, then the system enables the PD and
> access the IP without PD actually enabled(even w/o voltage supply
> enabled).
>
If I'm not mistaken, the new hardware will automatically powers up the supply
corresponding to VDEC/VNEC.
>
>
>>
>>>
>>> arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 8 ++++----
>>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>> index 7fe9593..4fb8888 100644
>>> --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>> +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>> @@ -907,7 +907,7 @@
>>> #size-cells = <0>;
>>> #power-domain-cells = <0>;
>>> - power-domain@RK3588_PD_RKVDEC0 {
>>> + pd_rkvdec0: power-domain@RK3588_PD_RKVDEC0 {
>>> reg = <RK3588_PD_RKVDEC0>;
>>> clocks = <&cru HCLK_RKVDEC0>,
>>> <&cru HCLK_VDPU_ROOT>,
>>> @@ -917,7 +917,7 @@
>>> pm_qos = <&qos_rkvdec0>;
>>> #power-domain-cells = <0>;
>>> };
>>> - power-domain@RK3588_PD_RKVDEC1 {
>>> + pd_rkvdec1: power-domain@RK3588_PD_RKVDEC1 {
>>> reg = <RK3588_PD_RKVDEC1>;
>>> clocks = <&cru HCLK_RKVDEC1>,
>>> <&cru HCLK_VDPU_ROOT>,
>>> @@ -926,7 +926,7 @@
>>> pm_qos = <&qos_rkvdec1>;
>>> #power-domain-cells = <0>;
>>> };
>>> - power-domain@RK3588_PD_VENC0 {
>>> + pd_venc0: power-domain@RK3588_PD_VENC0 {
>>> reg = <RK3588_PD_VENC0>;
>>> clocks = <&cru HCLK_RKVENC0>,
>>> <&cru ACLK_RKVENC0>;
>>> @@ -937,7 +937,7 @@
>>> #size-cells = <0>;
>>> #power-domain-cells = <0>;
>>> - power-domain@RK3588_PD_VENC1 {
>>> + pd_venc1: power-domain@RK3588_PD_VENC1 {
>>> reg = <RK3588_PD_VENC1>;
>>> clocks = <&cru HCLK_RKVENC1>,
>>> <&cru HCLK_RKVENC0>,
>>
>
>
>
--
Best,
Chaoyi
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1
2026-02-24 1:42 ` Chaoyi Chen
@ 2026-02-24 3:14 ` Shawn Lin
2026-02-24 8:51 ` Chaoyi Chen
0 siblings, 1 reply; 11+ messages in thread
From: Shawn Lin @ 2026-02-24 3:14 UTC (permalink / raw)
To: Chaoyi Chen
Cc: shawn.lin, Heiko Stuebner, linux-rockchip, devicetree,
linux-arm-kernel, finley.xiao
在 2026/02/24 星期二 9:42, Chaoyi Chen 写道:
> On 2/13/2026 7:11 PM, Shawn Lin wrote:
>> Hi Chaoyi
>>
>> 在 2026/02/13 星期五 18:32, Chaoyi Chen 写道:
>>> Hello Shawn,
>>>
>>> On 2/13/2026 10:35 AM, Shawn Lin wrote:
>>>> Thus the board dts files could add property for these nodes.
>>>>
>>>> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
>>>> ---
>>> You should also add pmdomain driver.
>>>
>>> I've encountered a similar issue before.
>>> Finley told me to use the new PMIC, and that would solve the problem.
>>> Maybe you're using the same old PMIC as I did :)
>>>
>>
>> I don't know what does new PMIC mean? New RK806 driver or new RK806
>> hardware?
>
> It is new RK806 hardware. According to Finley, end users are currently using
> this new type of PMIC.
>
>
>>
>> The problem is these power domains rely on voltage supply which could
>> be probed late after pmdomain driver, then the system enables the PD and
>> access the IP without PD actually enabled(even w/o voltage supply
>> enabled).
>>
>
> If I'm not mistaken, the new hardware will automatically powers up the supply
> corresponding to VDEC/VNEC.
>
Thanks for the clarification on the hardware update.
I'm currently using the EVB board for SoC bring-up and post-silicon
validation, which I believe carries the old RK806 hardware. It's also
apparent that many developers (as opposed to end users) are still
relying on the old hardware in the field.
Generally speaking, upstream code has no way to distinguish between the
old and new PMIC variants solely from the DTS, correct? Given this, I
think we should aim to keep both hardware versions workable in the
upstream code.
>
>>
>>
>>>
>>>>
>>>> arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 8 ++++----
>>>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>>> index 7fe9593..4fb8888 100644
>>>> --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>>> +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>>> @@ -907,7 +907,7 @@
>>>> #size-cells = <0>;
>>>> #power-domain-cells = <0>;
>>>> - power-domain@RK3588_PD_RKVDEC0 {
>>>> + pd_rkvdec0: power-domain@RK3588_PD_RKVDEC0 {
>>>> reg = <RK3588_PD_RKVDEC0>;
>>>> clocks = <&cru HCLK_RKVDEC0>,
>>>> <&cru HCLK_VDPU_ROOT>,
>>>> @@ -917,7 +917,7 @@
>>>> pm_qos = <&qos_rkvdec0>;
>>>> #power-domain-cells = <0>;
>>>> };
>>>> - power-domain@RK3588_PD_RKVDEC1 {
>>>> + pd_rkvdec1: power-domain@RK3588_PD_RKVDEC1 {
>>>> reg = <RK3588_PD_RKVDEC1>;
>>>> clocks = <&cru HCLK_RKVDEC1>,
>>>> <&cru HCLK_VDPU_ROOT>,
>>>> @@ -926,7 +926,7 @@
>>>> pm_qos = <&qos_rkvdec1>;
>>>> #power-domain-cells = <0>;
>>>> };
>>>> - power-domain@RK3588_PD_VENC0 {
>>>> + pd_venc0: power-domain@RK3588_PD_VENC0 {
>>>> reg = <RK3588_PD_VENC0>;
>>>> clocks = <&cru HCLK_RKVENC0>,
>>>> <&cru ACLK_RKVENC0>;
>>>> @@ -937,7 +937,7 @@
>>>> #size-cells = <0>;
>>>> #power-domain-cells = <0>;
>>>> - power-domain@RK3588_PD_VENC1 {
>>>> + pd_venc1: power-domain@RK3588_PD_VENC1 {
>>>> reg = <RK3588_PD_VENC1>;
>>>> clocks = <&cru HCLK_RKVENC1>,
>>>> <&cru HCLK_RKVENC0>,
>>>
>>
>>
>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1
2026-02-24 3:14 ` Shawn Lin
@ 2026-02-24 8:51 ` Chaoyi Chen
0 siblings, 0 replies; 11+ messages in thread
From: Chaoyi Chen @ 2026-02-24 8:51 UTC (permalink / raw)
To: Shawn Lin
Cc: Heiko Stuebner, linux-rockchip, devicetree, linux-arm-kernel,
finley.xiao
On 2/24/2026 11:14 AM, Shawn Lin wrote:
>
>
> 在 2026/02/24 星期二 9:42, Chaoyi Chen 写道:
>> On 2/13/2026 7:11 PM, Shawn Lin wrote:
>>> Hi Chaoyi
>>>
>>> 在 2026/02/13 星期五 18:32, Chaoyi Chen 写道:
>>>> Hello Shawn,
>>>>
>>>> On 2/13/2026 10:35 AM, Shawn Lin wrote:
>>>>> Thus the board dts files could add property for these nodes.
>>>>>
>>>>> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
>>>>> ---
>>>> You should also add pmdomain driver.
>>>>
>>>> I've encountered a similar issue before.
>>>> Finley told me to use the new PMIC, and that would solve the problem.
>>>> Maybe you're using the same old PMIC as I did :)
>>>>
>>>
>>> I don't know what does new PMIC mean? New RK806 driver or new RK806
>>> hardware?
>>
>> It is new RK806 hardware. According to Finley, end users are currently using
>> this new type of PMIC.
>>
>>
>>>
>>> The problem is these power domains rely on voltage supply which could
>>> be probed late after pmdomain driver, then the system enables the PD and
>>> access the IP without PD actually enabled(even w/o voltage supply
>>> enabled).
>>>
>>
>> If I'm not mistaken, the new hardware will automatically powers up the supply
>> corresponding to VDEC/VNEC.
>>
>
> Thanks for the clarification on the hardware update.
>
> I'm currently using the EVB board for SoC bring-up and post-silicon
> validation, which I believe carries the old RK806 hardware. It's also
> apparent that many developers (as opposed to end users) are still
> relying on the old hardware in the field.
>
> Generally speaking, upstream code has no way to distinguish between the old and new PMIC variants solely from the DTS, correct? Given this, I
> think we should aim to keep both hardware versions workable in the
> upstream code.
>
As far as I know, only early EVBs internal to Rockchip used them.
I think your approach also makes sense :)
>>
>>>
>>>
>>>>
>>>>>
>>>>> arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 8 ++++----
>>>>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>>>> index 7fe9593..4fb8888 100644
>>>>> --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>>>> +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
>>>>> @@ -907,7 +907,7 @@
>>>>> #size-cells = <0>;
>>>>> #power-domain-cells = <0>;
>>>>> - power-domain@RK3588_PD_RKVDEC0 {
>>>>> + pd_rkvdec0: power-domain@RK3588_PD_RKVDEC0 {
>>>>> reg = <RK3588_PD_RKVDEC0>;
>>>>> clocks = <&cru HCLK_RKVDEC0>,
>>>>> <&cru HCLK_VDPU_ROOT>,
>>>>> @@ -917,7 +917,7 @@
>>>>> pm_qos = <&qos_rkvdec0>;
>>>>> #power-domain-cells = <0>;
>>>>> };
>>>>> - power-domain@RK3588_PD_RKVDEC1 {
>>>>> + pd_rkvdec1: power-domain@RK3588_PD_RKVDEC1 {
>>>>> reg = <RK3588_PD_RKVDEC1>;
>>>>> clocks = <&cru HCLK_RKVDEC1>,
>>>>> <&cru HCLK_VDPU_ROOT>,
>>>>> @@ -926,7 +926,7 @@
>>>>> pm_qos = <&qos_rkvdec1>;
>>>>> #power-domain-cells = <0>;
>>>>> };
>>>>> - power-domain@RK3588_PD_VENC0 {
>>>>> + pd_venc0: power-domain@RK3588_PD_VENC0 {
>>>>> reg = <RK3588_PD_VENC0>;
>>>>> clocks = <&cru HCLK_RKVENC0>,
>>>>> <&cru ACLK_RKVENC0>;
>>>>> @@ -937,7 +937,7 @@
>>>>> #size-cells = <0>;
>>>>> #power-domain-cells = <0>;
>>>>> - power-domain@RK3588_PD_VENC1 {
>>>>> + pd_venc1: power-domain@RK3588_PD_VENC1 {
>>>>> reg = <RK3588_PD_VENC1>;
>>>>> clocks = <&cru HCLK_RKVENC1>,
>>>>> <&cru HCLK_RKVENC0>,
>>>>
>>>
>>>
>>>
>>
>
--
Best,
Chaoyi
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-02-24 8:52 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-13 2:35 [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1 Shawn Lin
2026-02-13 2:35 ` [PATCH 2/2] arm64: dts: rockchip: Add domain-supply for pd_rkvdec0/1 and pd_venc0/1 Shawn Lin
2026-02-13 2:42 ` Shawn Lin
2026-02-22 13:11 ` Heiko Stuebner
2026-02-22 13:15 ` Heiko Stuebner
2026-02-13 10:32 ` [PATCH 1/2] arm64: dts: rockchip: add node name for RK3588_PD_RKVDEC0/1 and RK3588_PD_VENC0/1 Chaoyi Chen
2026-02-13 11:11 ` Shawn Lin
2026-02-24 1:42 ` Chaoyi Chen
2026-02-24 3:14 ` Shawn Lin
2026-02-24 8:51 ` Chaoyi Chen
2026-02-22 22:39 ` Heiko Stuebner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox