Commit 7e1acc8b authored by Stephan Gerhold's avatar Stephan Gerhold Committed by Bjorn Andersson
Browse files

arm64: dts: qcom: Add rpm-proc node for GLINK gplatforms



Rather than having the RPM GLINK channels as the only child of a dummy
top-level rpm-glink node, switch to representing the RPM as remoteproc
like all the other remoteprocs (modem DSP, ...).

This allows assigning additional subdevices to it like the MPM
interrupt-controller or rpm-master-stats.

Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # SM6375
Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
Link: https://lore.kernel.org/r/20230531-rpm-rproc-v3-11-a07dcdefd918@gerhold.net


Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
parent 091efd56
Loading
Loading
Loading
Loading
+26 −22
Original line number Diff line number Diff line
@@ -146,6 +146,32 @@ psci: psci {
		method = "smc";
	};

	rpm: remoteproc {
		compatible = "qcom,ipq6018-rpm-proc", "qcom,rpm-proc";

		glink-edge {
			compatible = "qcom,glink-rpm";
			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
			qcom,rpm-msg-ram = <&rpm_msg_ram>;
			mboxes = <&apcs_glb 0>;

			rpm_requests: rpm-requests {
				compatible = "qcom,rpm-ipq6018";
				qcom,glink-channels = "rpm_requests";

				regulators {
					compatible = "qcom,rpm-mp5496-regulators";

					ipq6018_s2: s2 {
						regulator-min-microvolt = <725000>;
						regulator-max-microvolt = <1062500>;
						regulator-always-on;
					};
				};
			};
		};
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
@@ -182,28 +208,6 @@ q6_region: memory@4ab00000 {
		};
	};

	rpm-glink {
		compatible = "qcom,glink-rpm";
		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
		qcom,rpm-msg-ram = <&rpm_msg_ram>;
		mboxes = <&apcs_glb 0>;

		rpm_requests: rpm-requests {
			compatible = "qcom,rpm-ipq6018";
			qcom,glink-channels = "rpm_requests";

			regulators {
				compatible = "qcom,rpm-mp5496-regulators";

				ipq6018_s2: s2 {
					regulator-min-microvolt = <725000>;
					regulator-max-microvolt = <1062500>;
					regulator-always-on;
				};
			};
		};
	};

	smem {
		compatible = "qcom,smem";
		memory-region = <&smem_region>;
+16 −12
Original line number Diff line number Diff line
@@ -156,6 +156,22 @@ psci {
		method = "smc";
	};

	rpm: remoteproc {
		compatible = "qcom,ipq9574-rpm-proc", "qcom,rpm-proc";

		glink-edge {
			compatible = "qcom,glink-rpm";
			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
			qcom,rpm-msg-ram = <&rpm_msg_ram>;
			mboxes = <&apcs_glb 0>;

			rpm_requests: rpm-requests {
				compatible = "qcom,rpm-ipq9574";
				qcom,glink-channels = "rpm_requests";
			};
		};
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
@@ -184,18 +200,6 @@ smem@4aa00000 {
		};
	};

	rpm-glink {
		compatible = "qcom,glink-rpm";
		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
		qcom,rpm-msg-ram = <&rpm_msg_ram>;
		mboxes = <&apcs_glb 0>;

		rpm_requests: rpm-requests {
			compatible = "qcom,rpm-ipq9574";
			qcom,glink-channels = "rpm_requests";
		};
	};

	soc: soc@0 {
		compatible = "simple-bus";
		#address-cells = <1>;
+57 −56
Original line number Diff line number Diff line
@@ -448,6 +448,63 @@ psci {
		method = "smc";
	};

	rpm: remoteproc {
		compatible = "qcom,msm8996-rpm-proc", "qcom,rpm-proc";

		glink-edge {
			compatible = "qcom,glink-rpm";
			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
			qcom,rpm-msg-ram = <&rpm_msg_ram>;
			mboxes = <&apcs_glb 0>;

			rpm_requests: rpm-requests {
				compatible = "qcom,rpm-msm8996";
				qcom,glink-channels = "rpm_requests";

				rpmcc: clock-controller {
					compatible = "qcom,rpmcc-msm8996", "qcom,rpmcc";
					#clock-cells = <1>;
					clocks = <&xo_board>;
					clock-names = "xo";
				};

				rpmpd: power-controller {
					compatible = "qcom,msm8996-rpmpd";
					#power-domain-cells = <1>;
					operating-points-v2 = <&rpmpd_opp_table>;

					rpmpd_opp_table: opp-table {
						compatible = "operating-points-v2";

						rpmpd_opp1: opp1 {
							opp-level = <1>;
						};

						rpmpd_opp2: opp2 {
							opp-level = <2>;
						};

						rpmpd_opp3: opp3 {
							opp-level = <3>;
						};

						rpmpd_opp4: opp4 {
							opp-level = <4>;
						};

						rpmpd_opp5: opp5 {
							opp-level = <5>;
						};

						rpmpd_opp6: opp6 {
							opp-level = <6>;
						};
					};
				};
			};
		};
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
@@ -522,62 +579,6 @@ mdata_mem: mpss-metadata {
		};
	};

	rpm-glink {
		compatible = "qcom,glink-rpm";

		interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;

		qcom,rpm-msg-ram = <&rpm_msg_ram>;

		mboxes = <&apcs_glb 0>;

		rpm_requests: rpm-requests {
			compatible = "qcom,rpm-msm8996";
			qcom,glink-channels = "rpm_requests";

			rpmcc: clock-controller {
				compatible = "qcom,rpmcc-msm8996", "qcom,rpmcc";
				#clock-cells = <1>;
				clocks = <&xo_board>;
				clock-names = "xo";
			};

			rpmpd: power-controller {
				compatible = "qcom,msm8996-rpmpd";
				#power-domain-cells = <1>;
				operating-points-v2 = <&rpmpd_opp_table>;

				rpmpd_opp_table: opp-table {
					compatible = "operating-points-v2";

					rpmpd_opp1: opp1 {
						opp-level = <1>;
					};

					rpmpd_opp2: opp2 {
						opp-level = <2>;
					};

					rpmpd_opp3: opp3 {
						opp-level = <3>;
					};

					rpmpd_opp4: opp4 {
						opp-level = <4>;
					};

					rpmpd_opp5: opp5 {
						opp-level = <5>;
					};

					rpmpd_opp6: opp6 {
						opp-level = <6>;
					};
				};
			};
		};
	};

	smem {
		compatible = "qcom,smem";
		memory-region = <&smem_mem>;
+53 −49
Original line number Diff line number Diff line
@@ -321,7 +321,10 @@ psci {
		method = "smc";
	};

	rpm-glink {
	rpm: remoteproc {
		compatible = "qcom,msm8998-rpm-proc", "qcom,rpm-proc";

		glink-edge {
			compatible = "qcom,glink-rpm";

			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
@@ -390,6 +393,7 @@ rpmpd_opp_turbo_plus: opp10 {
				};
			};
		};
	};

	smem {
		compatible = "qcom,smem";
+65 −61
Original line number Diff line number Diff line
@@ -198,6 +198,71 @@ CLUSTER_PD: power-domain-cpu-cluster {
		};
	};

	rpm: remoteproc {
		compatible = "qcom,qcm2290-rpm-proc", "qcom,rpm-proc";

		glink-edge {
			compatible = "qcom,glink-rpm";
			interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
			qcom,rpm-msg-ram = <&rpm_msg_ram>;
			mboxes = <&apcs_glb 0>;

			rpm_requests: rpm-requests {
				compatible = "qcom,rpm-qcm2290";
				qcom,glink-channels = "rpm_requests";

				rpmcc: clock-controller {
					compatible = "qcom,rpmcc-qcm2290", "qcom,rpmcc";
					clocks = <&xo_board>;
					clock-names = "xo";
					#clock-cells = <1>;
				};

				rpmpd: power-controller {
					compatible = "qcom,qcm2290-rpmpd";
					#power-domain-cells = <1>;
					operating-points-v2 = <&rpmpd_opp_table>;

					rpmpd_opp_table: opp-table {
						compatible = "operating-points-v2";

						rpmpd_opp_min_svs: opp1 {
							opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
						};

						rpmpd_opp_low_svs: opp2 {
							opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
						};

						rpmpd_opp_svs: opp3 {
							opp-level = <RPM_SMD_LEVEL_SVS>;
						};

						rpmpd_opp_svs_plus: opp4 {
							opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
						};

						rpmpd_opp_nom: opp5 {
							opp-level = <RPM_SMD_LEVEL_NOM>;
						};

						rpmpd_opp_nom_plus: opp6 {
							opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
						};

						rpmpd_opp_turbo: opp7 {
							opp-level = <RPM_SMD_LEVEL_TURBO>;
						};

						rpmpd_opp_turbo_plus: opp8 {
							opp-level = <RPM_SMD_LEVEL_TURBO_NO_CPR>;
						};
					};
				};
			};
		};
	};

	reserved_memory: reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
@@ -288,67 +353,6 @@ rmtfs_mem: memory@89b01000 {
		};
	};

	rpm-glink {
		compatible = "qcom,glink-rpm";
		interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
		qcom,rpm-msg-ram = <&rpm_msg_ram>;
		mboxes = <&apcs_glb 0>;

		rpm_requests: rpm-requests {
			compatible = "qcom,rpm-qcm2290";
			qcom,glink-channels = "rpm_requests";

			rpmcc: clock-controller {
				compatible = "qcom,rpmcc-qcm2290", "qcom,rpmcc";
				clocks = <&xo_board>;
				clock-names = "xo";
				#clock-cells = <1>;
			};

			rpmpd: power-controller {
				compatible = "qcom,qcm2290-rpmpd";
				#power-domain-cells = <1>;
				operating-points-v2 = <&rpmpd_opp_table>;

				rpmpd_opp_table: opp-table {
					compatible = "operating-points-v2";

					rpmpd_opp_min_svs: opp1 {
						opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
					};

					rpmpd_opp_low_svs: opp2 {
						opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
					};

					rpmpd_opp_svs: opp3 {
						opp-level = <RPM_SMD_LEVEL_SVS>;
					};

					rpmpd_opp_svs_plus: opp4 {
						opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
					};

					rpmpd_opp_nom: opp5 {
						opp-level = <RPM_SMD_LEVEL_NOM>;
					};

					rpmpd_opp_nom_plus: opp6 {
						opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
					};

					rpmpd_opp_turbo: opp7 {
						opp-level = <RPM_SMD_LEVEL_TURBO>;
					};

					rpmpd_opp_turbo_plus: opp8 {
						opp-level = <RPM_SMD_LEVEL_TURBO_NO_CPR>;
					};
				};
			};
		};
	};

	smp2p-adsp {
		compatible = "qcom,smp2p";
		qcom,smem = <443>, <429>;
Loading