[PATCH v2] arm64: dts: qcom: Add coresight node for SM8650

Yuanfang Zhang posted 1 patch 1 month, 2 weeks ago
There is a newer version of this series
arch/arm64/boot/dts/qcom/sm8650.dtsi | 165 +++++++++++++++++++++++++++++++++++
1 file changed, 165 insertions(+)
[PATCH v2] arm64: dts: qcom: Add coresight node for SM8650
Posted by Yuanfang Zhang 1 month, 2 weeks ago
Add coresight components: Funnel, ETE and ETF for SM8650.

Signed-off-by: Yuanfang Zhang <quic_yuanfang@quicinc.com>
---
Changes in v2:
- Update compatible for funnel and etf.
- remove unnecessary property: reg-names and arm,primecell-periphid.
- Link to v1: https://lore.kernel.org/r/20241210-sm8650-cs-dt-v1-1-269693451584@quicinc.com
---
 arch/arm64/boot/dts/qcom/sm8650.dtsi | 165 +++++++++++++++++++++++++++++++++++
 1 file changed, 165 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
index 25e47505adcb790d09f1d2726386438487255824..76620d478e872a2b725693dc32364e2a183572b7 100644
--- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
@@ -5654,6 +5654,171 @@ compute-cb@12 {
 				};
 			};
 		};
