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>
Link: https://patch.msgid.link/1770950113-19802-2-git-send-email-shawn.lin@rock-chips.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
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 {
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 {