xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/arm/juno-base.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun#include "juno-clocks.dtsi"
3*4882a593Smuzhiyun#include "juno-motherboard.dtsi"
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun/ {
6*4882a593Smuzhiyun	/*
7*4882a593Smuzhiyun	 *  Devices shared by all Juno boards
8*4882a593Smuzhiyun	 */
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun	memtimer: timer@2a810000 {
11*4882a593Smuzhiyun		compatible = "arm,armv7-timer-mem";
12*4882a593Smuzhiyun		reg = <0x0 0x2a810000 0x0 0x10000>;
13*4882a593Smuzhiyun		clock-frequency = <50000000>;
14*4882a593Smuzhiyun		#address-cells = <1>;
15*4882a593Smuzhiyun		#size-cells = <1>;
16*4882a593Smuzhiyun		ranges = <0 0x0 0x2a820000 0x20000>;
17*4882a593Smuzhiyun		status = "disabled";
18*4882a593Smuzhiyun		frame@2a830000 {
19*4882a593Smuzhiyun			frame-number = <1>;
20*4882a593Smuzhiyun			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
21*4882a593Smuzhiyun			reg = <0x10000 0x10000>;
22*4882a593Smuzhiyun		};
23*4882a593Smuzhiyun	};
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun	mailbox: mhu@2b1f0000 {
26*4882a593Smuzhiyun		compatible = "arm,mhu", "arm,primecell";
27*4882a593Smuzhiyun		reg = <0x0 0x2b1f0000 0x0 0x1000>;
28*4882a593Smuzhiyun		interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
29*4882a593Smuzhiyun			     <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
30*4882a593Smuzhiyun		interrupt-names = "mhu_lpri_rx",
31*4882a593Smuzhiyun				  "mhu_hpri_rx";
32*4882a593Smuzhiyun		#mbox-cells = <1>;
33*4882a593Smuzhiyun		clocks = <&soc_refclk100mhz>;
34*4882a593Smuzhiyun		clock-names = "apb_pclk";
35*4882a593Smuzhiyun	};
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun	smmu_gpu: iommu@2b400000 {
38*4882a593Smuzhiyun		compatible = "arm,mmu-400", "arm,smmu-v1";
39*4882a593Smuzhiyun		reg = <0x0 0x2b400000 0x0 0x10000>;
40*4882a593Smuzhiyun		interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
41*4882a593Smuzhiyun			     <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
42*4882a593Smuzhiyun		#iommu-cells = <1>;
43*4882a593Smuzhiyun		#global-interrupts = <1>;
44*4882a593Smuzhiyun		power-domains = <&scpi_devpd 1>;
45*4882a593Smuzhiyun		dma-coherent;
46*4882a593Smuzhiyun		status = "disabled";
47*4882a593Smuzhiyun	};
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun	smmu_pcie: iommu@2b500000 {
50*4882a593Smuzhiyun		compatible = "arm,mmu-401", "arm,smmu-v1";
51*4882a593Smuzhiyun		reg = <0x0 0x2b500000 0x0 0x10000>;
52*4882a593Smuzhiyun		interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
53*4882a593Smuzhiyun			     <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
54*4882a593Smuzhiyun		#iommu-cells = <1>;
55*4882a593Smuzhiyun		#global-interrupts = <1>;
56*4882a593Smuzhiyun		dma-coherent;
57*4882a593Smuzhiyun		status = "disabled";
58*4882a593Smuzhiyun	};
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun	smmu_etr: iommu@2b600000 {
61*4882a593Smuzhiyun		compatible = "arm,mmu-401", "arm,smmu-v1";
62*4882a593Smuzhiyun		reg = <0x0 0x2b600000 0x0 0x10000>;
63*4882a593Smuzhiyun		interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
64*4882a593Smuzhiyun			     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
65*4882a593Smuzhiyun		#iommu-cells = <1>;
66*4882a593Smuzhiyun		#global-interrupts = <1>;
67*4882a593Smuzhiyun		dma-coherent;
68*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
69*4882a593Smuzhiyun	};
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun	gic: interrupt-controller@2c010000 {
72*4882a593Smuzhiyun		compatible = "arm,gic-400", "arm,cortex-a15-gic";
73*4882a593Smuzhiyun		reg = <0x0 0x2c010000 0 0x1000>,
74*4882a593Smuzhiyun		      <0x0 0x2c02f000 0 0x2000>,
75*4882a593Smuzhiyun		      <0x0 0x2c04f000 0 0x2000>,
76*4882a593Smuzhiyun		      <0x0 0x2c06f000 0 0x2000>;
77*4882a593Smuzhiyun		#address-cells = <1>;
78*4882a593Smuzhiyun		#interrupt-cells = <3>;
79*4882a593Smuzhiyun		#size-cells = <1>;
80*4882a593Smuzhiyun		interrupt-controller;
81*4882a593Smuzhiyun		interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
82*4882a593Smuzhiyun		ranges = <0 0 0x2c1c0000 0x40000>;
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun		v2m_0: v2m@0 {
85*4882a593Smuzhiyun			compatible = "arm,gic-v2m-frame";
86*4882a593Smuzhiyun			msi-controller;
87*4882a593Smuzhiyun			reg = <0 0x10000>;
88*4882a593Smuzhiyun		};
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun		v2m@10000 {
91*4882a593Smuzhiyun			compatible = "arm,gic-v2m-frame";
92*4882a593Smuzhiyun			msi-controller;
93*4882a593Smuzhiyun			reg = <0x10000 0x10000>;
94*4882a593Smuzhiyun		};
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun		v2m@20000 {
97*4882a593Smuzhiyun			compatible = "arm,gic-v2m-frame";
98*4882a593Smuzhiyun			msi-controller;
99*4882a593Smuzhiyun			reg = <0x20000 0x10000>;
100*4882a593Smuzhiyun		};
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun		v2m@30000 {
103*4882a593Smuzhiyun			compatible = "arm,gic-v2m-frame";
104*4882a593Smuzhiyun			msi-controller;
105*4882a593Smuzhiyun			reg = <0x30000 0x10000>;
106*4882a593Smuzhiyun		};
107*4882a593Smuzhiyun	};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun	timer {
110*4882a593Smuzhiyun		compatible = "arm,armv8-timer";
111*4882a593Smuzhiyun		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
112*4882a593Smuzhiyun			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
113*4882a593Smuzhiyun			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
114*4882a593Smuzhiyun			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
115*4882a593Smuzhiyun	};
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun	/*
118*4882a593Smuzhiyun	 * Juno TRMs specify the size for these coresight components as 64K.
119*4882a593Smuzhiyun	 * The actual size is just 4K though 64K is reserved. Access to the
120*4882a593Smuzhiyun	 * unmapped reserved region results in a DECERR response.
121*4882a593Smuzhiyun	 */
122*4882a593Smuzhiyun	etf@20010000 { /* etf0 */
123*4882a593Smuzhiyun		compatible = "arm,coresight-tmc", "arm,primecell";
124*4882a593Smuzhiyun		reg = <0 0x20010000 0 0x1000>;
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
127*4882a593Smuzhiyun		clock-names = "apb_pclk";
128*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun		in-ports {
131*4882a593Smuzhiyun			port {
132*4882a593Smuzhiyun				etf0_in_port: endpoint {
133*4882a593Smuzhiyun					remote-endpoint = <&main_funnel_out_port>;
134*4882a593Smuzhiyun				};
135*4882a593Smuzhiyun			};
136*4882a593Smuzhiyun		};
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun		out-ports {
139*4882a593Smuzhiyun			port {
140*4882a593Smuzhiyun				etf0_out_port: endpoint {
141*4882a593Smuzhiyun				};
142*4882a593Smuzhiyun			};
143*4882a593Smuzhiyun		};
144*4882a593Smuzhiyun	};
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun	tpiu@20030000 {
147*4882a593Smuzhiyun		compatible = "arm,coresight-tpiu", "arm,primecell";
148*4882a593Smuzhiyun		reg = <0 0x20030000 0 0x1000>;
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
151*4882a593Smuzhiyun		clock-names = "apb_pclk";
152*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
153*4882a593Smuzhiyun		in-ports {
154*4882a593Smuzhiyun			port {
155*4882a593Smuzhiyun				tpiu_in_port: endpoint {
156*4882a593Smuzhiyun					remote-endpoint = <&replicator_out_port0>;
157*4882a593Smuzhiyun				};
158*4882a593Smuzhiyun			};
159*4882a593Smuzhiyun		};
160*4882a593Smuzhiyun	};
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun	/* main funnel on Juno r0, cssys0 funnel on Juno r1/r2 as per TRM*/
163*4882a593Smuzhiyun	main_funnel: funnel@20040000 {
164*4882a593Smuzhiyun		compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
165*4882a593Smuzhiyun		reg = <0 0x20040000 0 0x1000>;
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
168*4882a593Smuzhiyun		clock-names = "apb_pclk";
169*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun		out-ports {
172*4882a593Smuzhiyun			port {
173*4882a593Smuzhiyun				main_funnel_out_port: endpoint {
174*4882a593Smuzhiyun					remote-endpoint = <&etf0_in_port>;
175*4882a593Smuzhiyun				};
176*4882a593Smuzhiyun			};
177*4882a593Smuzhiyun		};
178*4882a593Smuzhiyun
179*4882a593Smuzhiyun		main_funnel_in_ports: in-ports {
180*4882a593Smuzhiyun			#address-cells = <1>;
181*4882a593Smuzhiyun			#size-cells = <0>;
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun			port@0 {
184*4882a593Smuzhiyun				reg = <0>;
185*4882a593Smuzhiyun				main_funnel_in_port0: endpoint {
186*4882a593Smuzhiyun					remote-endpoint = <&cluster0_funnel_out_port>;
187*4882a593Smuzhiyun				};
188*4882a593Smuzhiyun			};
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun			port@1 {
191*4882a593Smuzhiyun				reg = <1>;
192*4882a593Smuzhiyun				main_funnel_in_port1: endpoint {
193*4882a593Smuzhiyun					remote-endpoint = <&cluster1_funnel_out_port>;
194*4882a593Smuzhiyun				};
195*4882a593Smuzhiyun			};
196*4882a593Smuzhiyun		};
197*4882a593Smuzhiyun	};
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun	etr@20070000 {
200*4882a593Smuzhiyun		compatible = "arm,coresight-tmc", "arm,primecell";
201*4882a593Smuzhiyun		reg = <0 0x20070000 0 0x1000>;
202*4882a593Smuzhiyun		iommus = <&smmu_etr 0>;
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
205*4882a593Smuzhiyun		clock-names = "apb_pclk";
206*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
207*4882a593Smuzhiyun		arm,scatter-gather;
208*4882a593Smuzhiyun		in-ports {
209*4882a593Smuzhiyun			port {
210*4882a593Smuzhiyun				etr_in_port: endpoint {
211*4882a593Smuzhiyun					remote-endpoint = <&replicator_out_port1>;
212*4882a593Smuzhiyun				};
213*4882a593Smuzhiyun			};
214*4882a593Smuzhiyun		};
215*4882a593Smuzhiyun	};
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun	stm@20100000 {
218*4882a593Smuzhiyun		compatible = "arm,coresight-stm", "arm,primecell";
219*4882a593Smuzhiyun		reg = <0 0x20100000 0 0x1000>,
220*4882a593Smuzhiyun		      <0 0x28000000 0 0x1000000>;
221*4882a593Smuzhiyun		reg-names = "stm-base", "stm-stimulus-base";
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
224*4882a593Smuzhiyun		clock-names = "apb_pclk";
225*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
226*4882a593Smuzhiyun		out-ports {
227*4882a593Smuzhiyun			port {
228*4882a593Smuzhiyun				stm_out_port: endpoint {
229*4882a593Smuzhiyun				};
230*4882a593Smuzhiyun			};
231*4882a593Smuzhiyun		};
232*4882a593Smuzhiyun	};
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun	replicator@20120000 {
235*4882a593Smuzhiyun		compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
236*4882a593Smuzhiyun		reg = <0 0x20120000 0 0x1000>;
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
239*4882a593Smuzhiyun		clock-names = "apb_pclk";
240*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun		out-ports {
243*4882a593Smuzhiyun			#address-cells = <1>;
244*4882a593Smuzhiyun			#size-cells = <0>;
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun			/* replicator output ports */
247*4882a593Smuzhiyun			port@0 {
248*4882a593Smuzhiyun				reg = <0>;
249*4882a593Smuzhiyun				replicator_out_port0: endpoint {
250*4882a593Smuzhiyun					remote-endpoint = <&tpiu_in_port>;
251*4882a593Smuzhiyun				};
252*4882a593Smuzhiyun			};
253*4882a593Smuzhiyun
254*4882a593Smuzhiyun			port@1 {
255*4882a593Smuzhiyun				reg = <1>;
256*4882a593Smuzhiyun				replicator_out_port1: endpoint {
257*4882a593Smuzhiyun					remote-endpoint = <&etr_in_port>;
258*4882a593Smuzhiyun				};
259*4882a593Smuzhiyun			};
260*4882a593Smuzhiyun		};
261*4882a593Smuzhiyun		in-ports {
262*4882a593Smuzhiyun			port {
263*4882a593Smuzhiyun				replicator_in_port0: endpoint {
264*4882a593Smuzhiyun				};
265*4882a593Smuzhiyun			};
266*4882a593Smuzhiyun		};
267*4882a593Smuzhiyun	};
268*4882a593Smuzhiyun
269*4882a593Smuzhiyun	cpu_debug0: cpu-debug@22010000 {
270*4882a593Smuzhiyun		compatible = "arm,coresight-cpu-debug", "arm,primecell";
271*4882a593Smuzhiyun		reg = <0x0 0x22010000 0x0 0x1000>;
272*4882a593Smuzhiyun
273*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
274*4882a593Smuzhiyun		clock-names = "apb_pclk";
275*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
276*4882a593Smuzhiyun	};
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun	etm0: etm@22040000 {
279*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
280*4882a593Smuzhiyun		reg = <0 0x22040000 0 0x1000>;
281*4882a593Smuzhiyun
282*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
283*4882a593Smuzhiyun		clock-names = "apb_pclk";
284*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
285*4882a593Smuzhiyun		out-ports {
286*4882a593Smuzhiyun			port {
287*4882a593Smuzhiyun				cluster0_etm0_out_port: endpoint {
288*4882a593Smuzhiyun					remote-endpoint = <&cluster0_funnel_in_port0>;
289*4882a593Smuzhiyun				};
290*4882a593Smuzhiyun			};
291*4882a593Smuzhiyun		};
292*4882a593Smuzhiyun	};
293*4882a593Smuzhiyun
294*4882a593Smuzhiyun	funnel@220c0000 { /* cluster0 funnel */
295*4882a593Smuzhiyun		compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
296*4882a593Smuzhiyun		reg = <0 0x220c0000 0 0x1000>;
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
299*4882a593Smuzhiyun		clock-names = "apb_pclk";
300*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
301*4882a593Smuzhiyun		out-ports {
302*4882a593Smuzhiyun			port {
303*4882a593Smuzhiyun				cluster0_funnel_out_port: endpoint {
304*4882a593Smuzhiyun					remote-endpoint = <&main_funnel_in_port0>;
305*4882a593Smuzhiyun				};
306*4882a593Smuzhiyun			};
307*4882a593Smuzhiyun		};
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun		in-ports {
310*4882a593Smuzhiyun			#address-cells = <1>;
311*4882a593Smuzhiyun			#size-cells = <0>;
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun			port@0 {
314*4882a593Smuzhiyun				reg = <0>;
315*4882a593Smuzhiyun				cluster0_funnel_in_port0: endpoint {
316*4882a593Smuzhiyun					remote-endpoint = <&cluster0_etm0_out_port>;
317*4882a593Smuzhiyun				};
318*4882a593Smuzhiyun			};
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun			port@1 {
321*4882a593Smuzhiyun				reg = <1>;
322*4882a593Smuzhiyun				cluster0_funnel_in_port1: endpoint {
323*4882a593Smuzhiyun					remote-endpoint = <&cluster0_etm1_out_port>;
324*4882a593Smuzhiyun				};
325*4882a593Smuzhiyun			};
326*4882a593Smuzhiyun		};
327*4882a593Smuzhiyun	};
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun	cpu_debug1: cpu-debug@22110000 {
330*4882a593Smuzhiyun		compatible = "arm,coresight-cpu-debug", "arm,primecell";
331*4882a593Smuzhiyun		reg = <0x0 0x22110000 0x0 0x1000>;
332*4882a593Smuzhiyun
333*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
334*4882a593Smuzhiyun		clock-names = "apb_pclk";
335*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
336*4882a593Smuzhiyun	};
337*4882a593Smuzhiyun
338*4882a593Smuzhiyun	etm1: etm@22140000 {
339*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
340*4882a593Smuzhiyun		reg = <0 0x22140000 0 0x1000>;
341*4882a593Smuzhiyun
342*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
343*4882a593Smuzhiyun		clock-names = "apb_pclk";
344*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
345*4882a593Smuzhiyun		out-ports {
346*4882a593Smuzhiyun			port {
347*4882a593Smuzhiyun				cluster0_etm1_out_port: endpoint {
348*4882a593Smuzhiyun					remote-endpoint = <&cluster0_funnel_in_port1>;
349*4882a593Smuzhiyun				};
350*4882a593Smuzhiyun			};
351*4882a593Smuzhiyun		};
352*4882a593Smuzhiyun	};
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun	cpu_debug2: cpu-debug@23010000 {
355*4882a593Smuzhiyun		compatible = "arm,coresight-cpu-debug", "arm,primecell";
356*4882a593Smuzhiyun		reg = <0x0 0x23010000 0x0 0x1000>;
357*4882a593Smuzhiyun
358*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
359*4882a593Smuzhiyun		clock-names = "apb_pclk";
360*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
361*4882a593Smuzhiyun	};
362*4882a593Smuzhiyun
363*4882a593Smuzhiyun	etm2: etm@23040000 {
364*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
365*4882a593Smuzhiyun		reg = <0 0x23040000 0 0x1000>;
366*4882a593Smuzhiyun
367*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
368*4882a593Smuzhiyun		clock-names = "apb_pclk";
369*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
370*4882a593Smuzhiyun		out-ports {
371*4882a593Smuzhiyun			port {
372*4882a593Smuzhiyun				cluster1_etm0_out_port: endpoint {
373*4882a593Smuzhiyun					remote-endpoint = <&cluster1_funnel_in_port0>;
374*4882a593Smuzhiyun				};
375*4882a593Smuzhiyun			};
376*4882a593Smuzhiyun		};
377*4882a593Smuzhiyun	};
378*4882a593Smuzhiyun
379*4882a593Smuzhiyun	funnel@230c0000 { /* cluster1 funnel */
380*4882a593Smuzhiyun		compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
381*4882a593Smuzhiyun		reg = <0 0x230c0000 0 0x1000>;
382*4882a593Smuzhiyun
383*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
384*4882a593Smuzhiyun		clock-names = "apb_pclk";
385*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
386*4882a593Smuzhiyun		out-ports {
387*4882a593Smuzhiyun			port {
388*4882a593Smuzhiyun				cluster1_funnel_out_port: endpoint {
389*4882a593Smuzhiyun					remote-endpoint = <&main_funnel_in_port1>;
390*4882a593Smuzhiyun				};
391*4882a593Smuzhiyun			};
392*4882a593Smuzhiyun		};
393*4882a593Smuzhiyun
394*4882a593Smuzhiyun		in-ports {
395*4882a593Smuzhiyun			#address-cells = <1>;
396*4882a593Smuzhiyun			#size-cells = <0>;
397*4882a593Smuzhiyun
398*4882a593Smuzhiyun			port@0 {
399*4882a593Smuzhiyun				reg = <0>;
400*4882a593Smuzhiyun				cluster1_funnel_in_port0: endpoint {
401*4882a593Smuzhiyun					remote-endpoint = <&cluster1_etm0_out_port>;
402*4882a593Smuzhiyun				};
403*4882a593Smuzhiyun			};
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun			port@1 {
406*4882a593Smuzhiyun				reg = <1>;
407*4882a593Smuzhiyun				cluster1_funnel_in_port1: endpoint {
408*4882a593Smuzhiyun					remote-endpoint = <&cluster1_etm1_out_port>;
409*4882a593Smuzhiyun				};
410*4882a593Smuzhiyun			};
411*4882a593Smuzhiyun			port@2 {
412*4882a593Smuzhiyun				reg = <2>;
413*4882a593Smuzhiyun				cluster1_funnel_in_port2: endpoint {
414*4882a593Smuzhiyun					remote-endpoint = <&cluster1_etm2_out_port>;
415*4882a593Smuzhiyun				};
416*4882a593Smuzhiyun			};
417*4882a593Smuzhiyun			port@3 {
418*4882a593Smuzhiyun				reg = <3>;
419*4882a593Smuzhiyun				cluster1_funnel_in_port3: endpoint {
420*4882a593Smuzhiyun					remote-endpoint = <&cluster1_etm3_out_port>;
421*4882a593Smuzhiyun				};
422*4882a593Smuzhiyun			};
423*4882a593Smuzhiyun		};
424*4882a593Smuzhiyun	};
425*4882a593Smuzhiyun
426*4882a593Smuzhiyun	cpu_debug3: cpu-debug@23110000 {
427*4882a593Smuzhiyun		compatible = "arm,coresight-cpu-debug", "arm,primecell";
428*4882a593Smuzhiyun		reg = <0x0 0x23110000 0x0 0x1000>;
429*4882a593Smuzhiyun
430*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
431*4882a593Smuzhiyun		clock-names = "apb_pclk";
432*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
433*4882a593Smuzhiyun	};
434*4882a593Smuzhiyun
435*4882a593Smuzhiyun	etm3: etm@23140000 {
436*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
437*4882a593Smuzhiyun		reg = <0 0x23140000 0 0x1000>;
438*4882a593Smuzhiyun
439*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
440*4882a593Smuzhiyun		clock-names = "apb_pclk";
441*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
442*4882a593Smuzhiyun		out-ports {
443*4882a593Smuzhiyun			port {
444*4882a593Smuzhiyun				cluster1_etm1_out_port: endpoint {
445*4882a593Smuzhiyun					remote-endpoint = <&cluster1_funnel_in_port1>;
446*4882a593Smuzhiyun				};
447*4882a593Smuzhiyun			};
448*4882a593Smuzhiyun		};
449*4882a593Smuzhiyun	};
450*4882a593Smuzhiyun
451*4882a593Smuzhiyun	cpu_debug4: cpu-debug@23210000 {
452*4882a593Smuzhiyun		compatible = "arm,coresight-cpu-debug", "arm,primecell";
453*4882a593Smuzhiyun		reg = <0x0 0x23210000 0x0 0x1000>;
454*4882a593Smuzhiyun
455*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
456*4882a593Smuzhiyun		clock-names = "apb_pclk";
457*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
458*4882a593Smuzhiyun	};
459*4882a593Smuzhiyun
460*4882a593Smuzhiyun	etm4: etm@23240000 {
461*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
462*4882a593Smuzhiyun		reg = <0 0x23240000 0 0x1000>;
463*4882a593Smuzhiyun
464*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
465*4882a593Smuzhiyun		clock-names = "apb_pclk";
466*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
467*4882a593Smuzhiyun		out-ports {
468*4882a593Smuzhiyun			port {
469*4882a593Smuzhiyun				cluster1_etm2_out_port: endpoint {
470*4882a593Smuzhiyun					remote-endpoint = <&cluster1_funnel_in_port2>;
471*4882a593Smuzhiyun				};
472*4882a593Smuzhiyun			};
473*4882a593Smuzhiyun		};
474*4882a593Smuzhiyun	};
475*4882a593Smuzhiyun
476*4882a593Smuzhiyun	cpu_debug5: cpu-debug@23310000 {
477*4882a593Smuzhiyun		compatible = "arm,coresight-cpu-debug", "arm,primecell";
478*4882a593Smuzhiyun		reg = <0x0 0x23310000 0x0 0x1000>;
479*4882a593Smuzhiyun
480*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
481*4882a593Smuzhiyun		clock-names = "apb_pclk";
482*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
483*4882a593Smuzhiyun	};
484*4882a593Smuzhiyun
485*4882a593Smuzhiyun	etm5: etm@23340000 {
486*4882a593Smuzhiyun		compatible = "arm,coresight-etm4x", "arm,primecell";
487*4882a593Smuzhiyun		reg = <0 0x23340000 0 0x1000>;
488*4882a593Smuzhiyun
489*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
490*4882a593Smuzhiyun		clock-names = "apb_pclk";
491*4882a593Smuzhiyun		power-domains = <&scpi_devpd 0>;
492*4882a593Smuzhiyun		out-ports {
493*4882a593Smuzhiyun			port {
494*4882a593Smuzhiyun				cluster1_etm3_out_port: endpoint {
495*4882a593Smuzhiyun					remote-endpoint = <&cluster1_funnel_in_port3>;
496*4882a593Smuzhiyun				};
497*4882a593Smuzhiyun			};
498*4882a593Smuzhiyun		};
499*4882a593Smuzhiyun	};
500*4882a593Smuzhiyun
501*4882a593Smuzhiyun	gpu: gpu@2d000000 {
502*4882a593Smuzhiyun		compatible = "arm,juno-mali", "arm,mali-t624";
503*4882a593Smuzhiyun		reg = <0 0x2d000000 0 0x10000>;
504*4882a593Smuzhiyun		interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
505*4882a593Smuzhiyun			     <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
506*4882a593Smuzhiyun			     <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
507*4882a593Smuzhiyun		interrupt-names = "job", "mmu", "gpu";
508*4882a593Smuzhiyun		clocks = <&scpi_dvfs 2>;
509*4882a593Smuzhiyun		power-domains = <&scpi_devpd 1>;
510*4882a593Smuzhiyun		dma-coherent;
511*4882a593Smuzhiyun		/* The SMMU is only really of interest to bare-metal hypervisors */
512*4882a593Smuzhiyun		/* iommus = <&smmu_gpu 0>; */
513*4882a593Smuzhiyun		status = "disabled";
514*4882a593Smuzhiyun	};
515*4882a593Smuzhiyun
516*4882a593Smuzhiyun	sram: sram@2e000000 {
517*4882a593Smuzhiyun		compatible = "arm,juno-sram-ns", "mmio-sram";
518*4882a593Smuzhiyun		reg = <0x0 0x2e000000 0x0 0x8000>;
519*4882a593Smuzhiyun
520*4882a593Smuzhiyun		#address-cells = <1>;
521*4882a593Smuzhiyun		#size-cells = <1>;
522*4882a593Smuzhiyun		ranges = <0 0x0 0x2e000000 0x8000>;
523*4882a593Smuzhiyun
524*4882a593Smuzhiyun		cpu_scp_lpri: scp-sram@0 {
525*4882a593Smuzhiyun			compatible = "arm,juno-scp-shmem";
526*4882a593Smuzhiyun			reg = <0x0 0x200>;
527*4882a593Smuzhiyun		};
528*4882a593Smuzhiyun
529*4882a593Smuzhiyun		cpu_scp_hpri: scp-sram@200 {
530*4882a593Smuzhiyun			compatible = "arm,juno-scp-shmem";
531*4882a593Smuzhiyun			reg = <0x200 0x200>;
532*4882a593Smuzhiyun		};
533*4882a593Smuzhiyun	};
534*4882a593Smuzhiyun
535*4882a593Smuzhiyun	pcie_ctlr: pcie@40000000 {
536*4882a593Smuzhiyun		compatible = "arm,juno-r1-pcie", "plda,xpressrich3-axi", "pci-host-ecam-generic";
537*4882a593Smuzhiyun		device_type = "pci";
538*4882a593Smuzhiyun		reg = <0 0x40000000 0 0x10000000>;	/* ECAM config space */
539*4882a593Smuzhiyun		bus-range = <0 255>;
540*4882a593Smuzhiyun		linux,pci-domain = <0>;
541*4882a593Smuzhiyun		#address-cells = <3>;
542*4882a593Smuzhiyun		#size-cells = <2>;
543*4882a593Smuzhiyun		dma-coherent;
544*4882a593Smuzhiyun		ranges = <0x01000000 0x00 0x00000000 0x00 0x5f800000 0x0 0x00800000>,
545*4882a593Smuzhiyun			 <0x02000000 0x00 0x50000000 0x00 0x50000000 0x0 0x08000000>,
546*4882a593Smuzhiyun			 <0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>;
547*4882a593Smuzhiyun		#interrupt-cells = <1>;
548*4882a593Smuzhiyun		interrupt-map-mask = <0 0 0 7>;
549*4882a593Smuzhiyun		interrupt-map = <0 0 0 1 &gic 0 GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
550*4882a593Smuzhiyun				<0 0 0 2 &gic 0 GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
551*4882a593Smuzhiyun				<0 0 0 3 &gic 0 GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
552*4882a593Smuzhiyun				<0 0 0 4 &gic 0 GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
553*4882a593Smuzhiyun		msi-parent = <&v2m_0>;
554*4882a593Smuzhiyun		status = "disabled";
555*4882a593Smuzhiyun		iommu-map-mask = <0x0>;	/* RC has no means to output PCI RID */
556*4882a593Smuzhiyun		iommu-map = <0x0 &smmu_pcie 0x0 0x1>;
557*4882a593Smuzhiyun	};
558*4882a593Smuzhiyun
559*4882a593Smuzhiyun	scpi {
560*4882a593Smuzhiyun		compatible = "arm,scpi";
561*4882a593Smuzhiyun		mboxes = <&mailbox 1>;
562*4882a593Smuzhiyun		shmem = <&cpu_scp_hpri>;
563*4882a593Smuzhiyun
564*4882a593Smuzhiyun		clocks {
565*4882a593Smuzhiyun			compatible = "arm,scpi-clocks";
566*4882a593Smuzhiyun
567*4882a593Smuzhiyun			scpi_dvfs: clocks-0 {
568*4882a593Smuzhiyun				compatible = "arm,scpi-dvfs-clocks";
569*4882a593Smuzhiyun				#clock-cells = <1>;
570*4882a593Smuzhiyun				clock-indices = <0>, <1>, <2>;
571*4882a593Smuzhiyun				clock-output-names = "atlclk", "aplclk","gpuclk";
572*4882a593Smuzhiyun			};
573*4882a593Smuzhiyun			scpi_clk: clocks-1 {
574*4882a593Smuzhiyun				compatible = "arm,scpi-variable-clocks";
575*4882a593Smuzhiyun				#clock-cells = <1>;
576*4882a593Smuzhiyun				clock-indices = <3>;
577*4882a593Smuzhiyun				clock-output-names = "pxlclk";
578*4882a593Smuzhiyun			};
579*4882a593Smuzhiyun		};
580*4882a593Smuzhiyun
581*4882a593Smuzhiyun		scpi_devpd: power-controller {
582*4882a593Smuzhiyun			compatible = "arm,scpi-power-domains";
583*4882a593Smuzhiyun			num-domains = <2>;
584*4882a593Smuzhiyun			#power-domain-cells = <1>;
585*4882a593Smuzhiyun		};
586*4882a593Smuzhiyun
587*4882a593Smuzhiyun		scpi_sensors0: sensors {
588*4882a593Smuzhiyun			compatible = "arm,scpi-sensors";
589*4882a593Smuzhiyun			#thermal-sensor-cells = <1>;
590*4882a593Smuzhiyun		};
591*4882a593Smuzhiyun	};
592*4882a593Smuzhiyun
593*4882a593Smuzhiyun	thermal-zones {
594*4882a593Smuzhiyun		pmic {
595*4882a593Smuzhiyun			polling-delay = <1000>;
596*4882a593Smuzhiyun			polling-delay-passive = <100>;
597*4882a593Smuzhiyun			thermal-sensors = <&scpi_sensors0 0>;
598*4882a593Smuzhiyun			trips {
599*4882a593Smuzhiyun				pmic_crit0: trip0 {
600*4882a593Smuzhiyun					temperature = <90000>;
601*4882a593Smuzhiyun					hysteresis = <2000>;
602*4882a593Smuzhiyun					type = "critical";
603*4882a593Smuzhiyun				};
604*4882a593Smuzhiyun			};
605*4882a593Smuzhiyun		};
606*4882a593Smuzhiyun
607*4882a593Smuzhiyun		soc {
608*4882a593Smuzhiyun			polling-delay = <1000>;
609*4882a593Smuzhiyun			polling-delay-passive = <100>;
610*4882a593Smuzhiyun			thermal-sensors = <&scpi_sensors0 3>;
611*4882a593Smuzhiyun			trips {
612*4882a593Smuzhiyun				soc_crit0: trip0 {
613*4882a593Smuzhiyun					temperature = <80000>;
614*4882a593Smuzhiyun					hysteresis = <2000>;
615*4882a593Smuzhiyun					type = "critical";
616*4882a593Smuzhiyun				};
617*4882a593Smuzhiyun			};
618*4882a593Smuzhiyun		};
619*4882a593Smuzhiyun
620*4882a593Smuzhiyun		big_cluster_thermal_zone: big-cluster {
621*4882a593Smuzhiyun			polling-delay = <1000>;
622*4882a593Smuzhiyun			polling-delay-passive = <100>;
623*4882a593Smuzhiyun			thermal-sensors = <&scpi_sensors0 21>;
624*4882a593Smuzhiyun			status = "disabled";
625*4882a593Smuzhiyun		};
626*4882a593Smuzhiyun
627*4882a593Smuzhiyun		little_cluster_thermal_zone: little-cluster {
628*4882a593Smuzhiyun			polling-delay = <1000>;
629*4882a593Smuzhiyun			polling-delay-passive = <100>;
630*4882a593Smuzhiyun			thermal-sensors = <&scpi_sensors0 22>;
631*4882a593Smuzhiyun			status = "disabled";
632*4882a593Smuzhiyun		};
633*4882a593Smuzhiyun
634*4882a593Smuzhiyun		gpu0_thermal_zone: gpu0 {
635*4882a593Smuzhiyun			polling-delay = <1000>;
636*4882a593Smuzhiyun			polling-delay-passive = <100>;
637*4882a593Smuzhiyun			thermal-sensors = <&scpi_sensors0 23>;
638*4882a593Smuzhiyun			status = "disabled";
639*4882a593Smuzhiyun		};
640*4882a593Smuzhiyun
641*4882a593Smuzhiyun		gpu1_thermal_zone: gpu1 {
642*4882a593Smuzhiyun			polling-delay = <1000>;
643*4882a593Smuzhiyun			polling-delay-passive = <100>;
644*4882a593Smuzhiyun			thermal-sensors = <&scpi_sensors0 24>;
645*4882a593Smuzhiyun			status = "disabled";
646*4882a593Smuzhiyun		};
647*4882a593Smuzhiyun	};
648*4882a593Smuzhiyun
649*4882a593Smuzhiyun	smmu_dma: iommu@7fb00000 {
650*4882a593Smuzhiyun		compatible = "arm,mmu-401", "arm,smmu-v1";
651*4882a593Smuzhiyun		reg = <0x0 0x7fb00000 0x0 0x10000>;
652*4882a593Smuzhiyun		interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
653*4882a593Smuzhiyun			     <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
654*4882a593Smuzhiyun		#iommu-cells = <1>;
655*4882a593Smuzhiyun		#global-interrupts = <1>;
656*4882a593Smuzhiyun		dma-coherent;
657*4882a593Smuzhiyun		status = "disabled";
658*4882a593Smuzhiyun	};
659*4882a593Smuzhiyun
660*4882a593Smuzhiyun	smmu_hdlcd1: iommu@7fb10000 {
661*4882a593Smuzhiyun		compatible = "arm,mmu-401", "arm,smmu-v1";
662*4882a593Smuzhiyun		reg = <0x0 0x7fb10000 0x0 0x10000>;
663*4882a593Smuzhiyun		interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
664*4882a593Smuzhiyun			     <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
665*4882a593Smuzhiyun		#iommu-cells = <1>;
666*4882a593Smuzhiyun		#global-interrupts = <1>;
667*4882a593Smuzhiyun	};
668*4882a593Smuzhiyun
669*4882a593Smuzhiyun	smmu_hdlcd0: iommu@7fb20000 {
670*4882a593Smuzhiyun		compatible = "arm,mmu-401", "arm,smmu-v1";
671*4882a593Smuzhiyun		reg = <0x0 0x7fb20000 0x0 0x10000>;
672*4882a593Smuzhiyun		interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
673*4882a593Smuzhiyun			     <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
674*4882a593Smuzhiyun		#iommu-cells = <1>;
675*4882a593Smuzhiyun		#global-interrupts = <1>;
676*4882a593Smuzhiyun	};
677*4882a593Smuzhiyun
678*4882a593Smuzhiyun	smmu_usb: iommu@7fb30000 {
679*4882a593Smuzhiyun		compatible = "arm,mmu-401", "arm,smmu-v1";
680*4882a593Smuzhiyun		reg = <0x0 0x7fb30000 0x0 0x10000>;
681*4882a593Smuzhiyun		interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
682*4882a593Smuzhiyun			     <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
683*4882a593Smuzhiyun		#iommu-cells = <1>;
684*4882a593Smuzhiyun		#global-interrupts = <1>;
685*4882a593Smuzhiyun		dma-coherent;
686*4882a593Smuzhiyun	};
687*4882a593Smuzhiyun
688*4882a593Smuzhiyun	dma@7ff00000 {
689*4882a593Smuzhiyun		compatible = "arm,pl330", "arm,primecell";
690*4882a593Smuzhiyun		reg = <0x0 0x7ff00000 0 0x1000>;
691*4882a593Smuzhiyun		#dma-cells = <1>;
692*4882a593Smuzhiyun		#dma-channels = <8>;
693*4882a593Smuzhiyun		#dma-requests = <32>;
694*4882a593Smuzhiyun		interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
695*4882a593Smuzhiyun			     <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
696*4882a593Smuzhiyun			     <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
697*4882a593Smuzhiyun			     <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
698*4882a593Smuzhiyun			     <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
699*4882a593Smuzhiyun			     <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
700*4882a593Smuzhiyun			     <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
701*4882a593Smuzhiyun			     <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
702*4882a593Smuzhiyun			     <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
703*4882a593Smuzhiyun		iommus = <&smmu_dma 0>,
704*4882a593Smuzhiyun			 <&smmu_dma 1>,
705*4882a593Smuzhiyun			 <&smmu_dma 2>,
706*4882a593Smuzhiyun			 <&smmu_dma 3>,
707*4882a593Smuzhiyun			 <&smmu_dma 4>,
708*4882a593Smuzhiyun			 <&smmu_dma 5>,
709*4882a593Smuzhiyun			 <&smmu_dma 6>,
710*4882a593Smuzhiyun			 <&smmu_dma 7>,
711*4882a593Smuzhiyun			 <&smmu_dma 8>;
712*4882a593Smuzhiyun		clocks = <&soc_faxiclk>;
713*4882a593Smuzhiyun		clock-names = "apb_pclk";
714*4882a593Smuzhiyun	};
715*4882a593Smuzhiyun
716*4882a593Smuzhiyun	hdlcd@7ff50000 {
717*4882a593Smuzhiyun		compatible = "arm,hdlcd";
718*4882a593Smuzhiyun		reg = <0 0x7ff50000 0 0x1000>;
719*4882a593Smuzhiyun		interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
720*4882a593Smuzhiyun		iommus = <&smmu_hdlcd1 0>;
721*4882a593Smuzhiyun		clocks = <&scpi_clk 3>;
722*4882a593Smuzhiyun		clock-names = "pxlclk";
723*4882a593Smuzhiyun
724*4882a593Smuzhiyun		port {
725*4882a593Smuzhiyun			hdlcd1_output: endpoint {
726*4882a593Smuzhiyun				remote-endpoint = <&tda998x_1_input>;
727*4882a593Smuzhiyun			};
728*4882a593Smuzhiyun		};
729*4882a593Smuzhiyun	};
730*4882a593Smuzhiyun
731*4882a593Smuzhiyun	hdlcd@7ff60000 {
732*4882a593Smuzhiyun		compatible = "arm,hdlcd";
733*4882a593Smuzhiyun		reg = <0 0x7ff60000 0 0x1000>;
734*4882a593Smuzhiyun		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
735*4882a593Smuzhiyun		iommus = <&smmu_hdlcd0 0>;
736*4882a593Smuzhiyun		clocks = <&scpi_clk 3>;
737*4882a593Smuzhiyun		clock-names = "pxlclk";
738*4882a593Smuzhiyun
739*4882a593Smuzhiyun		port {
740*4882a593Smuzhiyun			hdlcd0_output: endpoint {
741*4882a593Smuzhiyun				remote-endpoint = <&tda998x_0_input>;
742*4882a593Smuzhiyun			};
743*4882a593Smuzhiyun		};
744*4882a593Smuzhiyun	};
745*4882a593Smuzhiyun
746*4882a593Smuzhiyun	soc_uart0: serial@7ff80000 {
747*4882a593Smuzhiyun		compatible = "arm,pl011", "arm,primecell";
748*4882a593Smuzhiyun		reg = <0x0 0x7ff80000 0x0 0x1000>;
749*4882a593Smuzhiyun		interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
750*4882a593Smuzhiyun		clocks = <&soc_uartclk>, <&soc_refclk100mhz>;
751*4882a593Smuzhiyun		clock-names = "uartclk", "apb_pclk";
752*4882a593Smuzhiyun	};
753*4882a593Smuzhiyun
754*4882a593Smuzhiyun	i2c@7ffa0000 {
755*4882a593Smuzhiyun		compatible = "snps,designware-i2c";
756*4882a593Smuzhiyun		reg = <0x0 0x7ffa0000 0x0 0x1000>;
757*4882a593Smuzhiyun		#address-cells = <1>;
758*4882a593Smuzhiyun		#size-cells = <0>;
759*4882a593Smuzhiyun		interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
760*4882a593Smuzhiyun		clock-frequency = <400000>;
761*4882a593Smuzhiyun		i2c-sda-hold-time-ns = <500>;
762*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
763*4882a593Smuzhiyun
764*4882a593Smuzhiyun		hdmi-transmitter@70 {
765*4882a593Smuzhiyun			compatible = "nxp,tda998x";
766*4882a593Smuzhiyun			reg = <0x70>;
767*4882a593Smuzhiyun			port {
768*4882a593Smuzhiyun				tda998x_0_input: endpoint {
769*4882a593Smuzhiyun					remote-endpoint = <&hdlcd0_output>;
770*4882a593Smuzhiyun				};
771*4882a593Smuzhiyun			};
772*4882a593Smuzhiyun		};
773*4882a593Smuzhiyun
774*4882a593Smuzhiyun		hdmi-transmitter@71 {
775*4882a593Smuzhiyun			compatible = "nxp,tda998x";
776*4882a593Smuzhiyun			reg = <0x71>;
777*4882a593Smuzhiyun			port {
778*4882a593Smuzhiyun				tda998x_1_input: endpoint {
779*4882a593Smuzhiyun					remote-endpoint = <&hdlcd1_output>;
780*4882a593Smuzhiyun				};
781*4882a593Smuzhiyun			};
782*4882a593Smuzhiyun		};
783*4882a593Smuzhiyun	};
784*4882a593Smuzhiyun
785*4882a593Smuzhiyun	usb@7ffb0000 {
786*4882a593Smuzhiyun		compatible = "generic-ohci";
787*4882a593Smuzhiyun		reg = <0x0 0x7ffb0000 0x0 0x10000>;
788*4882a593Smuzhiyun		interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
789*4882a593Smuzhiyun		iommus = <&smmu_usb 0>;
790*4882a593Smuzhiyun		clocks = <&soc_usb48mhz>;
791*4882a593Smuzhiyun	};
792*4882a593Smuzhiyun
793*4882a593Smuzhiyun	usb@7ffc0000 {
794*4882a593Smuzhiyun		compatible = "generic-ehci";
795*4882a593Smuzhiyun		reg = <0x0 0x7ffc0000 0x0 0x10000>;
796*4882a593Smuzhiyun		interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
797*4882a593Smuzhiyun		iommus = <&smmu_usb 0>;
798*4882a593Smuzhiyun		clocks = <&soc_usb48mhz>;
799*4882a593Smuzhiyun	};
800*4882a593Smuzhiyun
801*4882a593Smuzhiyun	memory-controller@7ffd0000 {
802*4882a593Smuzhiyun		compatible = "arm,pl354", "arm,primecell";
803*4882a593Smuzhiyun		reg = <0 0x7ffd0000 0 0x1000>;
804*4882a593Smuzhiyun		interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
805*4882a593Smuzhiyun			     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
806*4882a593Smuzhiyun		clocks = <&soc_smc50mhz>;
807*4882a593Smuzhiyun		clock-names = "apb_pclk";
808*4882a593Smuzhiyun	};
809*4882a593Smuzhiyun
810*4882a593Smuzhiyun	memory@80000000 {
811*4882a593Smuzhiyun		device_type = "memory";
812*4882a593Smuzhiyun		/* last 16MB of the first memory area is reserved for secure world use by firmware */
813*4882a593Smuzhiyun		reg = <0x00000000 0x80000000 0x0 0x7f000000>,
814*4882a593Smuzhiyun		      <0x00000008 0x80000000 0x1 0x80000000>;
815*4882a593Smuzhiyun	};
816*4882a593Smuzhiyun
817*4882a593Smuzhiyun	bus@8000000 {
818*4882a593Smuzhiyun		compatible = "simple-bus";
819*4882a593Smuzhiyun		#address-cells = <2>;
820*4882a593Smuzhiyun		#size-cells = <1>;
821*4882a593Smuzhiyun		ranges = <0 0 0 0x08000000 0x04000000>,
822*4882a593Smuzhiyun			 <1 0 0 0x14000000 0x04000000>,
823*4882a593Smuzhiyun			 <2 0 0 0x18000000 0x04000000>,
824*4882a593Smuzhiyun			 <3 0 0 0x1c000000 0x04000000>,
825*4882a593Smuzhiyun			 <4 0 0 0x0c000000 0x04000000>,
826*4882a593Smuzhiyun			 <5 0 0 0x10000000 0x04000000>;
827*4882a593Smuzhiyun
828*4882a593Smuzhiyun		#interrupt-cells = <1>;
829*4882a593Smuzhiyun		interrupt-map-mask = <0 0 15>;
830*4882a593Smuzhiyun		interrupt-map = <0 0  0 &gic 0 GIC_SPI  68 IRQ_TYPE_LEVEL_HIGH>,
831*4882a593Smuzhiyun				<0 0  1 &gic 0 GIC_SPI  69 IRQ_TYPE_LEVEL_HIGH>,
832*4882a593Smuzhiyun				<0 0  2 &gic 0 GIC_SPI  70 IRQ_TYPE_LEVEL_HIGH>,
833*4882a593Smuzhiyun				<0 0  3 &gic 0 GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
834*4882a593Smuzhiyun				<0 0  4 &gic 0 GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
835*4882a593Smuzhiyun				<0 0  5 &gic 0 GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
836*4882a593Smuzhiyun				<0 0  6 &gic 0 GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
837*4882a593Smuzhiyun				<0 0  7 &gic 0 GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
838*4882a593Smuzhiyun				<0 0  8 &gic 0 GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
839*4882a593Smuzhiyun				<0 0  9 &gic 0 GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
840*4882a593Smuzhiyun				<0 0 10 &gic 0 GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
841*4882a593Smuzhiyun				<0 0 11 &gic 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
842*4882a593Smuzhiyun				<0 0 12 &gic 0 GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
843*4882a593Smuzhiyun	};
844*4882a593Smuzhiyun
845*4882a593Smuzhiyun	site2: tlx-bus@60000000 {
846*4882a593Smuzhiyun		compatible = "simple-bus";
847*4882a593Smuzhiyun		#address-cells = <1>;
848*4882a593Smuzhiyun		#size-cells = <1>;
849*4882a593Smuzhiyun		ranges = <0 0 0x60000000 0x10000000>;
850*4882a593Smuzhiyun		#interrupt-cells = <1>;
851*4882a593Smuzhiyun		interrupt-map-mask = <0 0>;
852*4882a593Smuzhiyun		interrupt-map = <0 0 &gic 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
853*4882a593Smuzhiyun	};
854*4882a593Smuzhiyun};
855