+
+		ete0 {
+			compatible = "arm,embedded-trace-extension";
+
+			cpu = <&cpu0>;
+			qcom,skip-power-up;
+
+			out-ports {
+				port {
+					ete0_out_funnel_ete: endpoint {
+						remote-endpoint = <&funnel_ete_in_ete0>;
+					};
+				};
+			};
+		};
+
+		funnel_ete {
+			compatible = "arm,coresight-static-funnel";
+
+			in-ports {
+				port@0 {
+					reg = <0>;
+
+					funnel_ete_in_ete0: endpoint {
+						remote-endpoint = <&ete0_out_funnel_ete>;
+					};
+				};
+			};
+
+			out-ports {
+				port {
+					funnel_ete_out_funnel_apss: endpoint {
+						remote-endpoint = <&funnel_apss_in_funnel_ete>;
+					};
+				};
+			};
+		};
+
+		funnel@13810000 {
+			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+
+			reg = <0x0 0x13810000 0x0 0x1000>;
+
+			clocks = <&aoss_qmp>;
+			clock-names = "apb_pclk";
+
+			in-ports {
+				port@0 {
+					reg = <0>;
+
+					funnel_apss_in_funnel_ete: endpoint {
+						remote-endpoint = <&funnel_ete_out_funnel_apss>;
+					};
+				};
+			};
+
+			out-ports {
+				port {
+					funnel_apss_out_funnel_in1: endpoint {
+						remote-endpoint = <&funnel_in1_in_funnel_apss>;
+					};
+				};
+			};
+		};
+
+		funnel@10042000 {
+			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+
+			reg = <0x0 0x10042000 0x0 0x1000>;
+
+			clocks = <&aoss_qmp>;
+			clock-names = "apb_pclk";
+
+			in-ports {
+				port@4 {
+					reg = <4>;
+
+					funnel_in1_in_funnel_apss: endpoint {
+						remote-endpoint = <&funnel_apss_out_funnel_in1>;
+					};
+				};
+			};
+
+			out-ports {
+				port {
+					funnel_in1_out_funnel_qdss: endpoint {
+						remote-endpoint = <&funnel_qdss_in_funnel_in1>;
+					};
+				};
+			};
+		};
+
+		funnel@10045000 {
+			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+
+			reg = <0x0 0x10045000 0x0 0x1000>;
+
+			clocks = <&aoss_qmp>;
+			clock-names = "apb_pclk";
+
+			in-ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port@1 {
+					reg = <1>;
+
+					funnel_qdss_in_funnel_in1: endpoint {
+						remote-endpoint = <&funnel_in1_out_funnel_qdss>;
+					};
+				};
+			};
+
+			out-ports {
+				port {
+					funnel_qdss_out_funnel_aoss: endpoint {
+						remote-endpoint = <&funnel_aoss_in_funnel_qdss>;
+					};
+				};
+			};
+		};
+
+		funnel@10b04000 {
+			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+
+			reg = <0x0 0x10b04000 0x0 0x1000>;
+
+			clocks = <&aoss_qmp>;
+			clock-names = "apb_pclk";
+
+			in-ports {
+				port@7 {
+					reg = <7>;
+
+					funnel_aoss_in_funnel_qdss: endpoint {
+						remote-endpoint = <&funnel_qdss_out_funnel_aoss>;
+					};
+				};
+			};
+
+			out-ports {
+				port {
+					funnel_aoss_out_tmc_etf: endpoint {
+						remote-endpoint = <&tmc_etf_in_funnel_aoss>;
+					};
+				};
+			};
+		};
+
+		tmc@10b05000 {
+			compatible = "arm,coresight-tmc", "arm,primecell";
+
+			reg = <0x0 0x10b05000 0x0 0x1000>;
+
+			clocks = <&aoss_qmp>;
+			clock-names = "apb_pclk";
+
+			in-ports {
+				port {
+					tmc_etf_in_funnel_aoss: endpoint {
+						remote-endpoint = <&funnel_aoss_out_tmc_etf>;
+					};
+				};
+			};
+		};
 	};
 
 	thermal-zones {

---
base-commit: fac04efc5c793dccbd07e2d59af9f90b7fc0dca4
change-id: 20241209-sm8650-cs-dt-ad649dcfa5e8

Best regards,
-- 
Yuanfang Zhang <quic_yuanfang@quicinc.com>
Re: [PATCH v2] arm64: dts: qcom: Add coresight node for SM8650
Posted by Krzysztof Kozlowski 1 month, 2 weeks ago
On 10/12/2024 09:23, Yuanfang Zhang wrote:
> Add coresight components: Funnel, ETE and ETF for SM8650.
> 
> Signed-off-by: Yuanfang Zhang <quic_yuanfang@quicinc.com>
> ---

Please use subject prefixes matching the subsystem. You can get them for
example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
your patch is touching. For bindings, the preferred subjects are
explained here:
https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters

> Changes in v2:
> - Update compatible for funnel and etf.
> - remove unnecessary property: reg-names and arm,primecell-periphid.
> - Link to v1: https://lore.kernel.org/r/20241210-sm8650-cs-dt-v1-1-269693451584@quicinc.com
> ---
>  arch/arm64/boot/dts/qcom/sm8650.dtsi | 165 +++++++++++++++++++++++++++++++++++
>  1 file changed, 165 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
> index 25e47505adcb790d09f1d2726386438487255824..76620d478e872a2b725693dc32364e2a183572b7 100644
> --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
> @@ -5654,6 +5654,171 @@ compute-cb@12 {
>  				};
>  			};
>  		};
> +
> +		ete0 {

ete or ete-0

> +			compatible = "arm,embedded-trace-extension";
> +
> +			cpu = <&cpu0>;
> +			qcom,skip-power-up;
> +
> +			out-ports {
> +				port {
> +					ete0_out_funnel_ete: endpoint {
> +						remote-endpoint = <&funnel_ete_in_ete0>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel_ete {


Follow DTS coding style. Don't send us your downstream code.

> +			compatible = "arm,coresight-static-funnel";
> +
> +			in-ports {
> +				port@0 {
> +					reg = <0>;
> +
> +					funnel_ete_in_ete0: endpoint {
> +						remote-endpoint = <&ete0_out_funnel_ete>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_ete_out_funnel_apss: endpoint {
> +						remote-endpoint = <&funnel_apss_in_funnel_ete>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel@13810000 {

This is all wrongly placed. And tools would tell you that. But anyway,
do not introduce different style. Look how all other nodes are placed.

It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).



> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
> +
> +			reg = <0x0 0x13810000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {
> +				port@0 {
> +					reg = <0>;
> +
> +					funnel_apss_in_funnel_ete: endpoint {
> +						remote-endpoint = <&funnel_ete_out_funnel_apss>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_apss_out_funnel_in1: endpoint {
> +						remote-endpoint = <&funnel_in1_in_funnel_apss>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel@10042000 {
> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
> +
> +			reg = <0x0 0x10042000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {
> +				port@4 {
> +					reg = <4>;
> +
> +					funnel_in1_in_funnel_apss: endpoint {
> +						remote-endpoint = <&funnel_apss_out_funnel_in1>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_in1_out_funnel_qdss: endpoint {
> +						remote-endpoint = <&funnel_qdss_in_funnel_in1>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel@10045000 {
> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
> +
> +			reg = <0x0 0x10045000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				port@1 {
> +					reg = <1>;
> +
> +					funnel_qdss_in_funnel_in1: endpoint {
> +						remote-endpoint = <&funnel_in1_out_funnel_qdss>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_qdss_out_funnel_aoss: endpoint {
> +						remote-endpoint = <&funnel_aoss_in_funnel_qdss>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel@10b04000 {
> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
> +
> +			reg = <0x0 0x10b04000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {

It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).

> +				port@7 {
> +					reg = <7>;
> +
> +					funnel_aoss_in_funnel_qdss: endpoint {
> +						remote-endpoint = <&funnel_qdss_out_funnel_aoss>;
> +					};
> +				};
> +			};
> +
Best regards,
Krzysztof
Re: [PATCH v2] arm64: dts: qcom: Add coresight node for SM8650
Posted by Yuanfang Zhang 3 weeks, 1 day ago

On 12/13/2024 4:07 PM, Krzysztof Kozlowski wrote:
> On 10/12/2024 09:23, Yuanfang Zhang wrote:
>> Add coresight components: Funnel, ETE and ETF for SM8650.
>>
>> Signed-off-by: Yuanfang Zhang <quic_yuanfang@quicinc.com>
>> ---
> 
> Please use subject prefixes matching the subsystem. You can get them for
> example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
> your patch is touching. For bindings, the preferred subjects are
> explained here:
> https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters
> 
>> Changes in v2:
>> - Update compatible for funnel and etf.
>> - remove unnecessary property: reg-names and arm,primecell-periphid.
>> - Link to v1: https://lore.kernel.org/r/20241210-sm8650-cs-dt-v1-1-269693451584@quicinc.com
>> ---
>>  arch/arm64/boot/dts/qcom/sm8650.dtsi | 165 +++++++++++++++++++++++++++++++++++
>>  1 file changed, 165 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> index 25e47505adcb790d09f1d2726386438487255824..76620d478e872a2b725693dc32364e2a183572b7 100644
>> --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> @@ -5654,6 +5654,171 @@ compute-cb@12 {
>>  				};
>>  			};
>>  		};
>> +
>> +		ete0 {
> 
> ete or ete-0
As node name pattern: "^ete([0-9a-f]+)$" in arm,embedded-trace-extension.yaml,
then name it ete0.
> 
>> +			compatible = "arm,embedded-trace-extension";
>> +
>> +			cpu = <&cpu0>;
>> +			qcom,skip-power-up;
>> +
>> +			out-ports {
>> +				port {
>> +					ete0_out_funnel_ete: endpoint {
>> +						remote-endpoint = <&funnel_ete_in_ete0>;
>> +					};
>> +				};
>> +			};
>> +		};
>> +
>> +		funnel_ete {
> 
> 
> Follow DTS coding style. Don't send us your downstream code.
> 
>> +			compatible = "arm,coresight-static-funnel";
>> +
>> +			in-ports {
>> +				port@0 {
>> +					reg = <0>;
>> +
>> +					funnel_ete_in_ete0: endpoint {
>> +						remote-endpoint = <&ete0_out_funnel_ete>;
>> +					};
>> +				};
>> +			};
>> +
>> +			out-ports {
>> +				port {
>> +					funnel_ete_out_funnel_apss: endpoint {
>> +						remote-endpoint = <&funnel_apss_in_funnel_ete>;
>> +					};
>> +				};
>> +			};
>> +		};
>> +
>> +		funnel@13810000 {
> 
> This is all wrongly placed. And tools would tell you that. But anyway,
> do not introduce different style. Look how all other nodes are placed.
> 
> It does not look like you tested the DTS against bindings. Please run
> `make dtbs_check W=1` (see
> Documentation/devicetree/bindings/writing-schema.rst or
> https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
> for instructions).
Done.
> 
> 
> 
>> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
>> +
>> +			reg = <0x0 0x13810000 0x0 0x1000>;
>> +
>> +			clocks = <&aoss_qmp>;
>> +			clock-names = "apb_pclk";
>> +
>> +			in-ports {
>> +				port@0 {
>> +					reg = <0>;
>> +
>> +					funnel_apss_in_funnel_ete: endpoint {
>> +						remote-endpoint = <&funnel_ete_out_funnel_apss>;
>> +					};
>> +				};
>> +			};
>> +
>> +			out-ports {
>> +				port {
>> +					funnel_apss_out_funnel_in1: endpoint {
>> +						remote-endpoint = <&funnel_in1_in_funnel_apss>;
>> +					};
>> +				};
>> +			};
>> +		};
>> +
>> +		funnel@10042000 {
>> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
>> +
>> +			reg = <0x0 0x10042000 0x0 0x1000>;
>> +
>> +			clocks = <&aoss_qmp>;
>> +			clock-names = "apb_pclk";
>> +
>> +			in-ports {
>> +				port@4 {
>> +					reg = <4>;
>> +
>> +					funnel_in1_in_funnel_apss: endpoint {
>> +						remote-endpoint = <&funnel_apss_out_funnel_in1>;
>> +					};
>> +				};
>> +			};
>> +
>> +			out-ports {
>> +				port {
>> +					funnel_in1_out_funnel_qdss: endpoint {
>> +						remote-endpoint = <&funnel_qdss_in_funnel_in1>;
>> +					};
>> +				};
>> +			};
>> +		};
>> +
>> +		funnel@10045000 {
>> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
>> +
>> +			reg = <0x0 0x10045000 0x0 0x1000>;
>> +
>> +			clocks = <&aoss_qmp>;
>> +			clock-names = "apb_pclk";
>> +
>> +			in-ports {
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +
>> +				port@1 {
>> +					reg = <1>;
>> +
>> +					funnel_qdss_in_funnel_in1: endpoint {
>> +						remote-endpoint = <&funnel_in1_out_funnel_qdss>;
>> +					};
>> +				};
>> +			};
>> +
>> +			out-ports {
>> +				port {
>> +					funnel_qdss_out_funnel_aoss: endpoint {
>> +						remote-endpoint = <&funnel_aoss_in_funnel_qdss>;
>> +					};
>> +				};
>> +			};
>> +		};
>> +
>> +		funnel@10b04000 {
>> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
>> +
>> +			reg = <0x0 0x10b04000 0x0 0x1000>;
>> +
>> +			clocks = <&aoss_qmp>;
>> +			clock-names = "apb_pclk";
>> +
>> +			in-ports {
> 
> It does not look like you tested the DTS against bindings. Please run
> `make dtbs_check W=1` (see
> Documentation/devicetree/bindings/writing-schema.rst or
> https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
> for instructions).
Done.
> 
>> +				port@7 {
>> +					reg = <7>;
>> +
>> +					funnel_aoss_in_funnel_qdss: endpoint {
>> +						remote-endpoint = <&funnel_qdss_out_funnel_aoss>;
>> +					};
>> +				};
>> +			};
>> +
> Best regards,
> Krzysztof
Re: [PATCH v2] arm64: dts: qcom: Add coresight node for SM8650
Posted by Konrad Dybcio 1 month, 2 weeks ago
On 10.12.2024 9:23 AM, Yuanfang Zhang wrote:
> Add coresight components: Funnel, ETE and ETF for SM8650.
> 
> Signed-off-by: Yuanfang Zhang <quic_yuanfang@quicinc.com>
> ---
> Changes in v2:
> - Update compatible for funnel and etf.
> - remove unnecessary property: reg-names and arm,primecell-periphid.
> - Link to v1: https://lore.kernel.org/r/20241210-sm8650-cs-dt-v1-1-269693451584@quicinc.com
> ---
>  arch/arm64/boot/dts/qcom/sm8650.dtsi | 165 +++++++++++++++++++++++++++++++++++
>  1 file changed, 165 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
> index 25e47505adcb790d09f1d2726386438487255824..76620d478e872a2b725693dc32364e2a183572b7 100644
> --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
> @@ -5654,6 +5654,171 @@ compute-cb@12 {
>  				};
>  			};
>  		};
> +
> +		ete0 {
> +			compatible = "arm,embedded-trace-extension";
> +
> +			cpu = <&cpu0>;
> +			qcom,skip-power-up;
> +
> +			out-ports {
> +				port {
> +					ete0_out_funnel_ete: endpoint {
> +						remote-endpoint = <&funnel_ete_in_ete0>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel_ete {

Node names must not contain underscores, use '-' instead

Also, nodes without a reg property/unit address don't belong under /soc

Konrad
Re: [PATCH v2] arm64: dts: qcom: Add coresight node for SM8650
Posted by Yuanfang Zhang 3 weeks, 1 day ago

On 12/13/2024 1:04 AM, Konrad Dybcio wrote:
> On 10.12.2024 9:23 AM, Yuanfang Zhang wrote:
>> Add coresight components: Funnel, ETE and ETF for SM8650.
>>
>> Signed-off-by: Yuanfang Zhang <quic_yuanfang@quicinc.com>
>> ---
>> Changes in v2:
>> - Update compatible for funnel and etf.
>> - remove unnecessary property: reg-names and arm,primecell-periphid.
>> - Link to v1: https://lore.kernel.org/r/20241210-sm8650-cs-dt-v1-1-269693451584@quicinc.com
>> ---
>>  arch/arm64/boot/dts/qcom/sm8650.dtsi | 165 +++++++++++++++++++++++++++++++++++
>>  1 file changed, 165 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> index 25e47505adcb790d09f1d2726386438487255824..76620d478e872a2b725693dc32364e2a183572b7 100644
>> --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> @@ -5654,6 +5654,171 @@ compute-cb@12 {
>>  				};
>>  			};
>>  		};
>> +
>> +		ete0 {
>> +			compatible = "arm,embedded-trace-extension";
>> +
>> +			cpu = <&cpu0>;
>> +			qcom,skip-power-up;
>> +
>> +			out-ports {
>> +				port {
>> +					ete0_out_funnel_ete: endpoint {
>> +						remote-endpoint = <&funnel_ete_in_ete0>;
>> +					};
>> +				};
>> +			};
>> +		};
>> +
>> +		funnel_ete {
> 
> Node names must not contain underscores, use '-' instead
As node name pattern: "^ete([0-9a-f]+)$" in arm,embedded-trace-extension.yaml,
then name it ete0.
> 
> Also, nodes without a reg property/unit address don't belong under /soc
> 
Done.
> Konrad
Re: [PATCH v2] arm64: dts: qcom: Add coresight node for SM8650
Posted by neil.armstrong@linaro.org 1 month, 2 weeks ago
Hi,

On 10/12/2024 09:23, Yuanfang Zhang wrote:
> Add coresight components: Funnel, ETE and ETF for SM8650.

Is there a way to validate those are working fine ?

Thanks,
Neil

> 
> Signed-off-by: Yuanfang Zhang <quic_yuanfang@quicinc.com>
> ---
> Changes in v2:
> - Update compatible for funnel and etf.
> - remove unnecessary property: reg-names and arm,primecell-periphid.
> - Link to v1: https://lore.kernel.org/r/20241210-sm8650-cs-dt-v1-1-269693451584@quicinc.com
> ---
>   arch/arm64/boot/dts/qcom/sm8650.dtsi | 165 +++++++++++++++++++++++++++++++++++
>   1 file changed, 165 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
> index 25e47505adcb790d09f1d2726386438487255824..76620d478e872a2b725693dc32364e2a183572b7 100644
> --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
> @@ -5654,6 +5654,171 @@ compute-cb@12 {
>   				};
>   			};
>   		};
> +
> +		ete0 {
> +			compatible = "arm,embedded-trace-extension";
> +
> +			cpu = <&cpu0>;
> +			qcom,skip-power-up;
> +
> +			out-ports {
> +				port {
> +					ete0_out_funnel_ete: endpoint {
> +						remote-endpoint = <&funnel_ete_in_ete0>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel_ete {
> +			compatible = "arm,coresight-static-funnel";
> +
> +			in-ports {
> +				port@0 {
> +					reg = <0>;
> +
> +					funnel_ete_in_ete0: endpoint {
> +						remote-endpoint = <&ete0_out_funnel_ete>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_ete_out_funnel_apss: endpoint {
> +						remote-endpoint = <&funnel_apss_in_funnel_ete>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel@13810000 {
> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
> +
> +			reg = <0x0 0x13810000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {
> +				port@0 {
> +					reg = <0>;
> +
> +					funnel_apss_in_funnel_ete: endpoint {
> +						remote-endpoint = <&funnel_ete_out_funnel_apss>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_apss_out_funnel_in1: endpoint {
> +						remote-endpoint = <&funnel_in1_in_funnel_apss>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel@10042000 {
> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
> +
> +			reg = <0x0 0x10042000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {
> +				port@4 {
> +					reg = <4>;
> +
> +					funnel_in1_in_funnel_apss: endpoint {
> +						remote-endpoint = <&funnel_apss_out_funnel_in1>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_in1_out_funnel_qdss: endpoint {
> +						remote-endpoint = <&funnel_qdss_in_funnel_in1>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel@10045000 {
> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
> +
> +			reg = <0x0 0x10045000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				port@1 {
> +					reg = <1>;
> +
> +					funnel_qdss_in_funnel_in1: endpoint {
> +						remote-endpoint = <&funnel_in1_out_funnel_qdss>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_qdss_out_funnel_aoss: endpoint {
> +						remote-endpoint = <&funnel_aoss_in_funnel_qdss>;
> +					};
> +				};
> +			};
> +		};
> +
> +		funnel@10b04000 {
> +			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
> +
> +			reg = <0x0 0x10b04000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {
> +				port@7 {
> +					reg = <7>;
> +
> +					funnel_aoss_in_funnel_qdss: endpoint {
> +						remote-endpoint = <&funnel_qdss_out_funnel_aoss>;
> +					};
> +				};
> +			};
> +
> +			out-ports {
> +				port {
> +					funnel_aoss_out_tmc_etf: endpoint {
> +						remote-endpoint = <&tmc_etf_in_funnel_aoss>;
> +					};
> +				};
> +			};
> +		};
> +
> +		tmc@10b05000 {
> +			compatible = "arm,coresight-tmc", "arm,primecell";
> +
> +			reg = <0x0 0x10b05000 0x0 0x1000>;
> +
> +			clocks = <&aoss_qmp>;
> +			clock-names = "apb_pclk";
> +
> +			in-ports {
> +				port {
> +					tmc_etf_in_funnel_aoss: endpoint {
> +						remote-endpoint = <&funnel_aoss_out_tmc_etf>;
> +					};
> +				};
> +			};
> +		};
>   	};
>   
>   	thermal-zones {
> 
> ---
> base-commit: fac04efc5c793dccbd07e2d59af9f90b7fc0dca4
> change-id: 20241209-sm8650-cs-dt-ad649dcfa5e8
> 
> Best regards,
Re: [PATCH v2] arm64: dts: qcom: Add coresight node for SM8650
Posted by Yuanfang Zhang 1 month, 2 weeks ago

On 12/11/2024 6:48 PM, neil.armstrong@linaro.org wrote:
> Hi,
> 
> On 10/12/2024 09:23, Yuanfang Zhang wrote:
>> Add coresight components: Funnel, ETE and ETF for SM8650.
> 
> Is there a way to validate those are working fine ?
> 
> Thanks,
> Neil
> 
Yes, these can be verified on Snapdragon 8Gen3 platforms, after boot up,
these nodes can be found under /sys/bus/coresight/devices/.

thanks,
yuanfang

>>
>> Signed-off-by: Yuanfang Zhang <quic_yuanfang@quicinc.com>
>> ---
>> Changes in v2:
>> - Update compatible for funnel and etf.
>> - remove unnecessary property: reg-names and arm,primecell-periphid.
>> - Link to v1: https://lore.kernel.org/r/20241210-sm8650-cs-dt-v1-1-269693451584@quicinc.com
>> ---
>>   arch/arm64/boot/dts/qcom/sm8650.dtsi | 165 +++++++++++++++++++++++++++++++++++
>>   1 file changed, 165 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> index 25e47505adcb790d09f1d2726386438487255824..76620d478e872a2b725693dc32364e2a183572b7 100644
>> --- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
>> @@ -5654,6 +5654,171 @@ compute-cb@12 {
>>                   };
>>               };
>>           };
>> +
>> +        ete0 {
>> +            compatible = "arm,embedded-trace-extension";
>> +
>> +            cpu = <&cpu0>;
>> +            qcom,skip-power-up;
>> +
>> +            out-ports {
>> +                port {
>> +                    ete0_out_funnel_ete: endpoint {
>> +                        remote-endpoint = <&funnel_ete_in_ete0>;
>> +                    };
>> +                };
>> +            };
>> +        };
>> +
>> +        funnel_ete {
>> +            compatible = "arm,coresight-static-funnel";
>> +
>> +            in-ports {
>> +                port@0 {
>> +                    reg = <0>;
>> +
>> +                    funnel_ete_in_ete0: endpoint {
>> +                        remote-endpoint = <&ete0_out_funnel_ete>;
>> +                    };
>> +                };
>> +            };
>> +
>> +            out-ports {
>> +                port {
>> +                    funnel_ete_out_funnel_apss: endpoint {
>> +                        remote-endpoint = <&funnel_apss_in_funnel_ete>;
>> +                    };
>> +                };
>> +            };
>> +        };
>> +
>> +        funnel@13810000 {
>> +            compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
>> +
>> +            reg = <0x0 0x13810000 0x0 0x1000>;
>> +
>> +            clocks = <&aoss_qmp>;
>> +            clock-names = "apb_pclk";
>> +
>> +            in-ports {
>> +                port@0 {
>> +                    reg = <0>;
>> +
>> +                    funnel_apss_in_funnel_ete: endpoint {
>> +                        remote-endpoint = <&funnel_ete_out_funnel_apss>;
>> +                    };
>> +                };
>> +            };
>> +
>> +            out-ports {
>> +                port {
>> +                    funnel_apss_out_funnel_in1: endpoint {
>> +                        remote-endpoint = <&funnel_in1_in_funnel_apss>;
>> +                    };
>> +                };
>> +            };
>> +        };
>> +
>> +        funnel@10042000 {
>> +            compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
>> +
>> +            reg = <0x0 0x10042000 0x0 0x1000>;
>> +
>> +            clocks = <&aoss_qmp>;
>> +            clock-names = "apb_pclk";
>> +
>> +            in-ports {
>> +                port@4 {
>> +                    reg = <4>;
>> +
>> +                    funnel_in1_in_funnel_apss: endpoint {
>> +                        remote-endpoint = <&funnel_apss_out_funnel_in1>;
>> +                    };
>> +                };
>> +            };
>> +
>> +            out-ports {
>> +                port {
>> +                    funnel_in1_out_funnel_qdss: endpoint {
>> +                        remote-endpoint = <&funnel_qdss_in_funnel_in1>;
>> +                    };
>> +                };
>> +            };
>> +        };
>> +
>> +        funnel@10045000 {
>> +            compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
>> +
>> +            reg = <0x0 0x10045000 0x0 0x1000>;
>> +
>> +            clocks = <&aoss_qmp>;
>> +            clock-names = "apb_pclk";
>> +
>> +            in-ports {
>> +                #address-cells = <1>;
>> +                #size-cells = <0>;
>> +
>> +                port@1 {
>> +                    reg = <1>;
>> +
>> +                    funnel_qdss_in_funnel_in1: endpoint {
>> +                        remote-endpoint = <&funnel_in1_out_funnel_qdss>;
>> +                    };
>> +                };
>> +            };
>> +
>> +            out-ports {
>> +                port {
>> +                    funnel_qdss_out_funnel_aoss: endpoint {
>> +                        remote-endpoint = <&funnel_aoss_in_funnel_qdss>;
>> +                    };
>> +                };
>> +            };
>> +        };
>> +
>> +        funnel@10b04000 {
>> +            compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
>> +
>> +            reg = <0x0 0x10b04000 0x0 0x1000>;
>> +
>> +            clocks = <&aoss_qmp>;
>> +            clock-names = "apb_pclk";
>> +
>> +            in-ports {
>> +                port@7 {
>> +                    reg = <7>;
>> +
>> +                    funnel_aoss_in_funnel_qdss: endpoint {
>> +                        remote-endpoint = <&funnel_qdss_out_funnel_aoss>;
>> +                    };
>> +                };
>> +            };
>> +
>> +            out-ports {
>> +                port {
>> +                    funnel_aoss_out_tmc_etf: endpoint {
>> +                        remote-endpoint = <&tmc_etf_in_funnel_aoss>;
>> +                    };
>> +                };
>> +            };
>> +        };
>> +
>> +        tmc@10b05000 {
>> +            compatible = "arm,coresight-tmc", "arm,primecell";
>> +
>> +            reg = <0x0 0x10b05000 0x0 0x1000>;
>> +
>> +            clocks = <&aoss_qmp>;
>> +            clock-names = "apb_pclk";
>> +
>> +            in-ports {
>> +                port {
>> +                    tmc_etf_in_funnel_aoss: endpoint {
>> +                        remote-endpoint = <&funnel_aoss_out_tmc_etf>;
>> +                    };
>> +                };
>> +            };
>> +        };
>>       };
>>         thermal-zones {
>>
>> ---
>> base-commit: fac04efc5c793dccbd07e2d59af9f90b7fc0dca4
>> change-id: 20241209-sm8650-cs-dt-ad649dcfa5e8
>>
>> Best regards,
>