Hi Wojciech,
On Thu, Jan 30, 2020 at 03:36:27PM +0000, Wojciech Żmuda wrote:
From: Wojciech Zmuda wzmuda@n7space.com
Add nodes for the following CoreSight components:
- ETMs for A53 cores
- debug components for A53 cores
- funnel gathering outputs from A53 ETMs and SoC-wide funnels
- the only replicator
- all TMCs: 4k ETF, 8k ETF and ETR
- TPIU
Signed-off-by: Wojciech Zmuda wzmuda@n7space.com
arch/arm64/boot/dts/xilinx/zynqmp-coresight.dtsi | 272 +++++++++++++++++++++++ arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 2 + 2 files changed, 274 insertions(+) create mode 100644 arch/arm64/boot/dts/xilinx/zynqmp-coresight.dtsi
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-coresight.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp-coresight.dtsi new file mode 100644 index 000000000000..8b7579ad89cc --- /dev/null +++ b/arch/arm64/boot/dts/xilinx/zynqmp-coresight.dtsi @@ -0,0 +1,272 @@ +// SPDX-License-Identifier: GPL-2.0+
Looking at other Xilinx DT files there is no space between the SPDX identifier and the header of the file.
+/*
- dtsi for Xilinx Ultrascale+ MPSoC CoreSight components
- Copyright (C) 2019-2020 N7 Space Sp. z o.o.
- Author: Wojciech Zmuda wzmuda@n7space.com
- */
+/ {
- etm0@fec40000 {
compatible = "arm,coresight-etm4x", "arm,primecell";reg = <0 0xfec40000 0 0x1000>;cpu = <&cpu0>;clocks = <&clk100>;clock-names = "apb_pclk";out-ports {port {etm0_out_port: endpoint {remote-endpoint = <&funnel1_in_port0>;};};};- };
- etm1@fed40000 {
compatible = "arm,coresight-etm4x", "arm,primecell";reg = <0 0xfed40000 0 0x1000>;cpu = <&cpu1>;clocks = <&clk100>;clock-names = "apb_pclk";out-ports {port {etm1_out_port: endpoint {remote-endpoint = <&funnel1_in_port1>;};};};- };
- etm2@fee40000 {
compatible = "arm,coresight-etm4x", "arm,primecell";reg = <0 0xfee40000 0 0x1000>;cpu = <&cpu2>;clocks = <&clk100>;clock-names = "apb_pclk";out-ports {port {etm2_out_port: endpoint {remote-endpoint = <&funnel1_in_port2>;};};};- };
- etm3@fef40000 {
compatible = "arm,coresight-etm4x", "arm,primecell";reg = <0 0xfef40000 0 0x1000>;cpu = <&cpu3>;clocks = <&clk100>;clock-names = "apb_pclk";out-ports {port {etm3_out_port: endpoint {remote-endpoint = <&funnel1_in_port3>;};};};- };
- debug0@fec10000 {
compatible = "arm,coresight-cpu-debug", "arm,primecell";reg = <0 0xfec10000 0 0x1000>;cpu = <&cpu0>;clocks = <&clk100>;clock-names = "apb_pclk";- };
- debug1@fed10000 {
compatible = "arm,coresight-cpu-debug", "arm,primecell";reg = <0 0xfed10000 0 0x1000>;cpu = <&cpu1>;clocks = <&clk100>;clock-names = "apb_pclk";- };
- debug2@fee10000 {
compatible = "arm,coresight-cpu-debug", "arm,primecell";reg = <0 0xfee10000 0 0x1000>;cpu = <&cpu2>;clocks = <&clk100>;clock-names = "apb_pclk";- };
- debug3@fee10000 {
compatible = "arm,coresight-cpu-debug", "arm,primecell";reg = <0 0xfef10000 0 0x1000>;cpu = <&cpu3>;clocks = <&clk100>;clock-names = "apb_pclk";- };
- funnel1@fe920000 {
compatible = "arm,coresight-dynamic-funnel", "arm,primecell";reg = <0 0xfe920000 0 0x1000>;clocks = <&clk100>;clock-names = "apb_pclk";in-ports {#address-cells = <0x1>;#size-cells = <0x0>;port@0 {reg = <0x0>;funnel1_in_port0: endpoint {remote-endpoint = <&etm0_out_port>;};};port@1 {reg = <0x1>;funnel1_in_port1: endpoint {remote-endpoint = <&etm1_out_port>;};};port@2 {reg = <0x2>;funnel1_in_port2: endpoint {remote-endpoint = <&etm2_out_port>;};};port@3 {reg = <0x3>;funnel1_in_port3: endpoint {remote-endpoint = <&etm3_out_port>;};};};out-ports {port {funnel1_out_port0: endpoint {remote-endpoint = <&etf1_in_port>;};};};- };
- funnel2@fe930000 {
compatible = "arm,coresight-dynamic-funnel", "arm,primecell";reg = <0 0xfe930000 0 0x1000>;clocks = <&clk100>;clock-names = "apb_pclk";in-ports {#address-cells = <0x1>;#size-cells = <0x0>;port@2 {reg = <0x2>;funnel2_in_port2: endpoint {remote-endpoint = <&etf1_out_port>;};};// Funnel2 has another input port connected to// funnel0's output. Funnel0 gathers Cortex-R5 ETMs.
C++ style comments.
};out-ports {port {funnel2_out_port0: endpoint {remote-endpoint = <&etf2_in_port>;};};};- };
- etf1@fe940000 {
compatible = "arm,coresight-tmc", "arm,primecell";reg = <0 0xfe940000 0 0x1000>;clocks = <&clk100>;clock-names = "apb_pclk";in-ports {port {etf1_in_port: endpoint {remote-endpoint = <&funnel1_out_port0>;};};};out-ports {port {etf1_out_port: endpoint {remote-endpoint = <&funnel2_in_port2>;};};};- };
- etf2@fe950000 {
compatible = "arm,coresight-tmc", "arm,primecell";reg = <0 0xfe950000 0 0x1000>;clocks = <&clk100>;clock-names = "apb_pclk";in-ports {port {etf2_in_port: endpoint {remote-endpoint = <&funnel2_out_port0>;};};};out-ports {port {etf2_out_port: endpoint {remote-endpoint =<&replicator_in_port0>;};};};- };
- replicator {
compatible = "arm,coresight-static-replicator";in-ports {port {replicator_in_port0: endpoint {remote-endpoint = <&etf2_out_port>;};};};out-ports {#address-cells = <0x1>;#size-cells = <0x0>;port@0 {reg = <0x0>;replicator_out_port0: endpoint {remote-endpoint = <&etr_in_port>;};};port@1 {reg = <0x1>;replicator_out_port1: endpoint {remote-endpoint = <&tpiu_in_port>;};};};- };
- etr@fe970000 {
compatible = "arm,coresight-tmc", "arm,primecell";reg = <0 0xfe970000 0 0x1000>;clocks = <&clk100>;clock-names = "apb_pclk";in-ports {port {etr_in_port: endpoint {remote-endpoint =<&replicator_out_port0>;};};};- };
- tpiu@fe980000 {
compatible = "arm,coresight-tpiu", "arm,primecell";reg = <0 0xfe980000 0 0x1000>;clocks = <&clk100>;clock-names = "apb_pclk";in-ports {port {tpiu_in_port: endpoint {remote-endpoint =<&replicator_out_port1>;};};};- };
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi index 3c731e73903a..ca0a6b9f4445 100644 --- a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi +++ b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi @@ -12,6 +12,8 @@
- the License, or (at your option) any later version.
*/ +#include "zynqmp-coresight.dtsi"
Those bindings are correctly used. If Michal doesn't mind the nit-picks I have highlighted above then
Reviewed-by: Mathieu Poirier mathieu.poirier@linaro.org
Otherwise feel free to add my tag to your next revision, which I advise you to send out once v5.6-rc1 comes out.
Thanks, Mathieu
/ { compatible = "xlnx,zynqmp";
#address-cells = <2>;
2.11.0