summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Weiss <luca@lucaweiss.eu>2025-06-21 16:19:59 +0300
committerBjorn Andersson <andersson@kernel.org>2026-01-19 18:40:32 +0300
commitdf7c440c904f754d8c94863a910d99e7ed8bbda9 (patch)
tree27f037453df11b66d2e9f8dc3b00516664c54448
parent4cf8d541f4716444b61a919e3fe6f04814165782 (diff)
downloadlinux-df7c440c904f754d8c94863a910d99e7ed8bbda9.tar.xz
ARM: dts: qcom: msm8974: Start using rpmpd for power domains
Due to historical reasons all msm8974 boards have used the CX power rail as regulator instead of going through the power domain framework. Since rpmpd has gained msm8974 support quite a bit ago, let's start using it and replace all usages of pm8841_s2 (CX), pm8841_s4 (GFX) and for the boards using pma8084 pma8084_s2 (CX), pma8084_s7 (GFX). For reference, downstream is using GFX power rail as parent-supply for mmcc's OXILI_GDSC GDSC which then is used for GPU, but nothing there is modelled upstream. Signed-off-by: Luca Weiss <luca@lucaweiss.eu> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Link: https://lore.kernel.org/r/20250621-msm8974-rpmpd-switch-v1-4-0a2cb303c446@lucaweiss.eu Signed-off-by: Bjorn Andersson <andersson@kernel.org>
-rw-r--r--arch/arm/boot/dts/qcom/qcom-apq8074-dragonboard.dts13
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974-lge-nexus5-hammerhead.dts12
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974-samsung-hlte.dts12
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974-sony-xperia-rhine.dtsi12
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974.dtsi44
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974pro-fairphone-fp2.dts8
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974pro-htc-m8.dts11
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974pro-oneplus-bacon.dts9
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974pro-samsung-klte-common.dtsi11
-rw-r--r--arch/arm/boot/dts/qcom/qcom-msm8974pro-sony-xperia-shinano-common.dtsi12
10 files changed, 48 insertions, 96 deletions
diff --git a/arch/arm/boot/dts/qcom/qcom-apq8074-dragonboard.dts b/arch/arm/boot/dts/qcom/qcom-apq8074-dragonboard.dts
index 34b0cf35fdac..d3ae6c6a6f83 100644
--- a/arch/arm/boot/dts/qcom/qcom-apq8074-dragonboard.dts
+++ b/arch/arm/boot/dts/qcom/qcom-apq8074-dragonboard.dts
@@ -198,15 +198,12 @@
};
&remoteproc_adsp {
- cx-supply = <&pm8841_s2>;
-
firmware-name = "qcom/apq8074/adsp.mbn";
status = "okay";
};
&remoteproc_mss {
- cx-supply = <&pm8841_s2>;
mss-supply = <&pm8841_s3>;
mx-supply = <&pm8841_s1>;
pll-supply = <&pm8941_l12>;
@@ -225,20 +222,10 @@
regulator-max-microvolt = <1050000>;
};
- pm8841_s2: s2 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
-
pm8841_s3: s3 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1050000>;
};
-
- pm8841_s4: s4 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
};
regulators-1 {
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974-lge-nexus5-hammerhead.dts b/arch/arm/boot/dts/qcom/qcom-msm8974-lge-nexus5-hammerhead.dts
index 8f4a1fda9276..e34d7b864e30 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974-lge-nexus5-hammerhead.dts
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974-lge-nexus5-hammerhead.dts
@@ -369,12 +369,10 @@
};
&remoteproc_adsp {
- cx-supply = <&pm8841_s2>;
status = "okay";
};
&remoteproc_mss {
- cx-supply = <&pm8841_s2>;
mss-supply = <&pm8841_s3>;
mx-supply = <&pm8841_s1>;
pll-supply = <&pm8941_l12>;
@@ -390,20 +388,10 @@
regulator-max-microvolt = <1050000>;
};
- pm8841_s2: s2 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
-
pm8841_s3: s3 {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
};
-
- pm8841_s4: s4 {
- regulator-min-microvolt = <815000>;
- regulator-max-microvolt = <900000>;
- };
};
regulators-1 {
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974-samsung-hlte.dts b/arch/arm/boot/dts/qcom/qcom-msm8974-samsung-hlte.dts
index b7a1367d3470..7f61f80761e1 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974-samsung-hlte.dts
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974-samsung-hlte.dts
@@ -188,12 +188,10 @@
};
&remoteproc_adsp {
- cx-supply = <&pm8841_s2>;
status = "okay";
};
&remoteproc_mss {
- cx-supply = <&pm8841_s2>;
mss-supply = <&pm8841_s3>;
mx-supply = <&pm8841_s1>;
pll-supply = <&pm8941_l12>;
@@ -209,20 +207,10 @@
regulator-max-microvolt = <1050000>;
};
- pm8841_s2: s2 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
-
pm8841_s3: s3 {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
};
-
- pm8841_s4: s4 {
- regulator-min-microvolt = <815000>;
- regulator-max-microvolt = <900000>;
- };
};
regulators-1 {
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974-sony-xperia-rhine.dtsi b/arch/arm/boot/dts/qcom/qcom-msm8974-sony-xperia-rhine.dtsi
index d7322fc6a095..96682d82b1c3 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974-sony-xperia-rhine.dtsi
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974-sony-xperia-rhine.dtsi
@@ -204,12 +204,10 @@
};
&remoteproc_adsp {
- cx-supply = <&pm8841_s2>;
status = "okay";
};
&remoteproc_mss {
- cx-supply = <&pm8841_s2>;
mss-supply = <&pm8841_s3>;
mx-supply = <&pm8841_s1>;
pll-supply = <&pm8941_l12>;
@@ -225,20 +223,10 @@
regulator-max-microvolt = <1050000>;
};
- pm8841_s2: s2 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
-
pm8841_s3: s3 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1050000>;
};
-
- pm8841_s4: s4 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
};
regulators-1 {
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi
index 8459a840d9ff..2a82ddce94a2 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi
@@ -8,6 +8,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interconnect/qcom,msm8974.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/qcom-rpmpd.h>
#include <dt-bindings/reset/qcom,gcc-msm8974.h>
/ {
@@ -146,6 +147,40 @@
clocks = <&xo_board>;
clock-names = "xo";
};
+
+ rpmpd: power-controller {
+ compatible = "qcom,msm8974-rpmpd";
+ #power-domain-cells = <1>;
+ operating-points-v2 = <&rpmpd_opp_table>;
+
+ rpmpd_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ rpmpd_opp_ret: opp1 {
+ opp-level = <1>;
+ };
+
+ rpmpd_opp_svs_krait: opp2 {
+ opp-level = <2>;
+ };
+
+ rpmpd_opp_svs_soc: opp3 {
+ opp-level = <3>;
+ };
+
+ rpmpd_opp_nom: opp4 {
+ opp-level = <4>;
+ };
+
+ rpmpd_opp_turbo: opp5 {
+ opp-level = <5>;
+ };
+
+ rpmpd_opp_super_turbo: opp6 {
+ opp-level = <6>;
+ };
+ };
+ };
};
};
};
@@ -743,6 +778,9 @@
<&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
+ power-domains = <&rpmpd MSM8974_VDDCX>;
+ power-domain-names = "cx";
+
qcom,smem-states = <&wcnss_smp2p_out 0>;
qcom,smem-state-names = "stop";
@@ -1545,6 +1583,9 @@
resets = <&gcc GCC_MSS_RESTART>;
reset-names = "mss_restart";
+ power-domains = <&rpmpd MSM8974_VDDCX>;
+ power-domain-names = "cx";
+
qcom,halt-regs = <&tcsr_mutex 0x1180 0x1200 0x1280>;
qcom,smem-states = <&modem_smp2p_out 0>;
@@ -2208,6 +2249,9 @@
clocks = <&xo_board>;
clock-names = "xo";
+ power-domains = <&rpmpd MSM8974_VDDCX>;
+ power-domain-names = "cx";
+
memory-region = <&adsp_region>;
qcom,smem-states = <&adsp_smp2p_out 0>;
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974pro-fairphone-fp2.dts b/arch/arm/boot/dts/qcom/qcom-msm8974pro-fairphone-fp2.dts
index fe227fd3f908..a081aeadd1d4 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974pro-fairphone-fp2.dts
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974pro-fairphone-fp2.dts
@@ -156,7 +156,6 @@
status = "okay";
vddmx-supply = <&pm8841_s1>;
- vddcx-supply = <&pm8841_s2>;
vddpx-supply = <&pm8941_s3>;
pinctrl-names = "default";
@@ -181,12 +180,10 @@
&remoteproc_adsp {
status = "okay";
- cx-supply = <&pm8841_s2>;
};
&remoteproc_mss {
status = "okay";
- cx-supply = <&pm8841_s2>;
mss-supply = <&pm8841_s3>;
mx-supply = <&pm8841_s1>;
pll-supply = <&pm8941_l12>;
@@ -201,11 +198,6 @@
regulator-max-microvolt = <1050000>;
};
- pm8841_s2: s2 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
-
pm8841_s3: s3 {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974pro-htc-m8.dts b/arch/arm/boot/dts/qcom/qcom-msm8974pro-htc-m8.dts
index b896cc1ad6f7..402372834c53 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974pro-htc-m8.dts
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974pro-htc-m8.dts
@@ -70,7 +70,6 @@
&pronto {
vddmx-supply = <&pm8841_s1>;
- vddcx-supply = <&pm8841_s2>;
vddpx-supply = <&pm8941_s3>;
pinctrl-0 = <&wcnss_pin_a>;
@@ -104,20 +103,10 @@
regulator-max-microvolt = <1050000>;
};
- pm8841_s2: s2 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
-
pm8841_s3: s3 {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
};
-
- pm8841_s4: s4 {
- regulator-min-microvolt = <815000>;
- regulator-max-microvolt = <900000>;
- };
};
regulators-1 {
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974pro-oneplus-bacon.dts b/arch/arm/boot/dts/qcom/qcom-msm8974pro-oneplus-bacon.dts
index 88ff6535477b..258bbbecd927 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974pro-oneplus-bacon.dts
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974pro-oneplus-bacon.dts
@@ -214,7 +214,6 @@
&pronto {
vddmx-supply = <&pm8841_s1>;
- vddcx-supply = <&pm8841_s2>;
vddpx-supply = <&pm8941_s3>;
pinctrl-names = "default";
@@ -240,8 +239,6 @@
};
&remoteproc_adsp {
- cx-supply = <&pm8841_s2>;
-
status = "okay";
};
@@ -254,12 +251,6 @@
regulator-max-microvolt = <1050000>;
};
- pm8841_s2: s2 {
- regulator-min-microvolt = <875000>;
- regulator-max-microvolt = <1050000>;
- regulator-always-on;
- };
-
pm8841_s3: s3 {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974pro-samsung-klte-common.dtsi b/arch/arm/boot/dts/qcom/qcom-msm8974pro-samsung-klte-common.dtsi
index d3959741d2ea..56a1a25f3df3 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974pro-samsung-klte-common.dtsi
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974pro-samsung-klte-common.dtsi
@@ -453,12 +453,10 @@
&remoteproc_adsp {
status = "okay";
- cx-supply = <&pma8084_s2>;
};
&remoteproc_mss {
status = "okay";
- cx-supply = <&pma8084_s2>;
mss-supply = <&pma8084_s6>;
mx-supply = <&pma8084_s1>;
pll-supply = <&pma8084_l12>;
@@ -474,11 +472,6 @@
regulator-always-on;
};
- pma8084_s2: s2 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
-
pma8084_s3: s3 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
@@ -648,6 +641,10 @@
};
};
+&rpmpd {
+ compatible = "qcom,msm8974pro-pma8084-rpmpd";
+};
+
&sdhc_1 {
status = "okay";
diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974pro-sony-xperia-shinano-common.dtsi b/arch/arm/boot/dts/qcom/qcom-msm8974pro-sony-xperia-shinano-common.dtsi
index 6af7c71c7158..3d2de30b495e 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8974pro-sony-xperia-shinano-common.dtsi
+++ b/arch/arm/boot/dts/qcom/qcom-msm8974pro-sony-xperia-shinano-common.dtsi
@@ -207,12 +207,10 @@
};
&remoteproc_adsp {
- cx-supply = <&pm8841_s2>;
status = "okay";
};
&remoteproc_mss {
- cx-supply = <&pm8841_s2>;
mss-supply = <&pm8841_s3>;
mx-supply = <&pm8841_s1>;
pll-supply = <&pm8941_l12>;
@@ -228,20 +226,10 @@
regulator-max-microvolt = <1050000>;
};
- pm8841_s2: s2 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
-
pm8841_s3: s3 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1050000>;
};
-
- pm8841_s4: s4 {
- regulator-min-microvolt = <500000>;
- regulator-max-microvolt = <1050000>;
- };
};
regulators-1 {