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

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

 



On 17/01/2025 09:20, Yuanfang Zhang wrote:


On 1/16/2025 11:57 PM, neil.armstrong@xxxxxxxxxx wrote:
Hi,

On 07/01/2025 09:48, Yuanfang Zhang wrote:
Add coresight components: Funnel, ETE and ETF for SM8650.

Signed-off-by: Yuanfang Zhang <quic_yuanfang@xxxxxxxxxxx>
---
Changes in v4:
- Re-sort these nodes by address.
- Link to v3: https://lore.kernel.org/r/20250103-sm8650-cs-dt-v3-1-759a3f6a3cc8@xxxxxxxxxxx

Changes in v3:
- Move ete0 and funnel-ete to /.
- Update coding style.
- Link to v2: https://lore.kernel.org/r/20241210-sm8650-cs-dt-v2-1-cf24c6c9bddc@xxxxxxxxxxx

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@xxxxxxxxxxx
---
   arch/arm64/boot/dts/qcom/sm8650.dtsi | 166 +++++++++++++++++++++++++++++++++++
   1 file changed, 166 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
index 25e47505adcb790d09f1d2726386438487255824..49d6567fbd2e68b66b517d8d9180c7443f8bf611 100644
--- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
@@ -365,6 +365,40 @@ cluster_sleep_1: cluster-sleep-1 {
           };
       };
   +    ete0 {
+        compatible = "arm,embedded-trace-extension";
+
+        cpu = <&cpu0>;
+
+        out-ports {
+            port {
+                ete0_out_funnel_ete: endpoint {
+                    remote-endpoint = <&funnel_ete_in_ete0>;
+                };
+            };
+        };
+    };

Why only the cpu0 ete has been added ?

And why are the other components (TPDA, TPDM, STM, CTI...) missing ?

Neil

At present, only ete0 is used, and other components can be added later if need.


Hmm, ok so I added the other CPUs and I was able to trace on all cpus, so I was wondering why
at least those were not added because having only ete0 declared is quite useless.

=============><===========================================================
+	ete1 {
+		compatible = "arm,embedded-trace-extension";
+
+		cpu = <&cpu1>;
+
+		out-ports {
+			port {
+				ete1_out_funnel_ete: endpoint {
+					remote-endpoint = <&funnel_ete_in_ete1>;
+				};
+			};
+		};
+	};
+
+	ete2 {
+		compatible = "arm,embedded-trace-extension";
+
+		cpu = <&cpu2>;
+
+		out-ports {
+			port {
+				ete2_out_funnel_ete: endpoint {
+					remote-endpoint = <&funnel_ete_in_ete2>;
+				};
+			};
+		};
+	};
+
+	ete3 {
+		compatible = "arm,embedded-trace-extension";
+
+		cpu = <&cpu3>;
+
+		out-ports {
+			port {
+				ete3_out_funnel_ete: endpoint {
+					remote-endpoint = <&funnel_ete_in_ete3>;
+				};
+			};
+		};
+	};
+
+	ete4 {
+		compatible = "arm,embedded-trace-extension";
+
+		cpu = <&cpu4>;
+
+		out-ports {
+			port {
+				ete4_out_funnel_ete: endpoint {
+					remote-endpoint = <&funnel_ete_in_ete4>;
+				};
+			};
+		};
+	};
+
+	ete5 {
+		compatible = "arm,embedded-trace-extension";
+
+		cpu = <&cpu5>;
+
+		out-ports {
+			port {
+				ete5_out_funnel_ete: endpoint {
+					remote-endpoint = <&funnel_ete_in_ete5>;
+				};
+			};
+		};
+	};
+
+	ete6 {
+		compatible = "arm,embedded-trace-extension";
+
+		cpu = <&cpu6>;
+
+		out-ports {
+			port {
+				ete6_out_funnel_ete: endpoint {
+					remote-endpoint = <&funnel_ete_in_ete6>;
+				};
+			};
+		};
+	};
+
+	ete7 {
+		compatible = "arm,embedded-trace-extension";
+
+		cpu = <&cpu7>;
+
+		out-ports {
+			port {
+				ete7_out_funnel_ete: endpoint {
+					remote-endpoint = <&funnel_ete_in_ete7>;
+				};
+			};
+		};
+	};
+
 	funnel-ete {
 		compatible = "arm,coresight-static-funnel";

 		in-ports {
-			port {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
 				funnel_ete_in_ete0: endpoint {
 					remote-endpoint = <&ete0_out_funnel_ete>;
 				};
 			};
+
+			port@1 {
+				reg = <1>;
+				funnel_ete_in_ete1: endpoint {
+					remote-endpoint = <&ete1_out_funnel_ete>;
+				};
+			};
+
+			port@2 {
+				reg = <2>;
+				funnel_ete_in_ete2: endpoint {
+					remote-endpoint = <&ete2_out_funnel_ete>;
+				};
+			};
+
+			port@3 {
+				reg = <3>;
+				funnel_ete_in_ete3: endpoint {
+					remote-endpoint = <&ete3_out_funnel_ete>;
+				};
+			};
+
+			port@4 {
+				reg = <4>;
+				funnel_ete_in_ete4: endpoint {
+					remote-endpoint = <&ete4_out_funnel_ete>;
+				};
+			};
+
+			port@5 {
+				reg = <5>;
+				funnel_ete_in_ete5: endpoint {
+					remote-endpoint = <&ete5_out_funnel_ete>;
+				};
+			};
+
+			port@6 {
+				reg = <6>;
+				funnel_ete_in_ete6: endpoint {
+					remote-endpoint = <&ete6_out_funnel_ete>;
+				};
+			};
+
+			port@7 {
+				reg = <7>;
+				funnel_ete_in_ete7: endpoint {
+					remote-endpoint = <&ete7_out_funnel_ete>;
+				};
+			};
 		};
=============><===========================================================


+
+    funnel-ete {
+        compatible = "arm,coresight-static-funnel";
+
+        in-ports {
+            port {
+                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>;
+                };
+            };
+        };
+    };
+
       firmware {
           scm: scm {
               compatible = "qcom,scm-sm8650", "qcom,scm";
@@ -4854,6 +4888,138 @@ data-pins {
               };
           };
   +        funnel@10042000 {
+            compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+
+            reg = <0x0 0x10042000 0x0 0x1000>;
+
+            clocks = <&aoss_qmp>;
+            clock-names = "apb_pclk";
+
+            in-ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                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 {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                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>;
+                    };
+                };
+            };
+        };
+
+        funnel@13810000 {
+            compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+
+            reg = <0x0 0x13810000 0x0 0x1000>;
+
+            clocks = <&aoss_qmp>;
+            clock-names = "apb_pclk";
+
+            in-ports {
+                port {
+                    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>;
+                    };
+                };
+            };
+        };
+
           apps_smmu: iommu@15000000 {
               compatible = "qcom,sm8650-smmu-500", "qcom,smmu-500", "arm,mmu-500";
               reg = <0 0x15000000 0 0x100000>;

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

Best regards,







[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