Commit df7c440c authored by Luca Weiss's avatar Luca Weiss Committed by Bjorn Andersson
Browse files

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: default avatarLuca Weiss <luca@lucaweiss.eu>
Reviewed-by: default avatarKonrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250621-msm8974-rpmpd-switch-v1-4-0a2cb303c446@lucaweiss.eu


Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
parent 4cf8d541
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -198,15 +198,12 @@ &pm8941_wled {
};

&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 @@ pm8841_s1: s1 {
			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 {
+0 −12
Original line number Diff line number Diff line
@@ -369,12 +369,10 @@ led@5 {
};

&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 @@ pm8841_s1: s1 {
			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 {
+0 −12
Original line number Diff line number Diff line
@@ -188,12 +188,10 @@ touchkey_pin: touchkey-int-state {
};

&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 @@ pm8841_s1: s1 {
			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 {
+0 −12
Original line number Diff line number Diff line
@@ -204,12 +204,10 @@ &pm8941_wled {
};

&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 @@ pm8841_s1: s1 {
			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 {
+44 −0
Original line number Diff line number Diff line
@@ -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 @@ rpmcc: clock-controller {
					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 @@ pronto: remoteproc@fb204000 {
					      <&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 @@ remoteproc_mss: remoteproc@fc880000 {
			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 @@ remoteproc_adsp: remoteproc@fe200000 {
			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>;
Loading