1/*
2 * dts file for AppliedMicro (APM) X-Gene Storm SOC
3 *
4 * Copyright (C) 2013, Applied Micro Circuits Corporation
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 2 of
9 * the License, or (at your option) any later version.
10 */
11
12/ {
13	compatible = "apm,xgene-storm";
14	interrupt-parent = <&gic>;
15	#address-cells = <2>;
16	#size-cells = <2>;
17
18	cpus {
19		#address-cells = <2>;
20		#size-cells = <0>;
21
22		cpu@0 {
23			device_type = "cpu";
24			compatible = "apm,potenza", "arm,armv8";
25			reg = <0x0 0x000>;
26			enable-method = "spin-table";
27			cpu-release-addr = <0x1 0x0000fff8>;
28			next-level-cache = <&xgene_L2_0>;
29		};
30		cpu@1 {
31			device_type = "cpu";
32			compatible = "apm,potenza", "arm,armv8";
33			reg = <0x0 0x001>;
34			enable-method = "spin-table";
35			cpu-release-addr = <0x1 0x0000fff8>;
36			next-level-cache = <&xgene_L2_0>;
37		};
38		cpu@100 {
39			device_type = "cpu";
40			compatible = "apm,potenza", "arm,armv8";
41			reg = <0x0 0x100>;
42			enable-method = "spin-table";
43			cpu-release-addr = <0x1 0x0000fff8>;
44			next-level-cache = <&xgene_L2_1>;
45		};
46		cpu@101 {
47			device_type = "cpu";
48			compatible = "apm,potenza", "arm,armv8";
49			reg = <0x0 0x101>;
50			enable-method = "spin-table";
51			cpu-release-addr = <0x1 0x0000fff8>;
52			next-level-cache = <&xgene_L2_1>;
53		};
54		cpu@200 {
55			device_type = "cpu";
56			compatible = "apm,potenza", "arm,armv8";
57			reg = <0x0 0x200>;
58			enable-method = "spin-table";
59			cpu-release-addr = <0x1 0x0000fff8>;
60			next-level-cache = <&xgene_L2_2>;
61		};
62		cpu@201 {
63			device_type = "cpu";
64			compatible = "apm,potenza", "arm,armv8";
65			reg = <0x0 0x201>;
66			enable-method = "spin-table";
67			cpu-release-addr = <0x1 0x0000fff8>;
68			next-level-cache = <&xgene_L2_2>;
69		};
70		cpu@300 {
71			device_type = "cpu";
72			compatible = "apm,potenza", "arm,armv8";
73			reg = <0x0 0x300>;
74			enable-method = "spin-table";
75			cpu-release-addr = <0x1 0x0000fff8>;
76			next-level-cache = <&xgene_L2_3>;
77		};
78		cpu@301 {
79			device_type = "cpu";
80			compatible = "apm,potenza", "arm,armv8";
81			reg = <0x0 0x301>;
82			enable-method = "spin-table";
83			cpu-release-addr = <0x1 0x0000fff8>;
84			next-level-cache = <&xgene_L2_3>;
85		};
86		xgene_L2_0: l2-cache-0 {
87			compatible = "cache";
88		};
89		xgene_L2_1: l2-cache-1 {
90			compatible = "cache";
91		};
92		xgene_L2_2: l2-cache-2 {
93			compatible = "cache";
94		};
95		xgene_L2_3: l2-cache-3 {
96			compatible = "cache";
97		};
98	};
99
100	gic: interrupt-controller@78010000 {
101		compatible = "arm,cortex-a15-gic";
102		#interrupt-cells = <3>;
103		interrupt-controller;
104		reg = <0x0 0x78010000 0x0 0x1000>,	/* GIC Dist */
105		      <0x0 0x78020000 0x0 0x1000>,	/* GIC CPU */
106		      <0x0 0x78040000 0x0 0x2000>,	/* GIC VCPU Control */
107		      <0x0 0x78060000 0x0 0x2000>;	/* GIC VCPU */
108		interrupts = <1 9 0xf04>;	/* GIC Maintenence IRQ */
109	};
110
111	timer {
112		compatible = "arm,armv8-timer";
113		interrupts = <1 0 0xff08>,	/* Secure Phys IRQ */
114			     <1 13 0xff08>,	/* Non-secure Phys IRQ */
115			     <1 14 0xff08>,	/* Virt IRQ */
116			     <1 15 0xff08>;	/* Hyp IRQ */
117		clock-frequency = <50000000>;
118	};
119
120	pmu {
121		compatible = "apm,potenza-pmu", "arm,armv8-pmuv3";
122		interrupts = <1 12 0xff04>;
123	};
124
125	soc {
126		compatible = "simple-bus";
127		#address-cells = <2>;
128		#size-cells = <2>;
129		ranges;
130		dma-ranges = <0x0 0x0 0x0 0x0 0x400 0x0>;
131
132		clocks {
133			#address-cells = <2>;
134			#size-cells = <2>;
135			ranges;
136			refclk: refclk {
137				compatible = "fixed-clock";
138				#clock-cells = <1>;
139				clock-frequency = <100000000>;
140				clock-output-names = "refclk";
141			};
142
143			pcppll: pcppll@17000100 {
144				compatible = "apm,xgene-pcppll-clock";
145				#clock-cells = <1>;
146				clocks = <&refclk 0>;
147				clock-names = "pcppll";
148				reg = <0x0 0x17000100 0x0 0x1000>;
149				clock-output-names = "pcppll";
150				type = <0>;
151			};
152
153			socpll: socpll@17000120 {
154				compatible = "apm,xgene-socpll-clock";
155				#clock-cells = <1>;
156				clocks = <&refclk 0>;
157				clock-names = "socpll";
158				reg = <0x0 0x17000120 0x0 0x1000>;
159				clock-output-names = "socpll";
160				type = <1>;
161			};
162
163			socplldiv2: socplldiv2  {
164				compatible = "fixed-factor-clock";
165				#clock-cells = <1>;
166				clocks = <&socpll 0>;
167				clock-names = "socplldiv2";
168				clock-mult = <1>;
169				clock-div = <2>;
170				clock-output-names = "socplldiv2";
171			};
172
173			ahbclk: ahbclk@17000000 {
174				compatible = "apm,xgene-device-clock";
175				#clock-cells = <1>;
176				clocks = <&socplldiv2 0>;
177				reg = <0x0 0x17000000 0x0 0x2000>;
178				reg-names = "div-reg";
179				divider-offset = <0x164>;
180				divider-width = <0x5>;
181				divider-shift = <0x0>;
182				clock-output-names = "ahbclk";
183			};
184
185			sdioclk: sdioclk@1f2ac000 {
186				compatible = "apm,xgene-device-clock";
187				#clock-cells = <1>;
188				clocks = <&socplldiv2 0>;
189				reg = <0x0 0x1f2ac000 0x0 0x1000
190					0x0 0x17000000 0x0 0x2000>;
191				reg-names = "csr-reg", "div-reg";
192				csr-offset = <0x0>;
193				csr-mask = <0x2>;
194				enable-offset = <0x8>;
195				enable-mask = <0x2>;
196				divider-offset = <0x178>;
197				divider-width = <0x8>;
198				divider-shift = <0x0>;
199				clock-output-names = "sdioclk";
200			};
201
202			ethclk: ethclk {
203				compatible = "apm,xgene-device-clock";
204				#clock-cells = <1>;
205				clocks = <&socplldiv2 0>;
206				clock-names = "ethclk";
207				reg = <0x0 0x17000000 0x0 0x1000>;
208				reg-names = "div-reg";
209				divider-offset = <0x238>;
210				divider-width = <0x9>;
211				divider-shift = <0x0>;
212				clock-output-names = "ethclk";
213			};
214
215			menetclk: menetclk {
216				compatible = "apm,xgene-device-clock";
217				#clock-cells = <1>;
218				clocks = <&ethclk 0>;
219				reg = <0x0 0x1702c000 0x0 0x1000>;
220				reg-names = "csr-reg";
221				clock-output-names = "menetclk";
222			};
223
224			sge0clk: sge0clk@1f21c000 {
225				compatible = "apm,xgene-device-clock";
226				#clock-cells = <1>;
227				clocks = <&socplldiv2 0>;
228				reg = <0x0 0x1f21c000 0x0 0x1000>;
229				reg-names = "csr-reg";
230				csr-mask = <0xa>;
231				enable-mask = <0xf>;
232				clock-output-names = "sge0clk";
233			};
234
235			xge0clk: xge0clk@1f61c000 {
236				compatible = "apm,xgene-device-clock";
237				#clock-cells = <1>;
238				clocks = <&socplldiv2 0>;
239				reg = <0x0 0x1f61c000 0x0 0x1000>;
240				reg-names = "csr-reg";
241				csr-mask = <0x3>;
242				clock-output-names = "xge0clk";
243			};
244
245			xge1clk: xge1clk@1f62c000 {
246				compatible = "apm,xgene-device-clock";
247				status = "disabled";
248				#clock-cells = <1>;
249				clocks = <&socplldiv2 0>;
250				reg = <0x0 0x1f62c000 0x0 0x1000>;
251				reg-names = "csr-reg";
252				csr-mask = <0x3>;
253				clock-output-names = "xge1clk";
254			};
255
256			sataphy1clk: sataphy1clk@1f21c000 {
257				compatible = "apm,xgene-device-clock";
258				#clock-cells = <1>;
259				clocks = <&socplldiv2 0>;
260				reg = <0x0 0x1f21c000 0x0 0x1000>;
261				reg-names = "csr-reg";
262				clock-output-names = "sataphy1clk";
263				status = "disabled";
264				csr-offset = <0x4>;
265				csr-mask = <0x00>;
266				enable-offset = <0x0>;
267				enable-mask = <0x06>;
268			};
269
270			sataphy2clk: sataphy1clk@1f22c000 {
271				compatible = "apm,xgene-device-clock";
272				#clock-cells = <1>;
273				clocks = <&socplldiv2 0>;
274				reg = <0x0 0x1f22c000 0x0 0x1000>;
275				reg-names = "csr-reg";
276				clock-output-names = "sataphy2clk";
277				status = "ok";
278				csr-offset = <0x4>;
279				csr-mask = <0x3a>;
280				enable-offset = <0x0>;
281				enable-mask = <0x06>;
282			};
283
284			sataphy3clk: sataphy1clk@1f23c000 {
285				compatible = "apm,xgene-device-clock";
286				#clock-cells = <1>;
287				clocks = <&socplldiv2 0>;
288				reg = <0x0 0x1f23c000 0x0 0x1000>;
289				reg-names = "csr-reg";
290				clock-output-names = "sataphy3clk";
291				status = "ok";
292				csr-offset = <0x4>;
293				csr-mask = <0x3a>;
294				enable-offset = <0x0>;
295				enable-mask = <0x06>;
296			};
297
298			sata01clk: sata01clk@1f21c000 {
299				compatible = "apm,xgene-device-clock";
300				#clock-cells = <1>;
301				clocks = <&socplldiv2 0>;
302				reg = <0x0 0x1f21c000 0x0 0x1000>;
303				reg-names = "csr-reg";
304				clock-output-names = "sata01clk";
305				csr-offset = <0x4>;
306				csr-mask = <0x05>;
307				enable-offset = <0x0>;
308				enable-mask = <0x39>;
309			};
310
311			sata23clk: sata23clk@1f22c000 {
312				compatible = "apm,xgene-device-clock";
313				#clock-cells = <1>;
314				clocks = <&socplldiv2 0>;
315				reg = <0x0 0x1f22c000 0x0 0x1000>;
316				reg-names = "csr-reg";
317				clock-output-names = "sata23clk";
318				csr-offset = <0x4>;
319				csr-mask = <0x05>;
320				enable-offset = <0x0>;
321				enable-mask = <0x39>;
322			};
323
324			sata45clk: sata45clk@1f23c000 {
325				compatible = "apm,xgene-device-clock";
326				#clock-cells = <1>;
327				clocks = <&socplldiv2 0>;
328				reg = <0x0 0x1f23c000 0x0 0x1000>;
329				reg-names = "csr-reg";
330				clock-output-names = "sata45clk";
331				csr-offset = <0x4>;
332				csr-mask = <0x05>;
333				enable-offset = <0x0>;
334				enable-mask = <0x39>;
335			};
336
337			rtcclk: rtcclk@17000000 {
338				compatible = "apm,xgene-device-clock";
339				#clock-cells = <1>;
340				clocks = <&socplldiv2 0>;
341				reg = <0x0 0x17000000 0x0 0x2000>;
342				reg-names = "csr-reg";
343				csr-offset = <0xc>;
344				csr-mask = <0x2>;
345				enable-offset = <0x10>;
346				enable-mask = <0x2>;
347				clock-output-names = "rtcclk";
348			};
349
350			rngpkaclk: rngpkaclk@17000000 {
351				compatible = "apm,xgene-device-clock";
352				#clock-cells = <1>;
353				clocks = <&socplldiv2 0>;
354				reg = <0x0 0x17000000 0x0 0x2000>;
355				reg-names = "csr-reg";
356				csr-offset = <0xc>;
357				csr-mask = <0x10>;
358				enable-offset = <0x10>;
359				enable-mask = <0x10>;
360				clock-output-names = "rngpkaclk";
361			};
362
363			pcie0clk: pcie0clk@1f2bc000 {
364				status = "disabled";
365				compatible = "apm,xgene-device-clock";
366				#clock-cells = <1>;
367				clocks = <&socplldiv2 0>;
368				reg = <0x0 0x1f2bc000 0x0 0x1000>;
369				reg-names = "csr-reg";
370				clock-output-names = "pcie0clk";
371			};
372
373			pcie1clk: pcie1clk@1f2cc000 {
374				status = "disabled";
375				compatible = "apm,xgene-device-clock";
376				#clock-cells = <1>;
377				clocks = <&socplldiv2 0>;
378				reg = <0x0 0x1f2cc000 0x0 0x1000>;
379				reg-names = "csr-reg";
380				clock-output-names = "pcie1clk";
381			};
382
383			pcie2clk: pcie2clk@1f2dc000 {
384				status = "disabled";
385				compatible = "apm,xgene-device-clock";
386				#clock-cells = <1>;
387				clocks = <&socplldiv2 0>;
388				reg = <0x0 0x1f2dc000 0x0 0x1000>;
389				reg-names = "csr-reg";
390				clock-output-names = "pcie2clk";
391			};
392
393			pcie3clk: pcie3clk@1f50c000 {
394				status = "disabled";
395				compatible = "apm,xgene-device-clock";
396				#clock-cells = <1>;
397				clocks = <&socplldiv2 0>;
398				reg = <0x0 0x1f50c000 0x0 0x1000>;
399				reg-names = "csr-reg";
400				clock-output-names = "pcie3clk";
401			};
402
403			pcie4clk: pcie4clk@1f51c000 {
404				status = "disabled";
405				compatible = "apm,xgene-device-clock";
406				#clock-cells = <1>;
407				clocks = <&socplldiv2 0>;
408				reg = <0x0 0x1f51c000 0x0 0x1000>;
409				reg-names = "csr-reg";
410				clock-output-names = "pcie4clk";
411			};
412
413			dmaclk: dmaclk@1f27c000 {
414				compatible = "apm,xgene-device-clock";
415				#clock-cells = <1>;
416				clocks = <&socplldiv2 0>;
417				reg = <0x0 0x1f27c000 0x0 0x1000>;
418				reg-names = "csr-reg";
419				clock-output-names = "dmaclk";
420			};
421		};
422
423		msi: msi@79000000 {
424			compatible = "apm,xgene1-msi";
425			msi-controller;
426			reg = <0x00 0x79000000 0x0 0x900000>;
427			interrupts = <  0x0 0x10 0x4
428					0x0 0x11 0x4
429					0x0 0x12 0x4
430					0x0 0x13 0x4
431					0x0 0x14 0x4
432					0x0 0x15 0x4
433					0x0 0x16 0x4
434					0x0 0x17 0x4
435					0x0 0x18 0x4
436					0x0 0x19 0x4
437					0x0 0x1a 0x4
438					0x0 0x1b 0x4
439					0x0 0x1c 0x4
440					0x0 0x1d 0x4
441					0x0 0x1e 0x4
442					0x0 0x1f 0x4>;
443		};
444
445		scu: system-clk-controller@17000000 {
446			compatible = "apm,xgene-scu","syscon";
447			reg = <0x0 0x17000000 0x0 0x400>;
448		};
449
450		reboot: reboot@17000014 {
451			compatible = "syscon-reboot";
452			regmap = <&scu>;
453			offset = <0x14>;
454			mask = <0x1>;
455		};
456
457		csw: csw@7e200000 {
458			compatible = "apm,xgene-csw", "syscon";
459			reg = <0x0 0x7e200000 0x0 0x1000>;
460		};
461
462		mcba: mcba@7e700000 {
463			compatible = "apm,xgene-mcb", "syscon";
464			reg = <0x0 0x7e700000 0x0 0x1000>;
465		};
466
467		mcbb: mcbb@7e720000 {
468			compatible = "apm,xgene-mcb", "syscon";
469			reg = <0x0 0x7e720000 0x0 0x1000>;
470		};
471
472		efuse: efuse@1054a000 {
473			compatible = "apm,xgene-efuse", "syscon";
474			reg = <0x0 0x1054a000 0x0 0x20>;
475		};
476
477		rb: rb@7e000000 {
478			compatible = "apm,xgene-rb", "syscon";
479			reg = <0x0 0x7e000000 0x0 0x10>;
480		};
481
482		edac@78800000 {
483			compatible = "apm,xgene-edac";
484			#address-cells = <2>;
485			#size-cells = <2>;
486			ranges;
487			regmap-csw = <&csw>;
488			regmap-mcba = <&mcba>;
489			regmap-mcbb = <&mcbb>;
490			regmap-efuse = <&efuse>;
491			regmap-rb = <&rb>;
492			reg = <0x0 0x78800000 0x0 0x100>;
493			interrupts = <0x0 0x20 0x4>,
494				     <0x0 0x21 0x4>,
495				     <0x0 0x27 0x4>;
496
497			edacmc@7e800000 {
498				compatible = "apm,xgene-edac-mc";
499				reg = <0x0 0x7e800000 0x0 0x1000>;
500				memory-controller = <0>;
501			};
502
503			edacmc@7e840000 {
504				compatible = "apm,xgene-edac-mc";
505				reg = <0x0 0x7e840000 0x0 0x1000>;
506				memory-controller = <1>;
507			};
508
509			edacmc@7e880000 {
510				compatible = "apm,xgene-edac-mc";
511				reg = <0x0 0x7e880000 0x0 0x1000>;
512				memory-controller = <2>;
513			};
514
515			edacmc@7e8c0000 {
516				compatible = "apm,xgene-edac-mc";
517				reg = <0x0 0x7e8c0000 0x0 0x1000>;
518				memory-controller = <3>;
519			};
520
521			edacpmd@7c000000 {
522				compatible = "apm,xgene-edac-pmd";
523				reg = <0x0 0x7c000000 0x0 0x200000>;
524				pmd-controller = <0>;
525			};
526
527			edacpmd@7c200000 {
528				compatible = "apm,xgene-edac-pmd";
529				reg = <0x0 0x7c200000 0x0 0x200000>;
530				pmd-controller = <1>;
531			};
532
533			edacpmd@7c400000 {
534				compatible = "apm,xgene-edac-pmd";
535				reg = <0x0 0x7c400000 0x0 0x200000>;
536				pmd-controller = <2>;
537			};
538
539			edacpmd@7c600000 {
540				compatible = "apm,xgene-edac-pmd";
541				reg = <0x0 0x7c600000 0x0 0x200000>;
542				pmd-controller = <3>;
543			};
544
545			edacl3@7e600000 {
546				compatible = "apm,xgene-edac-l3";
547				reg = <0x0 0x7e600000 0x0 0x1000>;
548			};
549
550			edacsoc@7e930000 {
551				compatible = "apm,xgene-edac-soc-v1";
552				reg = <0x0 0x7e930000 0x0 0x1000>;
553			};
554		};
555
556		pmu: pmu@78810000 {
557			compatible = "apm,xgene-pmu-v2";
558			#address-cells = <2>;
559			#size-cells = <2>;
560			ranges;
561			regmap-csw = <&csw>;
562			regmap-mcba = <&mcba>;
563			regmap-mcbb = <&mcbb>;
564			reg = <0x0 0x78810000 0x0 0x1000>;
565			interrupts = <0x0 0x22 0x4>;
566
567			pmul3c@7e610000 {
568				compatible = "apm,xgene-pmu-l3c";
569				reg = <0x0 0x7e610000 0x0 0x1000>;
570			};
571
572			pmuiob@7e940000 {
573				compatible = "apm,xgene-pmu-iob";
574				reg = <0x0 0x7e940000 0x0 0x1000>;
575			};
576
577			pmucmcb@7e710000 {
578				compatible = "apm,xgene-pmu-mcb";
579				reg = <0x0 0x7e710000 0x0 0x1000>;
580				enable-bit-index = <0>;
581			};
582
583			pmucmcb@7e730000 {
584				compatible = "apm,xgene-pmu-mcb";
585				reg = <0x0 0x7e730000 0x0 0x1000>;
586				enable-bit-index = <1>;
587			};
588
589			pmucmc@7e810000 {
590				compatible = "apm,xgene-pmu-mc";
591				reg = <0x0 0x7e810000 0x0 0x1000>;
592				enable-bit-index = <0>;
593			};
594
595			pmucmc@7e850000 {
596				compatible = "apm,xgene-pmu-mc";
597				reg = <0x0 0x7e850000 0x0 0x1000>;
598				enable-bit-index = <1>;
599			};
600
601			pmucmc@7e890000 {
602				compatible = "apm,xgene-pmu-mc";
603				reg = <0x0 0x7e890000 0x0 0x1000>;
604				enable-bit-index = <2>;
605			};
606
607			pmucmc@7e8d0000 {
608				compatible = "apm,xgene-pmu-mc";
609				reg = <0x0 0x7e8d0000 0x0 0x1000>;
610				enable-bit-index = <3>;
611			};
612		};
613
614		pcie0: pcie@1f2b0000 {
615			status = "disabled";
616			device_type = "pci";
617			compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
618			#interrupt-cells = <1>;
619			#size-cells = <2>;
620			#address-cells = <3>;
621			reg = < 0x00 0x1f2b0000 0x0 0x00010000   /* Controller registers */
622				0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
623			reg-names = "csr", "cfg";
624			ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000   /* io */
625				  0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000   /* mem */
626				  0x43000000 0xf0 0x00000000 0xf0 0x00000000 0x10 0x00000000>; /* mem */
627			dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
628				      0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
629			bus-range = <0x00 0xff>;
630			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
631			interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x4
632					 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x4
633					 0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x4
634					 0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x4>;
635			dma-coherent;
636			clocks = <&pcie0clk 0>;
637			msi-parent = <&msi>;
638		};
639
640		pcie1: pcie@1f2c0000 {
641			status = "disabled";
642			device_type = "pci";
643			compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
644			#interrupt-cells = <1>;
645			#size-cells = <2>;
646			#address-cells = <3>;
647			reg = < 0x00 0x1f2c0000 0x0 0x00010000   /* Controller registers */
648				0xd0 0xd0000000 0x0 0x00040000>; /* PCI config space */
649			reg-names = "csr", "cfg";
650			ranges = <0x01000000 0x00 0x00000000 0xd0 0x10000000 0x00 0x00010000   /* io  */
651				  0x02000000 0x00 0x80000000 0xd1 0x80000000 0x00 0x80000000   /* mem */
652				  0x43000000 0xd8 0x00000000 0xd8 0x00000000 0x08 0x00000000>; /* mem */
653			dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
654				      0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
655			bus-range = <0x00 0xff>;
656			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
657			interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc8 0x4
658					 0x0 0x0 0x0 0x2 &gic 0x0 0xc9 0x4
659					 0x0 0x0 0x0 0x3 &gic 0x0 0xca 0x4
660					 0x0 0x0 0x0 0x4 &gic 0x0 0xcb 0x4>;
661			dma-coherent;
662			clocks = <&pcie1clk 0>;
663			msi-parent = <&msi>;
664		};
665
666		pcie2: pcie@1f2d0000 {
667			status = "disabled";
668			device_type = "pci";
669			compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
670			#interrupt-cells = <1>;
671			#size-cells = <2>;
672			#address-cells = <3>;
673			reg =  < 0x00 0x1f2d0000 0x0 0x00010000   /* Controller registers */
674				 0x90 0xd0000000 0x0 0x00040000>; /* PCI config space */
675			reg-names = "csr", "cfg";
676			ranges = <0x01000000 0x00 0x00000000 0x90 0x10000000 0x00 0x00010000   /* io  */
677				  0x02000000 0x00 0x80000000 0x91 0x80000000 0x00 0x80000000   /* mem */
678				  0x43000000 0x94 0x00000000 0x94 0x00000000 0x04 0x00000000>; /* mem */
679			dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
680				      0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
681			bus-range = <0x00 0xff>;
682			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
683			interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xce 0x4
684					 0x0 0x0 0x0 0x2 &gic 0x0 0xcf 0x4
685					 0x0 0x0 0x0 0x3 &gic 0x0 0xd0 0x4
686					 0x0 0x0 0x0 0x4 &gic 0x0 0xd1 0x4>;
687			dma-coherent;
688			clocks = <&pcie2clk 0>;
689			msi-parent = <&msi>;
690		};
691
692		pcie3: pcie@1f500000 {
693			status = "disabled";
694			device_type = "pci";
695			compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
696			#interrupt-cells = <1>;
697			#size-cells = <2>;
698			#address-cells = <3>;
699			reg = < 0x00 0x1f500000 0x0 0x00010000   /* Controller registers */
700				0xa0 0xd0000000 0x0 0x00040000>; /* PCI config space */
701			reg-names = "csr", "cfg";
702			ranges = <0x01000000 0x00 0x00000000 0xa0 0x10000000 0x00 0x00010000   /* io  */
703				  0x02000000 0x00 0x80000000 0xa1 0x80000000 0x00 0x80000000   /* mem */
704				  0x43000000 0xb0 0x00000000 0xb0 0x00000000 0x10 0x00000000>; /* mem */
705			dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
706				      0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
707			bus-range = <0x00 0xff>;
708			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
709			interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xd4 0x4
710					 0x0 0x0 0x0 0x2 &gic 0x0 0xd5 0x4
711					 0x0 0x0 0x0 0x3 &gic 0x0 0xd6 0x4
712					 0x0 0x0 0x0 0x4 &gic 0x0 0xd7 0x4>;
713			dma-coherent;
714			clocks = <&pcie3clk 0>;
715			msi-parent = <&msi>;
716		};
717
718		pcie4: pcie@1f510000 {
719			status = "disabled";
720			device_type = "pci";
721			compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
722			#interrupt-cells = <1>;
723			#size-cells = <2>;
724			#address-cells = <3>;
725			reg = < 0x00 0x1f510000 0x0 0x00010000   /* Controller registers */
726				0xc0 0xd0000000 0x0 0x00200000>; /* PCI config space */
727			reg-names = "csr", "cfg";
728			ranges = <0x01000000 0x00 0x00000000 0xc0 0x10000000 0x00 0x00010000   /* io  */
729				  0x02000000 0x00 0x80000000 0xc1 0x80000000 0x00 0x80000000   /* mem */
730				  0x43000000 0xc8 0x00000000 0xc8 0x00000000 0x08 0x00000000>; /* mem */
731			dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
732				      0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
733			bus-range = <0x00 0xff>;
734			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
735			interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xda 0x4
736					 0x0 0x0 0x0 0x2 &gic 0x0 0xdb 0x4
737					 0x0 0x0 0x0 0x3 &gic 0x0 0xdc 0x4
738					 0x0 0x0 0x0 0x4 &gic 0x0 0xdd 0x4>;
739			dma-coherent;
740			clocks = <&pcie4clk 0>;
741			msi-parent = <&msi>;
742		};
743
744		mailbox: mailbox@10540000 {
745			compatible = "apm,xgene-slimpro-mbox";
746			reg = <0x0 0x10540000 0x0 0xa000>;
747			#mbox-cells = <1>;
748			interrupts =    <0x0 0x0 0x4>,
749					<0x0 0x1 0x4>,
750					<0x0 0x2 0x4>,
751					<0x0 0x3 0x4>,
752					<0x0 0x4 0x4>,
753					<0x0 0x5 0x4>,
754					<0x0 0x6 0x4>,
755					<0x0 0x7 0x4>;
756		};
757
758		i2cslimpro {
759			compatible = "apm,xgene-slimpro-i2c";
760			mboxes = <&mailbox 0>;
761		};
762
763		hwmonslimpro {
764			compatible = "apm,xgene-slimpro-hwmon";
765			mboxes = <&mailbox 7>;
766		};
767
768		serial0: serial@1c020000 {
769			status = "disabled";
770			device_type = "serial";
771			compatible = "ns16550a";
772			reg = <0 0x1c020000 0x0 0x1000>;
773			reg-shift = <2>;
774			clock-frequency = <10000000>; /* Updated by bootloader */
775			interrupt-parent = <&gic>;
776			interrupts = <0x0 0x4c 0x4>;
777		};
778
779		serial1: serial@1c021000 {
780			status = "disabled";
781			device_type = "serial";
782			compatible = "ns16550a";
783			reg = <0 0x1c021000 0x0 0x1000>;
784			reg-shift = <2>;
785			clock-frequency = <10000000>; /* Updated by bootloader */
786			interrupt-parent = <&gic>;
787			interrupts = <0x0 0x4d 0x4>;
788		};
789
790		serial2: serial@1c022000 {
791			status = "disabled";
792			device_type = "serial";
793			compatible = "ns16550a";
794			reg = <0 0x1c022000 0x0 0x1000>;
795			reg-shift = <2>;
796			clock-frequency = <10000000>; /* Updated by bootloader */
797			interrupt-parent = <&gic>;
798			interrupts = <0x0 0x4e 0x4>;
799		};
800
801		serial3: serial@1c023000 {
802			status = "disabled";
803			device_type = "serial";
804			compatible = "ns16550a";
805			reg = <0 0x1c023000 0x0 0x1000>;
806			reg-shift = <2>;
807			clock-frequency = <10000000>; /* Updated by bootloader */
808			interrupt-parent = <&gic>;
809			interrupts = <0x0 0x4f 0x4>;
810		};
811
812		mmc0: mmc@1c000000 {
813			compatible = "arasan,sdhci-4.9a";
814			reg = <0x0 0x1c000000 0x0 0x100>;
815			interrupts = <0x0 0x49 0x4>;
816			dma-coherent;
817			no-1-8-v;
818			clock-names = "clk_xin", "clk_ahb";
819			clocks = <&sdioclk 0>, <&ahbclk 0>;
820		};
821
822		gfcgpio: gpio0@1701c000 {
823			compatible = "apm,xgene-gpio";
824			reg = <0x0 0x1701c000 0x0 0x40>;
825			gpio-controller;
826			#gpio-cells = <2>;
827		};
828
829		dwgpio: gpio@1c024000 {
830			compatible = "snps,dw-apb-gpio";
831			reg = <0x0 0x1c024000 0x0 0x1000>;
832			reg-io-width = <4>;
833			#address-cells = <1>;
834			#size-cells = <0>;
835
836			porta: gpio-controller@0 {
837				compatible = "snps,dw-apb-gpio-port";
838				gpio-controller;
839				snps,nr-gpios = <32>;
840				reg = <0>;
841			};
842		};
843
844		i2c0: i2c@10512000 {
845			status = "disabled";
846			#address-cells = <1>;
847			#size-cells = <0>;
848			compatible = "snps,designware-i2c";
849			reg = <0x0 0x10512000 0x0 0x1000>;
850			interrupts = <0 0x44 0x4>;
851			#clock-cells = <1>;
852			clocks = <&ahbclk 0>;
853			bus_num = <0>;
854		};
855
856		phy1: phy@1f21a000 {
857			compatible = "apm,xgene-phy";
858			reg = <0x0 0x1f21a000 0x0 0x100>;
859			#phy-cells = <1>;
860			clocks = <&sataphy1clk 0>;
861			status = "disabled";
862			apm,tx-boost-gain = <30 30 30 30 30 30>;
863			apm,tx-eye-tuning = <2 10 10 2 10 10>;
864		};
865
866		phy2: phy@1f22a000 {
867			compatible = "apm,xgene-phy";
868			reg = <0x0 0x1f22a000 0x0 0x100>;
869			#phy-cells = <1>;
870			clocks = <&sataphy2clk 0>;
871			status = "ok";
872			apm,tx-boost-gain = <30 30 30 30 30 30>;
873			apm,tx-eye-tuning = <1 10 10 2 10 10>;
874		};
875
876		phy3: phy@1f23a000 {
877			compatible = "apm,xgene-phy";
878			reg = <0x0 0x1f23a000 0x0 0x100>;
879			#phy-cells = <1>;
880			clocks = <&sataphy3clk 0>;
881			status = "ok";
882			apm,tx-boost-gain = <31 31 31 31 31 31>;
883			apm,tx-eye-tuning = <2 10 10 2 10 10>;
884		};
885
886		sata1: sata@1a000000 {
887			compatible = "apm,xgene-ahci";
888			reg = <0x0 0x1a000000 0x0 0x1000>,
889			      <0x0 0x1f210000 0x0 0x1000>,
890			      <0x0 0x1f21d000 0x0 0x1000>,
891			      <0x0 0x1f21e000 0x0 0x1000>,
892			      <0x0 0x1f217000 0x0 0x1000>;
893			interrupts = <0x0 0x86 0x4>;
894			dma-coherent;
895			status = "disabled";
896			clocks = <&sata01clk 0>;
897			phys = <&phy1 0>;
898			phy-names = "sata-phy";
899		};
900
901		sata2: sata@1a400000 {
902			compatible = "apm,xgene-ahci";
903			reg = <0x0 0x1a400000 0x0 0x1000>,
904			      <0x0 0x1f220000 0x0 0x1000>,
905			      <0x0 0x1f22d000 0x0 0x1000>,
906			      <0x0 0x1f22e000 0x0 0x1000>,
907			      <0x0 0x1f227000 0x0 0x1000>;
908			interrupts = <0x0 0x87 0x4>;
909			dma-coherent;
910			status = "ok";
911			clocks = <&sata23clk 0>;
912			phys = <&phy2 0>;
913			phy-names = "sata-phy";
914		};
915
916		sata3: sata@1a800000 {
917			compatible = "apm,xgene-ahci";
918			reg = <0x0 0x1a800000 0x0 0x1000>,
919			      <0x0 0x1f230000 0x0 0x1000>,
920			      <0x0 0x1f23d000 0x0 0x1000>,
921			      <0x0 0x1f23e000 0x0 0x1000>;
922			interrupts = <0x0 0x88 0x4>;
923			dma-coherent;
924			status = "ok";
925			clocks = <&sata45clk 0>;
926			phys = <&phy3 0>;
927			phy-names = "sata-phy";
928		};
929
930		/* Do not change dwusb name, coded for backward compatibility */
931		usb0: dwusb@19000000 {
932			status = "disabled";
933			compatible = "snps,dwc3";
934			reg =  <0x0 0x19000000 0x0 0x100000>;
935			interrupts = <0x0 0x89 0x4>;
936			dma-coherent;
937			dr_mode = "host";
938		};
939
940		usb1: dwusb@19800000 {
941			status = "disabled";
942			compatible = "snps,dwc3";
943			reg =  <0x0 0x19800000 0x0 0x100000>;
944			interrupts = <0x0 0x8a 0x4>;
945			dma-coherent;
946			dr_mode = "host";
947		};
948
949		sbgpio: gpio@17001000{
950			compatible = "apm,xgene-gpio-sb";
951			reg = <0x0 0x17001000 0x0 0x400>;
952			#gpio-cells = <2>;
953			gpio-controller;
954			interrupts = 	<0x0 0x28 0x1>,
955					<0x0 0x29 0x1>,
956					<0x0 0x2a 0x1>,
957					<0x0 0x2b 0x1>,
958					<0x0 0x2c 0x1>,
959					<0x0 0x2d 0x1>;
960			interrupt-parent = <&gic>;
961			#interrupt-cells = <2>;
962			interrupt-controller;
963		};
964
965		rtc: rtc@10510000 {
966			compatible = "apm,xgene-rtc";
967			reg = <0x0 0x10510000 0x0 0x400>;
968			interrupts = <0x0 0x46 0x4>;
969			#clock-cells = <1>;
970			clocks = <&rtcclk 0>;
971		};
972
973		mdio: mdio@17020000 {
974			compatible = "apm,xgene-mdio-rgmii";
975			#address-cells = <1>;
976			#size-cells = <0>;
977			reg = <0x0 0x17020000 0x0 0xd100>;
978			clocks = <&menetclk 0>;
979		};
980
981		menet: ethernet@17020000 {
982			compatible = "apm,xgene-enet";
983			status = "disabled";
984			reg = <0x0 0x17020000 0x0 0xd100>,
985			      <0x0 0x17030000 0x0 0xc300>,
986			      <0x0 0x10000000 0x0 0x200>;
987			reg-names = "enet_csr", "ring_csr", "ring_cmd";
988			interrupts = <0x0 0x3c 0x4>;
989			dma-coherent;
990			clocks = <&menetclk 0>;
991			/* mac address will be overwritten by the bootloader */
992			local-mac-address = [00 00 00 00 00 00];
993			phy-connection-type = "rgmii";
994			phy-handle = <&menetphy>,<&menet0phy>;
995			mdio {
996				compatible = "apm,xgene-mdio";
997				#address-cells = <1>;
998				#size-cells = <0>;
999				menetphy: menetphy@3 {
1000					compatible = "ethernet-phy-id001c.c915";
1001					reg = <0x3>;
1002				};
1003
1004			};
1005		};
1006
1007		sgenet0: ethernet@1f210000 {
1008			compatible = "apm,xgene1-sgenet";
1009			status = "disabled";
1010			reg = <0x0 0x1f210000 0x0 0xd100>,
1011			      <0x0 0x1f200000 0x0 0xc300>,
1012			      <0x0 0x1b000000 0x0 0x200>;
1013			reg-names = "enet_csr", "ring_csr", "ring_cmd";
1014			interrupts = <0x0 0xa0 0x4>,
1015				     <0x0 0xa1 0x4>;
1016			dma-coherent;
1017			clocks = <&sge0clk 0>;
1018			local-mac-address = [00 00 00 00 00 00];
1019			phy-connection-type = "sgmii";
1020			phy-handle = <&sgenet0phy>;
1021		};
1022
1023		sgenet1: ethernet@1f210030 {
1024			compatible = "apm,xgene1-sgenet";
1025			status = "disabled";
1026			reg = <0x0 0x1f210030 0x0 0xd100>,
1027			      <0x0 0x1f200000 0x0 0xc300>,
1028			      <0x0 0x1b000000 0x0 0x8000>;
1029			reg-names = "enet_csr", "ring_csr", "ring_cmd";
1030			interrupts = <0x0 0xac 0x4>,
1031				     <0x0 0xad 0x4>;
1032			port-id = <1>;
1033			dma-coherent;
1034			local-mac-address = [00 00 00 00 00 00];
1035			phy-connection-type = "sgmii";
1036			phy-handle = <&sgenet1phy>;
1037		};
1038
1039		xgenet: ethernet@1f610000 {
1040			compatible = "apm,xgene1-xgenet";
1041			status = "disabled";
1042			reg = <0x0 0x1f610000 0x0 0xd100>,
1043			      <0x0 0x1f600000 0x0 0xc300>,
1044			      <0x0 0x18000000 0x0 0x200>;
1045			reg-names = "enet_csr", "ring_csr", "ring_cmd";
1046			interrupts = <0x0 0x60 0x4>,
1047				     <0x0 0x61 0x4>,
1048				     <0x0 0x62 0x4>,
1049				     <0x0 0x63 0x4>,
1050				     <0x0 0x64 0x4>,
1051				     <0x0 0x65 0x4>,
1052				     <0x0 0x66 0x4>,
1053				     <0x0 0x67 0x4>;
1054			channel = <0>;
1055			dma-coherent;
1056			clocks = <&xge0clk 0>;
1057			/* mac address will be overwritten by the bootloader */
1058			local-mac-address = [00 00 00 00 00 00];
1059			phy-connection-type = "xgmii";
1060		};
1061
1062		xgenet1: ethernet@1f620000 {
1063			compatible = "apm,xgene1-xgenet";
1064			status = "disabled";
1065			reg = <0x0 0x1f620000 0x0 0xd100>,
1066			      <0x0 0x1f600000 0x0 0xc300>,
1067			      <0x0 0x18000000 0x0 0x8000>;
1068			reg-names = "enet_csr", "ring_csr", "ring_cmd";
1069			interrupts = <0x0 0x6c 0x4>,
1070				     <0x0 0x6d 0x4>;
1071			port-id = <1>;
1072			dma-coherent;
1073			clocks = <&xge1clk 0>;
1074			/* mac address will be overwritten by the bootloader */
1075			local-mac-address = [00 00 00 00 00 00];
1076			phy-connection-type = "xgmii";
1077		};
1078
1079		rng: rng@10520000 {
1080			compatible = "apm,xgene-rng";
1081			reg = <0x0 0x10520000 0x0 0x100>;
1082			interrupts = <0x0 0x41 0x4>;
1083			clocks = <&rngpkaclk 0>;
1084		};
1085
1086		dma: dma@1f270000 {
1087			compatible = "apm,xgene-storm-dma";
1088			device_type = "dma";
1089			reg = <0x0 0x1f270000 0x0 0x10000>,
1090			      <0x0 0x1f200000 0x0 0x10000>,
1091			      <0x0 0x1b000000 0x0 0x400000>,
1092			      <0x0 0x1054a000 0x0 0x100>;
1093			interrupts = <0x0 0x82 0x4>,
1094				     <0x0 0xb8 0x4>,
1095				     <0x0 0xb9 0x4>,
1096				     <0x0 0xba 0x4>,
1097				     <0x0 0xbb 0x4>;
1098			dma-coherent;
1099			clocks = <&dmaclk 0>;
1100		};
1101	};
1102};
1103