Re: [PATCH 11/14] arm64: dts: qcom: Add rpm-proc node for SMD platforms

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 5.06.2023 09:08, Stephan Gerhold wrote:
> 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.
> 
> Signed-off-by: Stephan Gerhold <stephan@xxxxxxxxxxx>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx>

Konrad
>  arch/arm64/boot/dts/qcom/msm8916.dtsi |   6 +-
>  arch/arm64/boot/dts/qcom/msm8939.dtsi | 112 ++++++++++++-------------
>  arch/arm64/boot/dts/qcom/msm8953.dtsi | 136 +++++++++++++++---------------
>  arch/arm64/boot/dts/qcom/msm8976.dtsi | 152 +++++++++++++++++-----------------
>  arch/arm64/boot/dts/qcom/msm8994.dtsi |  99 +++++++++++-----------
>  5 files changed, 253 insertions(+), 252 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> index 9494b6512d87..667748612d3e 100644
> --- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> @@ -282,10 +282,10 @@ CLUSTER_PD: power-domain-cluster {
>  		};
>  	};
>  
> -	smd {
> -		compatible = "qcom,smd";
> +	rpm: remoteproc-rpm {
> +		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>;
> diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> index 0d9f8b951b66..f11d522586eb 100644
> --- a/arch/arm64/boot/dts/qcom/msm8939.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> @@ -240,6 +240,62 @@ pmu {
>  		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
>  	};
>  
> +	rpm: remoteproc-rpm {
> +		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>;
> @@ -308,62 +364,6 @@ mba_mem: mba@8cb00000 {
>  		};
>  	};
>  
> -	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>;
> diff --git a/arch/arm64/boot/dts/qcom/msm8953.dtsi b/arch/arm64/boot/dts/qcom/msm8953.dtsi
> index 7d193a467819..4b2f02850a10 100644
> --- a/arch/arm64/boot/dts/qcom/msm8953.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8953.dtsi
> @@ -190,6 +190,74 @@ psci {
>  		method = "smc";
>  	};
>  
> +	rpm: remoteproc-rpm {
> +		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>;
> @@ -263,74 +331,6 @@ rmtfs@f2d00000 {
>  		};
>  	};
>  
> -	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>;
> diff --git a/arch/arm64/boot/dts/qcom/msm8976.dtsi b/arch/arm64/boot/dts/qcom/msm8976.dtsi
> index 753b9a2105ed..6f856562923f 100644
> --- a/arch/arm64/boot/dts/qcom/msm8976.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8976.dtsi
> @@ -232,6 +232,82 @@ psci {
>  		method = "smc";
>  	};
>  
> +	rpm: remoteproc-rpm {
> +		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>;
> @@ -346,82 +422,6 @@ wcnss_smp2p_in: slave-kernel {
>  		};
>  	};
>  
> -	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";
>  
> diff --git a/arch/arm64/boot/dts/qcom/msm8994.dtsi b/arch/arm64/boot/dts/qcom/msm8994.dtsi
> index 5a7923d7c62a..6168d0aeff57 100644
> --- a/arch/arm64/boot/dts/qcom/msm8994.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8994.dtsi
> @@ -178,6 +178,56 @@ psci {
>  		method = "hvc";
>  	};
>  
> +	rpm: remoteproc-rpm {
> +		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>;
> @@ -237,55 +287,6 @@ reserved@6c00000 {
>  		};
>  	};
>  
> -	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>;
> 



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux