arm64: dts: qcom: Add rpm-proc node for SMD platforms
authorStephan Gerhold <stephan@gerhold.net>
Thu, 15 Jun 2023 16:50:43 +0000 (18:50 +0200)
committerBjorn Andersson <andersson@kernel.org>
Fri, 14 Jul 2023 05:19:09 +0000 (22:19 -0700)
Rather than having the RPM SMD channels as the only child of a dummy
SMD node, switch to representing the RPM as remoteproc like all the
other remoteprocs (WCNSS, modem DSP).

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

Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Link: https://lore.kernel.org/r/20230531-rpm-rproc-v3-10-a07dcdefd918@gerhold.net
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/msm8916.dtsi
arch/arm64/boot/dts/qcom/msm8939.dtsi
arch/arm64/boot/dts/qcom/msm8953.dtsi
arch/arm64/boot/dts/qcom/msm8976.dtsi
arch/arm64/boot/dts/qcom/msm8994.dtsi

index 7582c7d..c4d6739 100644 (file)
                };
        };
 
-       smd {
-               compatible = "qcom,smd";
+       rpm: remoteproc {
+               compatible = "qcom,msm8916-rpm-proc", "qcom,rpm-proc";
 
-               rpm {
+               smd-edge {
                        interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
                        qcom,ipc = <&apcs 8 0>;
                        qcom,smd-edge = <15>;
index b5936ae..af6d644 100644 (file)
                interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
        };
 
+       rpm: remoteproc {
+               compatible = "qcom,msm8936-rpm-proc", "qcom,rpm-proc";
+
+               smd-edge {
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+                       qcom,ipc = <&apcs1_mbox 8 0>;
+                       qcom,smd-edge = <15>;
+
+                       rpm_requests: rpm-requests {
+                               compatible = "qcom,rpm-msm8936";
+                               qcom,smd-channels = "rpm_requests";
+
+                               rpmcc: clock-controller {
+                                       compatible = "qcom,rpmcc-msm8936", "qcom,rpmcc";
+                                       #clock-cells = <1>;
+                                       clock-names = "xo";
+                                       clocks = <&xo_board>;
+                               };
+
+                               rpmpd: power-controller {
+                                       compatible = "qcom,msm8939-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>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+       };
+
        reserved-memory {
                #address-cells = <2>;
                #size-cells = <2>;
                };
        };
 
-       smd {
-               compatible = "qcom,smd";
-
-               rpm {
-                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
-                       qcom,ipc = <&apcs1_mbox 8 0>;
-                       qcom,smd-edge = <15>;
-
-                       rpm_requests: rpm-requests {
-                               compatible = "qcom,rpm-msm8936";
-                               qcom,smd-channels = "rpm_requests";
-
-                               rpmcc: clock-controller {
-                                       compatible = "qcom,rpmcc-msm8936", "qcom,rpmcc";
-                                       #clock-cells = <1>;
-                                       clock-names = "xo";
-                                       clocks = <&xo_board>;
-                               };
-
-                               rpmpd: power-controller {
-                                       compatible = "qcom,msm8939-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>;
-                                               };
-                                       };
-                               };
-                       };
-               };
-       };
-
        smp2p-hexagon {
                compatible = "qcom,smp2p";
                qcom,smem = <435>, <428>;
index b711cf9..e7de763 100644 (file)
                method = "smc";
        };
 
+       rpm: remoteproc {
+               compatible = "qcom,msm8953-rpm-proc", "qcom,rpm-proc";
+
+               smd-edge {
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+                       qcom,ipc = <&apcs 8 0>;
+                       qcom,smd-edge = <15>;
+
+                       rpm_requests: rpm-requests {
+                               compatible = "qcom,rpm-msm8953";
+                               qcom,smd-channels = "rpm_requests";
+
+                               rpmcc: clock-controller {
+                                       compatible = "qcom,rpmcc-msm8953", "qcom,rpmcc";
+                                       clocks = <&xo_board>;
+                                       clock-names = "xo";
+                                       #clock-cells = <1>;
+                               };
+
+                               rpmpd: power-controller {
+                                       compatible = "qcom,msm8953-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 = <RPM_SMD_LEVEL_RETENTION>;
+                                               };
+
+                                               rpmpd_opp_ret_plus: opp2 {
+                                                       opp-level = <RPM_SMD_LEVEL_RETENTION_PLUS>;
+                                               };
+
+                                               rpmpd_opp_min_svs: opp3 {
+                                                       opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
+                                               };
+
+                                               rpmpd_opp_low_svs: opp4 {
+                                                       opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
+                                               };
+
+                                               rpmpd_opp_svs: opp5 {
+                                                       opp-level = <RPM_SMD_LEVEL_SVS>;
+                                               };
+
+                                               rpmpd_opp_svs_plus: opp6 {
+                                                       opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
+                                               };
+
+                                               rpmpd_opp_nom: opp7 {
+                                                       opp-level = <RPM_SMD_LEVEL_NOM>;
+                                               };
+
+                                               rpmpd_opp_nom_plus: opp8 {
+                                                       opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
+                                               };
+
+                                               rpmpd_opp_turbo: opp9 {
+                                                       opp-level = <RPM_SMD_LEVEL_TURBO>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+       };
+
        reserved-memory {
                #address-cells = <2>;
                #size-cells = <2>;
                };
        };
 
-       smd {
-               compatible = "qcom,smd";
-
-               rpm {
-                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
-                       qcom,ipc = <&apcs 8 0>;
-                       qcom,smd-edge = <15>;
-
-                       rpm_requests: rpm-requests {
-                               compatible = "qcom,rpm-msm8953";
-                               qcom,smd-channels = "rpm_requests";
-
-                               rpmcc: clock-controller {
-                                       compatible = "qcom,rpmcc-msm8953", "qcom,rpmcc";
-                                       clocks = <&xo_board>;
-                                       clock-names = "xo";
-                                       #clock-cells = <1>;
-                               };
-
-                               rpmpd: power-controller {
-                                       compatible = "qcom,msm8953-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 = <RPM_SMD_LEVEL_RETENTION>;
-                                               };
-
-                                               rpmpd_opp_ret_plus: opp2 {
-                                                       opp-level = <RPM_SMD_LEVEL_RETENTION_PLUS>;
-                                               };
-
-                                               rpmpd_opp_min_svs: opp3 {
-                                                       opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
-                                               };
-
-                                               rpmpd_opp_low_svs: opp4 {
-                                                       opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
-                                               };
-
-                                               rpmpd_opp_svs: opp5 {
-                                                       opp-level = <RPM_SMD_LEVEL_SVS>;
-                                               };
-
-                                               rpmpd_opp_svs_plus: opp6 {
-                                                       opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
-                                               };
-
-                                               rpmpd_opp_nom: opp7 {
-                                                       opp-level = <RPM_SMD_LEVEL_NOM>;
-                                               };
-
-                                               rpmpd_opp_nom_plus: opp8 {
-                                                       opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
-                                               };
-
-                                               rpmpd_opp_turbo: opp9 {
-                                                       opp-level = <RPM_SMD_LEVEL_TURBO>;
-                                               };
-                                       };
-                               };
-                       };
-               };
-       };
-
        smp2p-adsp {
                compatible = "qcom,smp2p";
                qcom,smem = <443>, <429>;
index 753b9a2..ab76806 100644 (file)
                method = "smc";
        };
 
+       rpm: remoteproc {
+               compatible = "qcom,msm8976-rpm-proc", "qcom,rpm-proc";
+
+               smd-edge {
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+                       qcom,ipc = <&apcs 8 0>;
+                       qcom,smd-edge = <15>;
+
+                       rpm_requests: rpm-requests {
+                               compatible = "qcom,rpm-msm8976";
+                               qcom,smd-channels = "rpm_requests";
+
+                               rpmcc: clock-controller {
+                                       compatible = "qcom,rpmcc-msm8976", "qcom,rpmcc";
+                                       clocks = <&xo_board>;
+                                       clock-names = "xo";
+                                       #clock-cells = <1>;
+                               };
+
+                               rpmpd: power-controller {
+                                       compatible = "qcom,msm8976-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 = <RPM_SMD_LEVEL_RETENTION>;
+                                               };
+
+                                               rpmpd_opp_ret_plus: opp2 {
+                                                       opp-level = <RPM_SMD_LEVEL_RETENTION_PLUS>;
+                                               };
+
+                                               rpmpd_opp_min_svs: opp3 {
+                                                       opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
+                                               };
+
+                                               rpmpd_opp_low_svs: opp4 {
+                                                       opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
+                                               };
+
+                                               rpmpd_opp_svs: opp5 {
+                                                       opp-level = <RPM_SMD_LEVEL_SVS>;
+                                               };
+
+                                               rpmpd_opp_svs_plus: opp6 {
+                                                       opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
+                                               };
+
+                                               rpmpd_opp_nom: opp7 {
+                                                       opp-level = <RPM_SMD_LEVEL_NOM>;
+                                               };
+
+                                               rpmpd_opp_nom_plus: opp8 {
+                                                       opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
+                                               };
+
+                                               rpmpd_opp_turbo: opp9 {
+                                                       opp-level = <RPM_SMD_LEVEL_TURBO>;
+                                               };
+
+                                               rpmpd_opp_turbo_no_cpr: opp10 {
+                                                       opp-level = <RPM_SMD_LEVEL_TURBO_NO_CPR>;
+                                               };
+
+                                               rpmpd_opp_turbo_high: opp111 {
+                                                       opp-level = <RPM_SMD_LEVEL_TURBO_HIGH>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+       };
+
        reserved-memory {
                #address-cells = <2>;
                #size-cells = <2>;
                };
        };
 
-       smd {
-               compatible = "qcom,smd";
-
-               rpm {
-                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
-                       qcom,ipc = <&apcs 8 0>;
-                       qcom,smd-edge = <15>;
-
-                       rpm_requests: rpm-requests {
-                               compatible = "qcom,rpm-msm8976";
-                               qcom,smd-channels = "rpm_requests";
-
-                               rpmcc: clock-controller {
-                                       compatible = "qcom,rpmcc-msm8976", "qcom,rpmcc";
-                                       clocks = <&xo_board>;
-                                       clock-names = "xo";
-                                       #clock-cells = <1>;
-                               };
-
-                               rpmpd: power-controller {
-                                       compatible = "qcom,msm8976-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 = <RPM_SMD_LEVEL_RETENTION>;
-                                               };
-
-                                               rpmpd_opp_ret_plus: opp2 {
-                                                       opp-level = <RPM_SMD_LEVEL_RETENTION_PLUS>;
-                                               };
-
-                                               rpmpd_opp_min_svs: opp3 {
-                                                       opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
-                                               };
-
-                                               rpmpd_opp_low_svs: opp4 {
-                                                       opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
-                                               };
-
-                                               rpmpd_opp_svs: opp5 {
-                                                       opp-level = <RPM_SMD_LEVEL_SVS>;
-                                               };
-
-                                               rpmpd_opp_svs_plus: opp6 {
-                                                       opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
-                                               };
-
-                                               rpmpd_opp_nom: opp7 {
-                                                       opp-level = <RPM_SMD_LEVEL_NOM>;
-                                               };
-
-                                               rpmpd_opp_nom_plus: opp8 {
-                                                       opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
-                                               };
-
-                                               rpmpd_opp_turbo: opp9 {
-                                                       opp-level = <RPM_SMD_LEVEL_TURBO>;
-                                               };
-
-                                               rpmpd_opp_turbo_no_cpr: opp10 {
-                                                       opp-level = <RPM_SMD_LEVEL_TURBO_NO_CPR>;
-                                               };
-
-                                               rpmpd_opp_turbo_high: opp111 {
-                                                       opp-level = <RPM_SMD_LEVEL_TURBO_HIGH>;
-                                               };
-                                       };
-                               };
-                       };
-               };
-       };
-
        smsm {
                compatible = "qcom,smsm";
 
index 5a7923d..c374fba 100644 (file)
                method = "hvc";
        };
 
+       rpm: remoteproc {
+               compatible = "qcom,msm8994-rpm-proc", "qcom,rpm-proc";
+
+               smd-edge {
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+                       qcom,ipc = <&apcs 8 0>;
+                       qcom,smd-edge = <15>;
+                       qcom,remote-pid = <6>;
+
+                       rpm_requests: rpm-requests {
+                               compatible = "qcom,rpm-msm8994";
+                               qcom,smd-channels = "rpm_requests";
+
+                               rpmcc: clock-controller {
+                                       compatible = "qcom,rpmcc-msm8994", "qcom,rpmcc";
+                                       #clock-cells = <1>;
+                               };
+
+                               rpmpd: power-controller {
+                                       compatible = "qcom,msm8994-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>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+       };
+
        reserved-memory {
                #address-cells = <2>;
                #size-cells = <2>;
                };
        };
 
-       smd {
-               compatible = "qcom,smd";
-               rpm {
-                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
-                       qcom,ipc = <&apcs 8 0>;
-                       qcom,smd-edge = <15>;
-                       qcom,remote-pid = <6>;
-
-                       rpm_requests: rpm-requests {
-                               compatible = "qcom,rpm-msm8994";
-                               qcom,smd-channels = "rpm_requests";
-
-                               rpmcc: clock-controller {
-                                       compatible = "qcom,rpmcc-msm8994", "qcom,rpmcc";
-                                       #clock-cells = <1>;
-                               };
-
-                               rpmpd: power-controller {
-                                       compatible = "qcom,msm8994-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>;
-                                               };
-                                       };
-                               };
-                       };
-               };
-       };
-
        smem {
                compatible = "qcom,smem";
                memory-region = <&smem_mem>;