mirror of https://gitee.com/openkylin/linux.git
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: Frank Li <Frank.Li@freescale.com> Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
This commit is contained in:
parent
7804fbcfe5
commit
3adab7c796
|
@ -121,6 +121,209 @@ osc: clock-osc {
|
|||
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>;
|
||||
|
|
Loading…
Reference in New Issue