1// SPDX-License-Identifier: GPL-2.0
2
3/*
4 * dtsi for Hisilicon Hi3660 Coresight
5 *
6 * Copyright (C) 2016-2018 HiSilicon Ltd.
7 *
8 * Author: Wanglai Shi <shiwanglai@hisilicon.com>
9 *
10 */
11/ {
12	soc {
13		/* A53 cluster internals */
14		etm@ecc40000 {
15			compatible = "arm,coresight-etm4x", "arm,primecell";
16			reg = <0 0xecc40000 0 0x1000>;
17			clocks = <&crg_ctrl HI3660_PCLK>;
18			clock-names = "apb_pclk";
19			cpu = <&cpu0>;
20
21			out-ports {
22				port {
23					etm0_out: endpoint {
24						remote-endpoint =
25							<&cluster0_funnel_in0>;
26					};
27				};
28			};
29		};
30
31		etm@ecd40000 {
32			compatible = "arm,coresight-etm4x", "arm,primecell";
33			reg = <0 0xecd40000 0 0x1000>;
34			clocks = <&crg_ctrl HI3660_PCLK>;
35			clock-names = "apb_pclk";
36			cpu = <&cpu1>;
37
38			out-ports {
39				port {
40					etm1_out: endpoint {
41						remote-endpoint =
42							<&cluster0_funnel_in1>;
43					};
44				};
45			};
46		};
47
48		etm@ece40000 {
49			compatible = "arm,coresight-etm4x", "arm,primecell";
50			reg = <0 0xece40000 0 0x1000>;
51			clocks = <&crg_ctrl HI3660_PCLK>;
52			clock-names = "apb_pclk";
53			cpu = <&cpu2>;
54
55			out-ports {
56				port {
57					etm2_out: endpoint {
58						remote-endpoint =
59							<&cluster0_funnel_in2>;
60					};
61				};
62			};
63		};
64
65		etm@ecf40000 {
66			compatible = "arm,coresight-etm4x", "arm,primecell";
67			reg = <0 0xecf40000 0 0x1000>;
68			clocks = <&crg_ctrl HI3660_PCLK>;
69			clock-names = "apb_pclk";
70			cpu = <&cpu3>;
71
72			out-ports {
73				port {
74					etm3_out: endpoint {
75						remote-endpoint =
76							<&cluster0_funnel_in3>;
77					};
78				};
79			};
80		};
81
82		funnel@ec801000 {
83			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
84			reg = <0 0xec801000 0 0x1000>;
85			clocks = <&crg_ctrl HI3660_PCLK>;
86			clock-names = "apb_pclk";
87
88			out-ports {
89				port {
90					cluster0_funnel_out: endpoint {
91						remote-endpoint =
92							<&cluster0_etf_in>;
93					};
94				};
95			};
96
97			in-ports {
98				#address-cells = <1>;
99				#size-cells = <0>;
100
101				port@0 {
102					reg = <0>;
103					cluster0_funnel_in0: endpoint {
104						remote-endpoint = <&etm0_out>;
105					};
106				};
107
108				port@1 {
109					reg = <1>;
110					cluster0_funnel_in1: endpoint {
111						remote-endpoint = <&etm1_out>;
112					};
113				};
114
115				port@2 {
116					reg = <2>;
117					cluster0_funnel_in2: endpoint {
118						remote-endpoint = <&etm2_out>;
119					};
120				};
121
122				port@3 {
123					reg = <3>;
124					cluster0_funnel_in3: endpoint {
125						remote-endpoint = <&etm3_out>;
126					};
127				};
128			};
129		};
130
131		etf@ec802000 {
132			compatible = "arm,coresight-tmc", "arm,primecell";
133			reg = <0 0xec802000 0 0x1000>;
134			clocks = <&crg_ctrl HI3660_PCLK>;
135			clock-names = "apb_pclk";
136
137			in-ports {
138				port {
139					cluster0_etf_in: endpoint {
140						remote-endpoint =
141							<&cluster0_funnel_out>;
142					};
143				};
144			};
145
146			out-ports {
147				port {
148					cluster0_etf_out: endpoint {
149						remote-endpoint =
150							<&combo_funnel_in0>;
151					};
152				};
153			};
154		};
155
156		/* A73 cluster internals */
157		etm@ed440000 {
158			compatible = "arm,coresight-etm4x", "arm,primecell";
159			reg = <0 0xed440000 0 0x1000>;
160			clocks = <&crg_ctrl HI3660_PCLK>;
161			clock-names = "apb_pclk";
162			cpu = <&cpu4>;
163
164			out-ports {
165				port {
166					etm4_out: endpoint {
167						remote-endpoint =
168							<&cluster1_funnel_in0>;
169					};
170				};
171			};
172		};
173
174		etm@ed540000 {
175			compatible = "arm,coresight-etm4x", "arm,primecell";
176			reg = <0 0xed540000 0 0x1000>;
177			clocks = <&crg_ctrl HI3660_PCLK>;
178			clock-names = "apb_pclk";
179			cpu = <&cpu5>;
180
181			out-ports {
182				port {
183					etm5_out: endpoint {
184						remote-endpoint =
185							<&cluster1_funnel_in1>;
186					};
187				};
188			};
189		};
190
191		etm@ed640000 {
192			compatible = "arm,coresight-etm4x", "arm,primecell";
193			reg = <0 0xed640000 0 0x1000>;
194			clocks = <&crg_ctrl HI3660_PCLK>;
195			clock-names = "apb_pclk";
196			cpu = <&cpu6>;
197
198			out-ports {
199				port {
200					etm6_out: endpoint {
201						remote-endpoint =
202							<&cluster1_funnel_in2>;
203					};
204				};
205			};
206		};
207
208		etm@ed740000 {
209			compatible = "arm,coresight-etm4x", "arm,primecell";
210			reg = <0 0xed740000 0 0x1000>;
211			clocks = <&crg_ctrl HI3660_PCLK>;
212			clock-names = "apb_pclk";
213			cpu = <&cpu7>;
214
215			out-ports {
216				port {
217					etm7_out: endpoint {
218						remote-endpoint =
219							<&cluster1_funnel_in3>;
220					};
221				};
222			};
223		};
224
225		funnel@ed001000 {
226			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
227			reg = <0 0xed001000 0 0x1000>;
228			clocks = <&crg_ctrl HI3660_PCLK>;
229			clock-names = "apb_pclk";
230			out-ports {
231				port {
232					cluster1_funnel_out: endpoint {
233						remote-endpoint =
234							<&cluster1_etf_in>;
235					};
236				};
237			};
238
239			in-ports {
240				#address-cells = <1>;
241				#size-cells = <0>;
242
243				port@0 {
244					reg = <0>;
245					cluster1_funnel_in0: endpoint {
246						remote-endpoint = <&etm4_out>;
247					};
248				};
249
250				port@1 {
251					reg = <1>;
252					cluster1_funnel_in1: endpoint {
253						remote-endpoint = <&etm5_out>;
254					};
255				};
256
257				port@2 {
258					reg = <2>;
259					cluster1_funnel_in2: endpoint {
260						remote-endpoint = <&etm6_out>;
261					};
262				};
263
264				port@3 {
265					reg = <3>;
266					cluster1_funnel_in3: endpoint {
267						remote-endpoint = <&etm7_out>;
268					};
269				};
270			};
271		};
272
273		etf@ed002000 {
274			compatible = "arm,coresight-tmc", "arm,primecell";
275			reg = <0 0xed002000 0 0x1000>;
276			clocks = <&crg_ctrl HI3660_PCLK>;
277			clock-names = "apb_pclk";
278
279			in-ports {
280				port {
281					cluster1_etf_in: endpoint {
282						remote-endpoint =
283							<&cluster1_funnel_out>;
284					};
285				};
286			};
287
288			out-ports {
289				port {
290					cluster1_etf_out: endpoint {
291						remote-endpoint =
292							<&combo_funnel_in1>;
293					};
294				};
295			};
296		};
297
298		/* An invisible combo funnel between clusters and top funnel */
299		funnel {
300			compatible = "arm,coresight-static-funnel";
301			clocks = <&crg_ctrl HI3660_PCLK>;
302			clock-names = "apb_pclk";
303
304			out-ports {
305				port {
306					combo_funnel_out: endpoint {
307						remote-endpoint =
308							<&top_funnel_in>;
309					};
310				};
311			};
312
313			in-ports {
314				#address-cells = <1>;
315				#size-cells = <0>;
316
317				port@0 {
318					reg = <0>;
319					combo_funnel_in0: endpoint {
320						remote-endpoint =
321							<&cluster0_etf_out>;
322					};
323				};
324
325				port@1 {
326					reg = <1>;
327					combo_funnel_in1: endpoint {
328						remote-endpoint =
329							<&cluster1_etf_out>;
330					};
331				};
332			};
333		};
334
335		/* Top internals */
336		funnel@ec031000 {
337			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
338			reg = <0 0xec031000 0 0x1000>;
339			clocks = <&crg_ctrl HI3660_PCLK>;
340			clock-names = "apb_pclk";
341
342			out-ports {
343				port {
344					top_funnel_out: endpoint {
345						remote-endpoint =
346							<&top_etf_in>;
347					};
348				};
349			};
350
351			in-ports {
352				#address-cells = <1>;
353				#size-cells = <0>;
354
355				port@0 {
356					reg = <0>;
357					top_funnel_in: endpoint {
358						remote-endpoint =
359							<&combo_funnel_out>;
360					};
361				};
362			};
363		};
364
365		etf@ec036000 {
366			compatible = "arm,coresight-tmc", "arm,primecell";
367			reg = <0 0xec036000 0 0x1000>;
368			clocks = <&crg_ctrl HI3660_PCLK>;
369			clock-names = "apb_pclk";
370
371			in-ports {
372				port {
373					top_etf_in: endpoint {
374						remote-endpoint =
375							<&top_funnel_out>;
376					};
377				};
378			};
379
380			out-ports {
381				port {
382					top_etf_out: endpoint {
383						remote-endpoint =
384							<&replicator_in>;
385					};
386				};
387			};
388		};
389
390		replicator {
391			compatible = "arm,coresight-static-replicator";
392			clocks = <&crg_ctrl HI3660_PCLK>;
393			clock-names = "apb_pclk";
394
395			in-ports {
396				port {
397					replicator_in: endpoint {
398						remote-endpoint =
399							<&top_etf_out>;
400					};
401				};
402			};
403
404			out-ports {
405				#address-cells = <1>;
406				#size-cells = <0>;
407
408				port@0 {
409					reg = <0>;
410					replicator0_out0: endpoint {
411						remote-endpoint = <&etr_in>;
412					};
413				};
414
415				port@1 {
416					reg = <1>;
417					replicator0_out1: endpoint {
418						remote-endpoint = <&tpiu_in>;
419					};
420				};
421			};
422		};
423
424		etr@ec033000 {
425			compatible = "arm,coresight-tmc", "arm,primecell";
426			reg = <0 0xec033000 0 0x1000>;
427			clocks = <&crg_ctrl HI3660_PCLK>;
428			clock-names = "apb_pclk";
429
430			in-ports {
431				port {
432					etr_in: endpoint {
433						remote-endpoint =
434							<&replicator0_out0>;
435					};
436				};
437			};
438		};
439
440		tpiu@ec032000 {
441			compatible = "arm,coresight-tpiu", "arm,primecell";
442			reg = <0 0xec032000 0 0x1000>;
443			clocks = <&crg_ctrl HI3660_PCLK>;
444			clock-names = "apb_pclk";
445
446			in-ports {
447				port {
448					tpiu_in: endpoint {
449						remote-endpoint =
450							<&replicator0_out1>;
451					};
452				};
453			};
454		};
455	};
456};
457