1* CoreSight Components:
2
3CoreSight components are compliant with the ARM CoreSight architecture
4specification and can be connected in various topologies to suit a particular
5SoCs tracing needs. These trace components can generally be classified as
6sinks, links and sources. Trace data produced by one or more sources flows
7through the intermediate links connecting the source to the currently selected
8sink. Each CoreSight component device should use these properties to describe
9its hardware characteristcs.
10
11* Required properties for all components *except* non-configurable replicators:
12
13	* compatible: These have to be supplemented with "arm,primecell" as
14	  drivers are using the AMBA bus interface.  Possible values include:
15		- "arm,coresight-etb10", "arm,primecell";
16		- "arm,coresight-tpiu", "arm,primecell";
17		- "arm,coresight-tmc", "arm,primecell";
18		- "arm,coresight-funnel", "arm,primecell";
19		- "arm,coresight-etm3x", "arm,primecell";
20
21	* reg: physical base address and length of the register
22	  set(s) of the component.
23
24	* clocks: the clock associated to this component.
25
26	* clock-names: the name of the clock as referenced by the code.
27	  Since we are using the AMBA framework, the name should be
28	  "apb_pclk".
29
30	* port or ports: The representation of the component's port
31	  layout using the generic DT graph presentation found in
32	  "bindings/graph.txt".
33
34* Required properties for devices that don't show up on the AMBA bus, such as
35  non-configurable replicators:
36
37	* compatible: Currently supported value is (note the absence of the
38	  AMBA markee):
39		- "arm,coresight-replicator"
40
41	* port or ports: same as above.
42
43* Optional properties for ETM/PTMs:
44
45	* arm,cp14: must be present if the system accesses ETM/PTM management
46	  registers via co-processor 14.
47
48	* cpu: the cpu phandle this ETM/PTM is affined to. When omitted the
49	  source is considered to belong to CPU0.
50
51* Optional property for TMC:
52
53	* arm,buffer-size: size of contiguous buffer space for TMC ETR
54	 (embedded trace router)
55
56
57Example:
58
591. Sinks
60	etb@20010000 {
61		compatible = "arm,coresight-etb10", "arm,primecell";
62		reg = <0 0x20010000 0 0x1000>;
63
64		clocks = <&oscclk6a>;
65		clock-names = "apb_pclk";
66		port {
67			etb_in_port: endpoint@0 {
68				slave-mode;
69				remote-endpoint = <&replicator_out_port0>;
70			};
71		};
72	};
73
74	tpiu@20030000 {
75		compatible = "arm,coresight-tpiu", "arm,primecell";
76		reg = <0 0x20030000 0 0x1000>;
77
78		clocks = <&oscclk6a>;
79		clock-names = "apb_pclk";
80		port {
81			tpiu_in_port: endpoint@0 {
82				slave-mode;
83				remote-endpoint = <&replicator_out_port1>;
84			};
85		};
86	};
87
882. Links
89	replicator {
90		/* non-configurable replicators don't show up on the
91		 * AMBA bus.  As such no need to add "arm,primecell".
92		 */
93		compatible = "arm,coresight-replicator";
94
95		ports {
96			#address-cells = <1>;
97			#size-cells = <0>;
98
99			/* replicator output ports */
100			port@0 {
101				reg = <0>;
102				replicator_out_port0: endpoint {
103					remote-endpoint = <&etb_in_port>;
104				};
105			};
106
107			port@1 {
108				reg = <1>;
109				replicator_out_port1: endpoint {
110					remote-endpoint = <&tpiu_in_port>;
111				};
112			};
113
114			/* replicator input port */
115			port@2 {
116				reg = <0>;
117				replicator_in_port0: endpoint {
118					slave-mode;
119					remote-endpoint = <&funnel_out_port0>;
120				};
121			};
122		};
123	};
124
125	funnel@20040000 {
126		compatible = "arm,coresight-funnel", "arm,primecell";
127		reg = <0 0x20040000 0 0x1000>;
128
129		clocks = <&oscclk6a>;
130		clock-names = "apb_pclk";
131		ports {
132			#address-cells = <1>;
133			#size-cells = <0>;
134
135			/* funnel output port */
136			port@0 {
137				reg = <0>;
138				funnel_out_port0: endpoint {
139					remote-endpoint =
140							<&replicator_in_port0>;
141				};
142			};
143
144			/* funnel input ports */
145			port@1 {
146				reg = <0>;
147				funnel_in_port0: endpoint {
148					slave-mode;
149					remote-endpoint = <&ptm0_out_port>;
150				};
151			};
152
153			port@2 {
154				reg = <1>;
155				funnel_in_port1: endpoint {
156					slave-mode;
157					remote-endpoint = <&ptm1_out_port>;
158				};
159			};
160
161			port@3 {
162				reg = <2>;
163				funnel_in_port2: endpoint {
164					slave-mode;
165					remote-endpoint = <&etm0_out_port>;
166				};
167			};
168
169		};
170	};
171
1723. Sources
173	ptm@2201c000 {
174		compatible = "arm,coresight-etm3x", "arm,primecell";
175		reg = <0 0x2201c000 0 0x1000>;
176
177		cpu = <&cpu0>;
178		clocks = <&oscclk6a>;
179		clock-names = "apb_pclk";
180		port {
181			ptm0_out_port: endpoint {
182				remote-endpoint = <&funnel_in_port0>;
183			};
184		};
185	};
186
187	ptm@2201d000 {
188		compatible = "arm,coresight-etm3x", "arm,primecell";
189		reg = <0 0x2201d000 0 0x1000>;
190
191		cpu = <&cpu1>;
192		clocks = <&oscclk6a>;
193		clock-names = "apb_pclk";
194		port {
195			ptm1_out_port: endpoint {
196				remote-endpoint = <&funnel_in_port1>;
197			};
198		};
199	};
200