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>
This commit is contained in:
Luca Weiss
2025-06-21 15:19:59 +02:00
committed by Bjorn Andersson
parent 4cf8d541f4
commit df7c440c90
10 changed files with 48 additions and 96 deletions

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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>;

View File

@@ -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>;

View File

@@ -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 {

View File

@@ -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>;

View File

@@ -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";

View File

@@ -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 {