Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3adab7c7 authored by Frank Li's avatar Frank Li Committed by Shawn Guo
Browse files

ARM: dts: imx7d: add cortex-a7 coresight component

Added etm, etb, funnel and replicator

usage example:

    echo 1 >/sys/bus/coresight/devices/30086000.etr/enable_sink
    echo 1 >/sys/bus/coresight/devices/3007c000.etm/enable_source

        coresight-tmc 30086000.etr: TMC enabled
        coresight-replicator replicator.1: REPLICATOR enabled
        coresight-tmc 30084000.tmc: TMC enabled
        coresight-funnel 30083000.funnel: FUNNEL inport 0 enabled
        coresight-funnel 30041000.funnel: FUNNEL inport 0 enabled
        coresight-etm3x 3007c000.etm: ETM tracing enabled

    etm enable here.
    trace data save at /dev/30086000.etr

    cat /dev/30086000.etr > trace.data

        coresight-tmc 30086000.etr: TMC read start
        coresight-tmc 30086000.etr: TMC read end

    use ptm2human(https://github.com/hwangcc23/ptm2human

) to show trace data

    ptm2human -i trace.data

Signed-off-by: default avatarFrank Li <Frank.Li@freescale.com>
Acked-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 7804fbcf
Loading
Loading
Loading
Loading
+203 −0
Original line number Diff line number Diff line
@@ -121,6 +121,209 @@
		clock-output-names = "osc";
	};

	etr@30086000 {
		compatible = "arm,coresight-tmc", "arm,primecell";
		reg = <0x30086000 0x1000>;
		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
		clock-names = "apb_pclk";

		port {
			etr_in_port: endpoint {
				slave-mode;
				remote-endpoint = <&replicator_out_port1>;
			};
		};
	};

	tpiu@30087000 {
		compatible = "arm,coresight-tpiu", "arm,primecell";
		reg = <0x30087000 0x1000>;
		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
		clock-names = "apb_pclk";

		port {
			tpiu_in_port: endpoint {
				slave-mode;
				remote-endpoint = <&replicator_out_port1>;
			};
		};
	};

	replicator {
		/*
		 * non-configurable replicators don't show up on the
		 * AMBA bus.  As such no need to add "arm,primecell"
		 */
		compatible = "arm,coresight-replicator";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			/* replicator output ports */
			port@0 {
				reg = <0>;
				replicator_out_port0: endpoint {
					remote-endpoint = <&tpiu_in_port>;
				};
			};

			port@1 {
				reg = <1>;
				replicator_out_port1: endpoint {
					remote-endpoint = <&etr_in_port>;
				};
			};

			/* replicator input port */
			port@2 {
				reg = <0>;
				replicator_in_port0: endpoint {
					slave-mode;
					remote-endpoint = <&etf_out_port>;
				};
			};
		};
	};

	etf@30084000 {
		compatible = "arm,coresight-tmc", "arm,primecell";
		reg = <0x30084000 0x1000>;
		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
		clock-names = "apb_pclk";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				etf_in_port: endpoint {
					slave-mode;
					remote-endpoint = <&hugo_funnel_out_port0>;
				};
			};

			port@1 {
				reg = <0>;
				etf_out_port: endpoint {
					remote-endpoint = <&replicator_in_port0>;
				};
			};
		};
	};

	funnel@30083000 {
		compatible = "arm,coresight-funnel", "arm,primecell";
		reg = <0x30083000 0x1000>;
		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
		clock-names = "apb_pclk";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			/* funnel input ports */
			port@0 {
				reg = <0>;
				hugo_funnel_in_port0: endpoint {
					slave-mode;
					remote-endpoint = <&ca_funnel_out_port0>;
				};
			};

			port@1 {
				reg = <1>;
				hugo_funnel_in_port1: endpoint {
					slave-mode; /* M4 input */
				};
			};

			port@2 {
				reg = <0>;
				hugo_funnel_out_port0: endpoint {
					remote-endpoint = <&etf_in_port>;
				};
			};

			/* the other input ports are not connect to anything */
		};
	};

	funnel@30041000 {
		compatible = "arm,coresight-funnel", "arm,primecell";
		reg = <0x30041000 0x1000>;
		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
		clock-names = "apb_pclk";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			/* funnel input ports */
			port@0 {
				reg = <0>;
				ca_funnel_in_port0: endpoint {
					slave-mode;
					remote-endpoint = <&etm0_out_port>;
				};
			};

			port@1 {
				reg = <1>;
				ca_funnel_in_port1: endpoint {
					slave-mode;
					remote-endpoint = <&etm1_out_port>;
				};
			};

			/* funnel output port */
			port@2 {
				reg = <0>;
				ca_funnel_out_port0: endpoint {
					remote-endpoint = <&hugo_funnel_in_port0>;
				};
			};

			/* the other input ports are not connect to anything */
		};
	};

	etm@3007c000 {
		compatible = "arm,coresight-etm3x", "arm,primecell";
		reg = <0x3007c000 0x1000>;
		cpu = <&cpu0>;
		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
		clock-names = "apb_pclk";

		port {
			etm0_out_port: endpoint {
				remote-endpoint = <&ca_funnel_in_port0>;
			};
		};
	};

	etm@3007d000 {
		compatible = "arm,coresight-etm3x", "arm,primecell";
		reg = <0x3007d000 0x1000>;

		/*
		 * System will hang if added nosmp in kernel command line
		 * without arm,primecell-periphid because amba bus try to
		 * read id and core1 power off at this time.
		 */
		arm,primecell-periphid = <0xbb956>;
		cpu = <&cpu1>;
		clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
		clock-names = "apb_pclk";

		port {
			etm1_out_port: endpoint {
				remote-endpoint = <&ca_funnel_in_port1>;
			};
		};
	};

	soc {
		#address-cells = <1>;
		#size-cells = <1>;