xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/armada-39x.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Device Tree Include file for Marvell Armada 39x family of SoCs.
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Copyright (C) 2015 Marvell
6*4882a593Smuzhiyun *
7*4882a593Smuzhiyun * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
8*4882a593Smuzhiyun */
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h>
11*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h>
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun/ {
16*4882a593Smuzhiyun	#address-cells = <1>;
17*4882a593Smuzhiyun	#size-cells = <1>;
18*4882a593Smuzhiyun	model = "Marvell Armada 39x family SoC";
19*4882a593Smuzhiyun	compatible = "marvell,armada390";
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun	aliases {
22*4882a593Smuzhiyun		gpio0 = &gpio0;
23*4882a593Smuzhiyun		gpio1 = &gpio1;
24*4882a593Smuzhiyun		serial0 = &uart0;
25*4882a593Smuzhiyun		serial1 = &uart1;
26*4882a593Smuzhiyun		serial2 = &uart2;
27*4882a593Smuzhiyun		serial3 = &uart3;
28*4882a593Smuzhiyun	};
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun	cpus {
31*4882a593Smuzhiyun		#address-cells = <1>;
32*4882a593Smuzhiyun		#size-cells = <0>;
33*4882a593Smuzhiyun		enable-method = "marvell,armada-390-smp";
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun		cpu@0 {
36*4882a593Smuzhiyun			device_type = "cpu";
37*4882a593Smuzhiyun			compatible = "arm,cortex-a9";
38*4882a593Smuzhiyun			reg = <0>;
39*4882a593Smuzhiyun		};
40*4882a593Smuzhiyun		cpu@1 {
41*4882a593Smuzhiyun			device_type = "cpu";
42*4882a593Smuzhiyun			compatible = "arm,cortex-a9";
43*4882a593Smuzhiyun			reg = <1>;
44*4882a593Smuzhiyun		};
45*4882a593Smuzhiyun	};
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun	pmu {
48*4882a593Smuzhiyun		compatible = "arm,cortex-a9-pmu";
49*4882a593Smuzhiyun		interrupts-extended = <&mpic 3>;
50*4882a593Smuzhiyun	};
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun	soc {
53*4882a593Smuzhiyun		compatible = "marvell,armada390-mbus", "marvell,armadaxp-mbus",
54*4882a593Smuzhiyun			     "simple-bus";
55*4882a593Smuzhiyun		#address-cells = <2>;
56*4882a593Smuzhiyun		#size-cells = <1>;
57*4882a593Smuzhiyun		controller = <&mbusc>;
58*4882a593Smuzhiyun		interrupt-parent = <&gic>;
59*4882a593Smuzhiyun		pcie-mem-aperture = <0xe0000000 0x8000000>;
60*4882a593Smuzhiyun		pcie-io-aperture  = <0xe8000000 0x100000>;
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun		bootrom {
63*4882a593Smuzhiyun			compatible = "marvell,bootrom";
64*4882a593Smuzhiyun			reg = <MBUS_ID(0x01, 0x1d) 0 0x200000>;
65*4882a593Smuzhiyun		};
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun		internal-regs {
68*4882a593Smuzhiyun			compatible = "simple-bus";
69*4882a593Smuzhiyun			#address-cells = <1>;
70*4882a593Smuzhiyun			#size-cells = <1>;
71*4882a593Smuzhiyun			ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun			L2: cache-controller@8000 {
74*4882a593Smuzhiyun				compatible = "arm,pl310-cache";
75*4882a593Smuzhiyun				reg = <0x8000 0x1000>;
76*4882a593Smuzhiyun				cache-unified;
77*4882a593Smuzhiyun				cache-level = <2>;
78*4882a593Smuzhiyun				arm,double-linefill-incr = <0>;
79*4882a593Smuzhiyun				arm,double-linefill-wrap = <0>;
80*4882a593Smuzhiyun				arm,double-linefill = <0>;
81*4882a593Smuzhiyun				prefetch-data = <1>;
82*4882a593Smuzhiyun			};
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun			scu@c000 {
85*4882a593Smuzhiyun				compatible = "arm,cortex-a9-scu";
86*4882a593Smuzhiyun				reg = <0xc000 0x100>;
87*4882a593Smuzhiyun			};
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun			timer@c600 {
90*4882a593Smuzhiyun				compatible = "arm,cortex-a9-twd-timer";
91*4882a593Smuzhiyun				reg = <0xc600 0x20>;
92*4882a593Smuzhiyun				interrupts = <GIC_PPI 13 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>;
93*4882a593Smuzhiyun				clocks = <&coreclk 2>;
94*4882a593Smuzhiyun			};
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun			gic: interrupt-controller@d000 {
97*4882a593Smuzhiyun				compatible = "arm,cortex-a9-gic";
98*4882a593Smuzhiyun				#interrupt-cells = <3>;
99*4882a593Smuzhiyun				#size-cells = <0>;
100*4882a593Smuzhiyun				interrupt-controller;
101*4882a593Smuzhiyun				reg = <0xd000 0x1000>,
102*4882a593Smuzhiyun				      <0xc100 0x100>;
103*4882a593Smuzhiyun			};
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun			i2c0: i2c@11000 {
106*4882a593Smuzhiyun				compatible = "marvell,mv64xxx-i2c";
107*4882a593Smuzhiyun				reg = <0x11000 0x20>;
108*4882a593Smuzhiyun				#address-cells = <1>;
109*4882a593Smuzhiyun				#size-cells = <0>;
110*4882a593Smuzhiyun				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
111*4882a593Smuzhiyun				clocks = <&coreclk 0>;
112*4882a593Smuzhiyun				status = "disabled";
113*4882a593Smuzhiyun			};
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun			i2c1: i2c@11100 {
116*4882a593Smuzhiyun				compatible = "marvell,mv64xxx-i2c";
117*4882a593Smuzhiyun				reg = <0x11100 0x20>;
118*4882a593Smuzhiyun				#address-cells = <1>;
119*4882a593Smuzhiyun				#size-cells = <0>;
120*4882a593Smuzhiyun				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
121*4882a593Smuzhiyun				clocks = <&coreclk 0>;
122*4882a593Smuzhiyun				status = "disabled";
123*4882a593Smuzhiyun			};
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun			i2c2: i2c@11200 {
126*4882a593Smuzhiyun				compatible = "marvell,mv64xxx-i2c";
127*4882a593Smuzhiyun				reg = <0x11200 0x20>;
128*4882a593Smuzhiyun				#address-cells = <1>;
129*4882a593Smuzhiyun				#size-cells = <0>;
130*4882a593Smuzhiyun				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
131*4882a593Smuzhiyun				clocks = <&coreclk 0>;
132*4882a593Smuzhiyun				status = "disabled";
133*4882a593Smuzhiyun			};
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun			i2c3: i2c@11300 {
136*4882a593Smuzhiyun				compatible = "marvell,mv64xxx-i2c";
137*4882a593Smuzhiyun				reg = <0x11300 0x20>;
138*4882a593Smuzhiyun				#address-cells = <1>;
139*4882a593Smuzhiyun				#size-cells = <0>;
140*4882a593Smuzhiyun				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
141*4882a593Smuzhiyun				clocks = <&coreclk 0>;
142*4882a593Smuzhiyun				status = "disabled";
143*4882a593Smuzhiyun			};
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun			uart0: serial@12000 {
146*4882a593Smuzhiyun				compatible = "snps,dw-apb-uart";
147*4882a593Smuzhiyun				reg = <0x12000 0x100>;
148*4882a593Smuzhiyun				reg-shift = <2>;
149*4882a593Smuzhiyun				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
150*4882a593Smuzhiyun				reg-io-width = <1>;
151*4882a593Smuzhiyun				clocks = <&coreclk 0>;
152*4882a593Smuzhiyun				status = "disabled";
153*4882a593Smuzhiyun			};
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun			uart1: serial@12100 {
156*4882a593Smuzhiyun				compatible = "snps,dw-apb-uart";
157*4882a593Smuzhiyun				reg = <0x12100 0x100>;
158*4882a593Smuzhiyun				reg-shift = <2>;
159*4882a593Smuzhiyun				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
160*4882a593Smuzhiyun				reg-io-width = <1>;
161*4882a593Smuzhiyun				clocks = <&coreclk 0>;
162*4882a593Smuzhiyun				status = "disabled";
163*4882a593Smuzhiyun			};
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun			uart2: serial@12200 {
166*4882a593Smuzhiyun				compatible = "snps,dw-apb-uart";
167*4882a593Smuzhiyun				reg = <0x12200 0x100>;
168*4882a593Smuzhiyun				reg-shift = <2>;
169*4882a593Smuzhiyun				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
170*4882a593Smuzhiyun				reg-io-width = <1>;
171*4882a593Smuzhiyun				clocks = <&coreclk 0>;
172*4882a593Smuzhiyun				status = "disabled";
173*4882a593Smuzhiyun			};
174*4882a593Smuzhiyun
175*4882a593Smuzhiyun			uart3: serial@12300 {
176*4882a593Smuzhiyun				compatible = "snps,dw-apb-uart";
177*4882a593Smuzhiyun				reg = <0x12300 0x100>;
178*4882a593Smuzhiyun				reg-shift = <2>;
179*4882a593Smuzhiyun				interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
180*4882a593Smuzhiyun				reg-io-width = <1>;
181*4882a593Smuzhiyun				clocks = <&coreclk 0>;
182*4882a593Smuzhiyun				status = "disabled";
183*4882a593Smuzhiyun			};
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun			pinctrl@18000 {
186*4882a593Smuzhiyun				i2c0_pins: i2c0-pins {
187*4882a593Smuzhiyun					marvell,pins = "mpp2", "mpp3";
188*4882a593Smuzhiyun					marvell,function = "i2c0";
189*4882a593Smuzhiyun				};
190*4882a593Smuzhiyun
191*4882a593Smuzhiyun				uart0_pins: uart0-pins {
192*4882a593Smuzhiyun					marvell,pins = "mpp0", "mpp1";
193*4882a593Smuzhiyun					marvell,function = "ua0";
194*4882a593Smuzhiyun				};
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun				uart1_pins: uart1-pins {
197*4882a593Smuzhiyun					marvell,pins = "mpp19", "mpp20";
198*4882a593Smuzhiyun					marvell,function = "ua1";
199*4882a593Smuzhiyun				};
200*4882a593Smuzhiyun
201*4882a593Smuzhiyun				spi1_pins: spi1-pins {
202*4882a593Smuzhiyun					marvell,pins = "mpp56", "mpp57", "mpp58", "mpp59";
203*4882a593Smuzhiyun					marvell,function = "spi1";
204*4882a593Smuzhiyun				};
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun				nand_pins: nand-pins {
207*4882a593Smuzhiyun					marvell,pins = "mpp22", "mpp34", "mpp23", "mpp33",
208*4882a593Smuzhiyun						       "mpp38", "mpp28", "mpp40", "mpp42",
209*4882a593Smuzhiyun						       "mpp35", "mpp36", "mpp25", "mpp30",
210*4882a593Smuzhiyun						       "mpp32";
211*4882a593Smuzhiyun					marvell,function = "dev";
212*4882a593Smuzhiyun				};
213*4882a593Smuzhiyun			};
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun			gpio0: gpio@18100 {
216*4882a593Smuzhiyun				compatible = "marvell,orion-gpio";
217*4882a593Smuzhiyun				reg = <0x18100 0x40>;
218*4882a593Smuzhiyun				ngpios = <32>;
219*4882a593Smuzhiyun				gpio-controller;
220*4882a593Smuzhiyun				#gpio-cells = <2>;
221*4882a593Smuzhiyun				interrupt-controller;
222*4882a593Smuzhiyun				#interrupt-cells = <2>;
223*4882a593Smuzhiyun				interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
224*4882a593Smuzhiyun					     <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
225*4882a593Smuzhiyun					     <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
226*4882a593Smuzhiyun					     <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
227*4882a593Smuzhiyun			};
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun			gpio1: gpio@18140 {
230*4882a593Smuzhiyun				compatible = "marvell,orion-gpio";
231*4882a593Smuzhiyun				reg = <0x18140 0x40>;
232*4882a593Smuzhiyun				ngpios = <28>;
233*4882a593Smuzhiyun				gpio-controller;
234*4882a593Smuzhiyun				#gpio-cells = <2>;
235*4882a593Smuzhiyun				interrupt-controller;
236*4882a593Smuzhiyun				#interrupt-cells = <2>;
237*4882a593Smuzhiyun				interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
238*4882a593Smuzhiyun					     <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
239*4882a593Smuzhiyun					     <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
240*4882a593Smuzhiyun					     <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
241*4882a593Smuzhiyun			};
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun			system-controller@18200 {
244*4882a593Smuzhiyun				compatible = "marvell,armada-390-system-controller",
245*4882a593Smuzhiyun					     "marvell,armada-370-xp-system-controller";
246*4882a593Smuzhiyun				reg = <0x18200 0x100>;
247*4882a593Smuzhiyun			};
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun			gateclk: clock-gating-control@18220 {
250*4882a593Smuzhiyun				compatible = "marvell,armada-390-gating-clock";
251*4882a593Smuzhiyun				reg = <0x18220 0x4>;
252*4882a593Smuzhiyun				clocks = <&coreclk 0>;
253*4882a593Smuzhiyun				#clock-cells = <1>;
254*4882a593Smuzhiyun			};
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun			coreclk: mvebu-sar@18600 {
257*4882a593Smuzhiyun				compatible = "marvell,armada-390-core-clock";
258*4882a593Smuzhiyun				reg = <0x18600 0x04>;
259*4882a593Smuzhiyun				#clock-cells = <1>;
260*4882a593Smuzhiyun			};
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun			mbusc: mbus-controller@20000 {
263*4882a593Smuzhiyun				compatible = "marvell,mbus-controller";
264*4882a593Smuzhiyun				reg = <0x20000 0x100>, <0x20180 0x20>, <0x20250 0x8>;
265*4882a593Smuzhiyun			};
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun			mpic: interrupt-controller@20a00 {
268*4882a593Smuzhiyun				compatible = "marvell,mpic";
269*4882a593Smuzhiyun				reg = <0x20a00 0x2d0>, <0x21070 0x58>;
270*4882a593Smuzhiyun				#interrupt-cells = <1>;
271*4882a593Smuzhiyun				#size-cells = <1>;
272*4882a593Smuzhiyun				interrupt-controller;
273*4882a593Smuzhiyun				msi-controller;
274*4882a593Smuzhiyun				interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
275*4882a593Smuzhiyun			};
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun			timer@20300 {
278*4882a593Smuzhiyun				compatible = "marvell,armada-380-timer",
279*4882a593Smuzhiyun					     "marvell,armada-xp-timer";
280*4882a593Smuzhiyun				reg = <0x20300 0x30>, <0x21040 0x30>;
281*4882a593Smuzhiyun				interrupts-extended = <&gic  GIC_SPI  8 IRQ_TYPE_LEVEL_HIGH>,
282*4882a593Smuzhiyun						      <&gic  GIC_SPI  9 IRQ_TYPE_LEVEL_HIGH>,
283*4882a593Smuzhiyun						      <&gic  GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
284*4882a593Smuzhiyun						      <&gic  GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
285*4882a593Smuzhiyun						      <&mpic 5>,
286*4882a593Smuzhiyun						      <&mpic 6>;
287*4882a593Smuzhiyun				clocks = <&coreclk 2>, <&coreclk 5>;
288*4882a593Smuzhiyun				clock-names = "nbclk", "fixed";
289*4882a593Smuzhiyun			};
290*4882a593Smuzhiyun
291*4882a593Smuzhiyun			watchdog@20300 {
292*4882a593Smuzhiyun				compatible = "marvell,armada-380-wdt";
293*4882a593Smuzhiyun				reg = <0x20300 0x34>, <0x20704 0x4>,
294*4882a593Smuzhiyun				      <0x18260 0x4>;
295*4882a593Smuzhiyun				clocks = <&coreclk 2>, <&refclk>;
296*4882a593Smuzhiyun				clock-names = "nbclk", "fixed";
297*4882a593Smuzhiyun			};
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun			cpurst@20800 {
300*4882a593Smuzhiyun				compatible = "marvell,armada-370-cpu-reset";
301*4882a593Smuzhiyun				reg = <0x20800 0x10>;
302*4882a593Smuzhiyun			};
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun			mpcore-soc-ctrl@20d20 {
305*4882a593Smuzhiyun				compatible = "marvell,armada-380-mpcore-soc-ctrl";
306*4882a593Smuzhiyun				reg = <0x20d20 0x6c>;
307*4882a593Smuzhiyun			};
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun			coherency-fabric@21010 {
310*4882a593Smuzhiyun				compatible = "marvell,armada-380-coherency-fabric";
311*4882a593Smuzhiyun				reg = <0x21010 0x1c>;
312*4882a593Smuzhiyun			};
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun			pmsu@22000 {
315*4882a593Smuzhiyun				compatible = "marvell,armada-390-pmsu",
316*4882a593Smuzhiyun					     "marvell,armada-380-pmsu";
317*4882a593Smuzhiyun				reg = <0x22000 0x1000>;
318*4882a593Smuzhiyun			};
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun			xor@60800 {
321*4882a593Smuzhiyun				compatible = "marvell,armada-380-xor", "marvell,orion-xor";
322*4882a593Smuzhiyun				reg = <0x60800 0x100
323*4882a593Smuzhiyun				       0x60a00 0x100>;
324*4882a593Smuzhiyun				clocks = <&gateclk 22>;
325*4882a593Smuzhiyun				status = "okay";
326*4882a593Smuzhiyun
327*4882a593Smuzhiyun				xor00 {
328*4882a593Smuzhiyun					interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
329*4882a593Smuzhiyun					dmacap,memcpy;
330*4882a593Smuzhiyun					dmacap,xor;
331*4882a593Smuzhiyun				};
332*4882a593Smuzhiyun				xor01 {
333*4882a593Smuzhiyun					interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
334*4882a593Smuzhiyun					dmacap,memcpy;
335*4882a593Smuzhiyun					dmacap,xor;
336*4882a593Smuzhiyun					dmacap,memset;
337*4882a593Smuzhiyun				};
338*4882a593Smuzhiyun			};
339*4882a593Smuzhiyun
340*4882a593Smuzhiyun			xor@60900 {
341*4882a593Smuzhiyun				compatible = "marvell,armada-380-xor", "marvell,orion-xor";
342*4882a593Smuzhiyun				reg = <0x60900 0x100
343*4882a593Smuzhiyun				       0x60b00 0x100>;
344*4882a593Smuzhiyun				clocks = <&gateclk 28>;
345*4882a593Smuzhiyun				status = "okay";
346*4882a593Smuzhiyun
347*4882a593Smuzhiyun				xor10 {
348*4882a593Smuzhiyun					interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
349*4882a593Smuzhiyun					dmacap,memcpy;
350*4882a593Smuzhiyun					dmacap,xor;
351*4882a593Smuzhiyun				};
352*4882a593Smuzhiyun				xor11 {
353*4882a593Smuzhiyun					interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
354*4882a593Smuzhiyun					dmacap,memcpy;
355*4882a593Smuzhiyun					dmacap,xor;
356*4882a593Smuzhiyun					dmacap,memset;
357*4882a593Smuzhiyun				};
358*4882a593Smuzhiyun			};
359*4882a593Smuzhiyun
360*4882a593Smuzhiyun			rtc@a3800 {
361*4882a593Smuzhiyun				compatible = "marvell,armada-380-rtc";
362*4882a593Smuzhiyun				reg = <0xa3800 0x20>, <0x184a0 0x0c>;
363*4882a593Smuzhiyun				reg-names = "rtc", "rtc-soc";
364*4882a593Smuzhiyun				interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
365*4882a593Smuzhiyun			};
366*4882a593Smuzhiyun
367*4882a593Smuzhiyun			nand_controller: nand-controller@d0000 {
368*4882a593Smuzhiyun				compatible = "marvell,armada370-nand-controller";
369*4882a593Smuzhiyun				reg = <0xd0000 0x54>;
370*4882a593Smuzhiyun				#address-cells = <1>;
371*4882a593Smuzhiyun				#size-cells = <0>;
372*4882a593Smuzhiyun				interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
373*4882a593Smuzhiyun				clocks = <&coredivclk 0>;
374*4882a593Smuzhiyun				status = "disabled";
375*4882a593Smuzhiyun			};
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun			sdhci@d8000 {
378*4882a593Smuzhiyun				compatible = "marvell,armada-380-sdhci";
379*4882a593Smuzhiyun				reg-names = "sdhci", "mbus", "conf-sdio3";
380*4882a593Smuzhiyun				reg = <0xd8000 0x1000>,
381*4882a593Smuzhiyun					<0xdc000 0x100>,
382*4882a593Smuzhiyun					<0x18454 0x4>;
383*4882a593Smuzhiyun				interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
384*4882a593Smuzhiyun				clocks = <&gateclk 17>;
385*4882a593Smuzhiyun				mrvl,clk-delay-cycles = <0x1F>;
386*4882a593Smuzhiyun				status = "disabled";
387*4882a593Smuzhiyun			};
388*4882a593Smuzhiyun
389*4882a593Smuzhiyun			coredivclk: clock@e4250 {
390*4882a593Smuzhiyun				compatible = "marvell,armada-390-corediv-clock",
391*4882a593Smuzhiyun					     "marvell,armada-380-corediv-clock";
392*4882a593Smuzhiyun				reg = <0xe4250 0xc>;
393*4882a593Smuzhiyun				#clock-cells = <1>;
394*4882a593Smuzhiyun				clocks = <&mainpll>;
395*4882a593Smuzhiyun				clock-output-names = "nand";
396*4882a593Smuzhiyun			};
397*4882a593Smuzhiyun
398*4882a593Smuzhiyun			thermal@e8078 {
399*4882a593Smuzhiyun				compatible = "marvell,armada380-thermal";
400*4882a593Smuzhiyun				reg = <0xe4078 0x4>, <0xe4074 0x4>;
401*4882a593Smuzhiyun				status = "okay";
402*4882a593Smuzhiyun			};
403*4882a593Smuzhiyun		};
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun		pcie {
406*4882a593Smuzhiyun			compatible = "marvell,armada-370-pcie";
407*4882a593Smuzhiyun			status = "disabled";
408*4882a593Smuzhiyun			device_type = "pci";
409*4882a593Smuzhiyun
410*4882a593Smuzhiyun			#address-cells = <3>;
411*4882a593Smuzhiyun			#size-cells = <2>;
412*4882a593Smuzhiyun
413*4882a593Smuzhiyun			msi-parent = <&mpic>;
414*4882a593Smuzhiyun			bus-range = <0x00 0xff>;
415*4882a593Smuzhiyun
416*4882a593Smuzhiyun			ranges =
417*4882a593Smuzhiyun			       <0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000
418*4882a593Smuzhiyun				0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000
419*4882a593Smuzhiyun				0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000
420*4882a593Smuzhiyun				0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000
421*4882a593Smuzhiyun				0x82000000 0x1 0     MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 0 MEM */
422*4882a593Smuzhiyun				0x81000000 0x1 0     MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 0 IO  */
423*4882a593Smuzhiyun				0x82000000 0x2 0     MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 1 MEM */
424*4882a593Smuzhiyun				0x81000000 0x2 0     MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 1 IO  */
425*4882a593Smuzhiyun				0x82000000 0x3 0     MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 2 MEM */
426*4882a593Smuzhiyun				0x81000000 0x3 0     MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 2 IO  */
427*4882a593Smuzhiyun				0x82000000 0x4 0     MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 3 MEM */
428*4882a593Smuzhiyun				0x81000000 0x4 0     MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 3 IO  */>;
429*4882a593Smuzhiyun
430*4882a593Smuzhiyun			/*
431*4882a593Smuzhiyun			 * This port can be either x4 or x1. When
432*4882a593Smuzhiyun			 * configured in x4 by the bootloader, then
433*4882a593Smuzhiyun			 * pcie@4,0 is not available.
434*4882a593Smuzhiyun			 */
435*4882a593Smuzhiyun			pcie@1,0 {
436*4882a593Smuzhiyun				device_type = "pci";
437*4882a593Smuzhiyun				assigned-addresses = <0x82000800 0 0x80000 0 0x2000>;
438*4882a593Smuzhiyun				reg = <0x0800 0 0 0 0>;
439*4882a593Smuzhiyun				#address-cells = <3>;
440*4882a593Smuzhiyun				#size-cells = <2>;
441*4882a593Smuzhiyun				#interrupt-cells = <1>;
442*4882a593Smuzhiyun				ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
443*4882a593Smuzhiyun					  0x81000000 0 0 0x81000000 0x1 0 1 0>;
444*4882a593Smuzhiyun				bus-range = <0x00 0xff>;
445*4882a593Smuzhiyun				interrupt-map-mask = <0 0 0 0>;
446*4882a593Smuzhiyun				interrupt-map = <0 0 0 0 &gic GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
447*4882a593Smuzhiyun				marvell,pcie-port = <0>;
448*4882a593Smuzhiyun				marvell,pcie-lane = <0>;
449*4882a593Smuzhiyun				clocks = <&gateclk 8>;
450*4882a593Smuzhiyun				status = "disabled";
451*4882a593Smuzhiyun			};
452*4882a593Smuzhiyun
453*4882a593Smuzhiyun			/* x1 port */
454*4882a593Smuzhiyun			pcie@2,0 {
455*4882a593Smuzhiyun				device_type = "pci";
456*4882a593Smuzhiyun				assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
457*4882a593Smuzhiyun				reg = <0x1000 0 0 0 0>;
458*4882a593Smuzhiyun				#address-cells = <3>;
459*4882a593Smuzhiyun				#size-cells = <2>;
460*4882a593Smuzhiyun				#interrupt-cells = <1>;
461*4882a593Smuzhiyun				ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0
462*4882a593Smuzhiyun					  0x81000000 0 0 0x81000000 0x2 0 1 0>;
463*4882a593Smuzhiyun				bus-range = <0x00 0xff>;
464*4882a593Smuzhiyun				interrupt-map-mask = <0 0 0 0>;
465*4882a593Smuzhiyun				interrupt-map = <0 0 0 0 &gic GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
466*4882a593Smuzhiyun				marvell,pcie-port = <1>;
467*4882a593Smuzhiyun				marvell,pcie-lane = <0>;
468*4882a593Smuzhiyun				clocks = <&gateclk 5>;
469*4882a593Smuzhiyun				status = "disabled";
470*4882a593Smuzhiyun			};
471*4882a593Smuzhiyun
472*4882a593Smuzhiyun			/* x1 port */
473*4882a593Smuzhiyun			pcie@3,0 {
474*4882a593Smuzhiyun				device_type = "pci";
475*4882a593Smuzhiyun				assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
476*4882a593Smuzhiyun				reg = <0x1800 0 0 0 0>;
477*4882a593Smuzhiyun				#address-cells = <3>;
478*4882a593Smuzhiyun				#size-cells = <2>;
479*4882a593Smuzhiyun				#interrupt-cells = <1>;
480*4882a593Smuzhiyun				ranges = <0x82000000 0 0 0x82000000 0x3 0 1 0
481*4882a593Smuzhiyun					  0x81000000 0 0 0x81000000 0x3 0 1 0>;
482*4882a593Smuzhiyun				bus-range = <0x00 0xff>;
483*4882a593Smuzhiyun				interrupt-map-mask = <0 0 0 0>;
484*4882a593Smuzhiyun				interrupt-map = <0 0 0 0 &gic GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
485*4882a593Smuzhiyun				marvell,pcie-port = <2>;
486*4882a593Smuzhiyun				marvell,pcie-lane = <0>;
487*4882a593Smuzhiyun				clocks = <&gateclk 6>;
488*4882a593Smuzhiyun				status = "disabled";
489*4882a593Smuzhiyun			};
490*4882a593Smuzhiyun
491*4882a593Smuzhiyun			/*
492*4882a593Smuzhiyun			 * x1 port only available when pcie@1,0 is
493*4882a593Smuzhiyun			 * configured as a x1 port
494*4882a593Smuzhiyun			 */
495*4882a593Smuzhiyun			pcie@4,0 {
496*4882a593Smuzhiyun				device_type = "pci";
497*4882a593Smuzhiyun				assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
498*4882a593Smuzhiyun				reg = <0x2000 0 0 0 0>;
499*4882a593Smuzhiyun				#address-cells = <3>;
500*4882a593Smuzhiyun				#size-cells = <2>;
501*4882a593Smuzhiyun				#interrupt-cells = <1>;
502*4882a593Smuzhiyun				ranges = <0x82000000 0 0 0x82000000 0x4 0 1 0
503*4882a593Smuzhiyun					  0x81000000 0 0 0x81000000 0x4 0 1 0>;
504*4882a593Smuzhiyun				bus-range = <0x00 0xff>;
505*4882a593Smuzhiyun				interrupt-map-mask = <0 0 0 0>;
506*4882a593Smuzhiyun				interrupt-map = <0 0 0 0 &gic GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
507*4882a593Smuzhiyun				marvell,pcie-port = <3>;
508*4882a593Smuzhiyun				marvell,pcie-lane = <0>;
509*4882a593Smuzhiyun				clocks = <&gateclk 7>;
510*4882a593Smuzhiyun				status = "disabled";
511*4882a593Smuzhiyun			};
512*4882a593Smuzhiyun		};
513*4882a593Smuzhiyun
514*4882a593Smuzhiyun		spi0: spi@10600 {
515*4882a593Smuzhiyun			compatible = "marvell,armada-390-spi",
516*4882a593Smuzhiyun					"marvell,orion-spi";
517*4882a593Smuzhiyun			reg = <MBUS_ID(0xf0, 0x01) 0x10600 0x50>;
518*4882a593Smuzhiyun			#address-cells = <1>;
519*4882a593Smuzhiyun			#size-cells = <0>;
520*4882a593Smuzhiyun			cell-index = <0>;
521*4882a593Smuzhiyun			interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
522*4882a593Smuzhiyun			clocks = <&coreclk 0>;
523*4882a593Smuzhiyun			status = "disabled";
524*4882a593Smuzhiyun		};
525*4882a593Smuzhiyun
526*4882a593Smuzhiyun		spi1: spi@10680 {
527*4882a593Smuzhiyun			compatible = "marvell,armada-390-spi",
528*4882a593Smuzhiyun					"marvell,orion-spi";
529*4882a593Smuzhiyun			reg = <MBUS_ID(0xf0, 0x01) 0x10680 0x50>;
530*4882a593Smuzhiyun			#address-cells = <1>;
531*4882a593Smuzhiyun			#size-cells = <0>;
532*4882a593Smuzhiyun			cell-index = <1>;
533*4882a593Smuzhiyun			interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
534*4882a593Smuzhiyun			clocks = <&coreclk 0>;
535*4882a593Smuzhiyun			status = "disabled";
536*4882a593Smuzhiyun		};
537*4882a593Smuzhiyun	};
538*4882a593Smuzhiyun
539*4882a593Smuzhiyun	clocks {
540*4882a593Smuzhiyun		/* 1 GHz fixed main PLL */
541*4882a593Smuzhiyun		mainpll: mainpll {
542*4882a593Smuzhiyun			compatible = "fixed-clock";
543*4882a593Smuzhiyun			#clock-cells = <0>;
544*4882a593Smuzhiyun			clock-frequency = <1000000000>;
545*4882a593Smuzhiyun		};
546*4882a593Smuzhiyun
547*4882a593Smuzhiyun		/* 25 MHz reference crystal */
548*4882a593Smuzhiyun		refclk: oscillator {
549*4882a593Smuzhiyun			compatible = "fixed-clock";
550*4882a593Smuzhiyun			#clock-cells = <0>;
551*4882a593Smuzhiyun			clock-frequency = <25000000>;
552*4882a593Smuzhiyun		};
553*4882a593Smuzhiyun	};
554*4882a593Smuzhiyun};
555