xref: /freebsd/sys/contrib/device-tree/src/arm/marvell/armada-xp.dtsi (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
1*f126890aSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*f126890aSEmmanuel Vadot/*
3*f126890aSEmmanuel Vadot * Device Tree Include file for Marvell Armada XP family SoC
4*f126890aSEmmanuel Vadot *
5*f126890aSEmmanuel Vadot * Copyright (C) 2012 Marvell
6*f126890aSEmmanuel Vadot *
7*f126890aSEmmanuel Vadot * Lior Amsalem <alior@marvell.com>
8*f126890aSEmmanuel Vadot * Gregory CLEMENT <gregory.clement@free-electrons.com>
9*f126890aSEmmanuel Vadot * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
10*f126890aSEmmanuel Vadot * Ben Dooks <ben.dooks@codethink.co.uk>
11*f126890aSEmmanuel Vadot *
12*f126890aSEmmanuel Vadot * Contains definitions specific to the Armada XP SoC that are not
13*f126890aSEmmanuel Vadot * common to all Armada SoCs.
14*f126890aSEmmanuel Vadot */
15*f126890aSEmmanuel Vadot
16*f126890aSEmmanuel Vadot#include "armada-370-xp.dtsi"
17*f126890aSEmmanuel Vadot
18*f126890aSEmmanuel Vadot/ {
19*f126890aSEmmanuel Vadot	#address-cells = <2>;
20*f126890aSEmmanuel Vadot	#size-cells = <2>;
21*f126890aSEmmanuel Vadot
22*f126890aSEmmanuel Vadot	model = "Marvell Armada XP family SoC";
23*f126890aSEmmanuel Vadot	compatible = "marvell,armadaxp", "marvell,armada-370-xp";
24*f126890aSEmmanuel Vadot
25*f126890aSEmmanuel Vadot	aliases {
26*f126890aSEmmanuel Vadot		serial2 = &uart2;
27*f126890aSEmmanuel Vadot		serial3 = &uart3;
28*f126890aSEmmanuel Vadot	};
29*f126890aSEmmanuel Vadot
30*f126890aSEmmanuel Vadot	soc {
31*f126890aSEmmanuel Vadot		compatible = "marvell,armadaxp-mbus", "simple-bus";
32*f126890aSEmmanuel Vadot
33*f126890aSEmmanuel Vadot		bootrom {
34*f126890aSEmmanuel Vadot			compatible = "marvell,bootrom";
35*f126890aSEmmanuel Vadot			reg = <MBUS_ID(0x01, 0x1d) 0 0x100000>;
36*f126890aSEmmanuel Vadot		};
37*f126890aSEmmanuel Vadot
38*f126890aSEmmanuel Vadot		internal-regs {
39*f126890aSEmmanuel Vadot			sdramc: sdramc@1400 {
40*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-sdram-controller";
41*f126890aSEmmanuel Vadot				reg = <0x1400 0x500>;
42*f126890aSEmmanuel Vadot			};
43*f126890aSEmmanuel Vadot
44*f126890aSEmmanuel Vadot			L2: l2-cache@8000 {
45*f126890aSEmmanuel Vadot				compatible = "marvell,aurora-system-cache";
46*f126890aSEmmanuel Vadot				reg = <0x08000 0x1000>;
47*f126890aSEmmanuel Vadot				cache-id-part = <0x100>;
48*f126890aSEmmanuel Vadot				cache-level = <2>;
49*f126890aSEmmanuel Vadot				cache-unified;
50*f126890aSEmmanuel Vadot				wt-override;
51*f126890aSEmmanuel Vadot			};
52*f126890aSEmmanuel Vadot
53*f126890aSEmmanuel Vadot			uart2: serial@12200 {
54*f126890aSEmmanuel Vadot				compatible = "snps,dw-apb-uart";
55*f126890aSEmmanuel Vadot				pinctrl-0 = <&uart2_pins>;
56*f126890aSEmmanuel Vadot				pinctrl-names = "default";
57*f126890aSEmmanuel Vadot				reg = <0x12200 0x100>;
58*f126890aSEmmanuel Vadot				reg-shift = <2>;
59*f126890aSEmmanuel Vadot				interrupts = <43>;
60*f126890aSEmmanuel Vadot				reg-io-width = <1>;
61*f126890aSEmmanuel Vadot				clocks = <&coreclk 0>;
62*f126890aSEmmanuel Vadot				status = "disabled";
63*f126890aSEmmanuel Vadot			};
64*f126890aSEmmanuel Vadot
65*f126890aSEmmanuel Vadot			uart3: serial@12300 {
66*f126890aSEmmanuel Vadot				compatible = "snps,dw-apb-uart";
67*f126890aSEmmanuel Vadot				pinctrl-0 = <&uart3_pins>;
68*f126890aSEmmanuel Vadot				pinctrl-names = "default";
69*f126890aSEmmanuel Vadot				reg = <0x12300 0x100>;
70*f126890aSEmmanuel Vadot				reg-shift = <2>;
71*f126890aSEmmanuel Vadot				interrupts = <44>;
72*f126890aSEmmanuel Vadot				reg-io-width = <1>;
73*f126890aSEmmanuel Vadot				clocks = <&coreclk 0>;
74*f126890aSEmmanuel Vadot				status = "disabled";
75*f126890aSEmmanuel Vadot			};
76*f126890aSEmmanuel Vadot
77*f126890aSEmmanuel Vadot			systemc: system-controller@18200 {
78*f126890aSEmmanuel Vadot				compatible = "marvell,armada-370-xp-system-controller";
79*f126890aSEmmanuel Vadot				reg = <0x18200 0x500>;
80*f126890aSEmmanuel Vadot			};
81*f126890aSEmmanuel Vadot
82*f126890aSEmmanuel Vadot			gateclk: clock-gating-control@18220 {
83*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-gating-clock";
84*f126890aSEmmanuel Vadot				reg = <0x18220 0x4>;
85*f126890aSEmmanuel Vadot				clocks = <&coreclk 0>;
86*f126890aSEmmanuel Vadot				#clock-cells = <1>;
87*f126890aSEmmanuel Vadot			};
88*f126890aSEmmanuel Vadot
89*f126890aSEmmanuel Vadot			coreclk: mvebu-sar@18230 {
90*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-core-clock";
91*f126890aSEmmanuel Vadot				reg = <0x18230 0x08>;
92*f126890aSEmmanuel Vadot				#clock-cells = <1>;
93*f126890aSEmmanuel Vadot			};
94*f126890aSEmmanuel Vadot
95*f126890aSEmmanuel Vadot			thermal: thermal@182b0 {
96*f126890aSEmmanuel Vadot				compatible = "marvell,armadaxp-thermal";
97*f126890aSEmmanuel Vadot				reg = <0x182b0 0x4
98*f126890aSEmmanuel Vadot					0x184d0 0x4>;
99*f126890aSEmmanuel Vadot				status = "okay";
100*f126890aSEmmanuel Vadot			};
101*f126890aSEmmanuel Vadot
102*f126890aSEmmanuel Vadot			cpuclk: clock-complex@18700 {
103*f126890aSEmmanuel Vadot				#clock-cells = <1>;
104*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-cpu-clock";
105*f126890aSEmmanuel Vadot				reg = <0x18700 0x24>, <0x1c054 0x10>;
106*f126890aSEmmanuel Vadot				clocks = <&coreclk 1>;
107*f126890aSEmmanuel Vadot			};
108*f126890aSEmmanuel Vadot
109*f126890aSEmmanuel Vadot			cpu-config@21000 {
110*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-cpu-config";
111*f126890aSEmmanuel Vadot				reg = <0x21000 0x8>;
112*f126890aSEmmanuel Vadot			};
113*f126890aSEmmanuel Vadot
114*f126890aSEmmanuel Vadot			eth2: ethernet@30000 {
115*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-neta";
116*f126890aSEmmanuel Vadot				reg = <0x30000 0x4000>;
117*f126890aSEmmanuel Vadot				interrupts = <12>;
118*f126890aSEmmanuel Vadot				clocks = <&gateclk 2>;
119*f126890aSEmmanuel Vadot				status = "disabled";
120*f126890aSEmmanuel Vadot			};
121*f126890aSEmmanuel Vadot
122*f126890aSEmmanuel Vadot			usb2: usb@52000 {
123*f126890aSEmmanuel Vadot				compatible = "marvell,orion-ehci";
124*f126890aSEmmanuel Vadot				reg = <0x52000 0x500>;
125*f126890aSEmmanuel Vadot				interrupts = <47>;
126*f126890aSEmmanuel Vadot				clocks = <&gateclk 20>;
127*f126890aSEmmanuel Vadot				status = "disabled";
128*f126890aSEmmanuel Vadot			};
129*f126890aSEmmanuel Vadot
130*f126890aSEmmanuel Vadot			xor1: xor@60900 {
131*f126890aSEmmanuel Vadot				compatible = "marvell,orion-xor";
132*f126890aSEmmanuel Vadot				reg = <0x60900 0x100
133*f126890aSEmmanuel Vadot				       0x60b00 0x100>;
134*f126890aSEmmanuel Vadot				clocks = <&gateclk 22>;
135*f126890aSEmmanuel Vadot				status = "okay";
136*f126890aSEmmanuel Vadot
137*f126890aSEmmanuel Vadot				xor10 {
138*f126890aSEmmanuel Vadot					interrupts = <51>;
139*f126890aSEmmanuel Vadot					dmacap,memcpy;
140*f126890aSEmmanuel Vadot					dmacap,xor;
141*f126890aSEmmanuel Vadot				};
142*f126890aSEmmanuel Vadot				xor11 {
143*f126890aSEmmanuel Vadot					interrupts = <52>;
144*f126890aSEmmanuel Vadot					dmacap,memcpy;
145*f126890aSEmmanuel Vadot					dmacap,xor;
146*f126890aSEmmanuel Vadot					dmacap,memset;
147*f126890aSEmmanuel Vadot				};
148*f126890aSEmmanuel Vadot			};
149*f126890aSEmmanuel Vadot
150*f126890aSEmmanuel Vadot			ethernet@70000 {
151*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-neta";
152*f126890aSEmmanuel Vadot			};
153*f126890aSEmmanuel Vadot
154*f126890aSEmmanuel Vadot			ethernet@74000 {
155*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-neta";
156*f126890aSEmmanuel Vadot			};
157*f126890aSEmmanuel Vadot
158*f126890aSEmmanuel Vadot			cesa: crypto@90000 {
159*f126890aSEmmanuel Vadot				compatible = "marvell,armada-xp-crypto";
160*f126890aSEmmanuel Vadot				reg = <0x90000 0x10000>;
161*f126890aSEmmanuel Vadot				reg-names = "regs";
162*f126890aSEmmanuel Vadot				interrupts = <48>, <49>;
163*f126890aSEmmanuel Vadot				clocks = <&gateclk 23>, <&gateclk 23>;
164*f126890aSEmmanuel Vadot				clock-names = "cesa0", "cesa1";
165*f126890aSEmmanuel Vadot				marvell,crypto-srams = <&crypto_sram0>,
166*f126890aSEmmanuel Vadot						       <&crypto_sram1>;
167*f126890aSEmmanuel Vadot				marvell,crypto-sram-size = <0x800>;
168*f126890aSEmmanuel Vadot			};
169*f126890aSEmmanuel Vadot
170*f126890aSEmmanuel Vadot			bm: bm@c0000 {
171*f126890aSEmmanuel Vadot				compatible = "marvell,armada-380-neta-bm";
172*f126890aSEmmanuel Vadot				reg = <0xc0000 0xac>;
173*f126890aSEmmanuel Vadot				clocks = <&gateclk 13>;
174*f126890aSEmmanuel Vadot				internal-mem = <&bm_bppi>;
175*f126890aSEmmanuel Vadot				status = "disabled";
176*f126890aSEmmanuel Vadot			};
177*f126890aSEmmanuel Vadot
178*f126890aSEmmanuel Vadot			xor0: xor@f0900 {
179*f126890aSEmmanuel Vadot				compatible = "marvell,orion-xor";
180*f126890aSEmmanuel Vadot				reg = <0xF0900 0x100
181*f126890aSEmmanuel Vadot				       0xF0B00 0x100>;
182*f126890aSEmmanuel Vadot				clocks = <&gateclk 28>;
183*f126890aSEmmanuel Vadot				status = "okay";
184*f126890aSEmmanuel Vadot
185*f126890aSEmmanuel Vadot				xor00 {
186*f126890aSEmmanuel Vadot					interrupts = <94>;
187*f126890aSEmmanuel Vadot					dmacap,memcpy;
188*f126890aSEmmanuel Vadot					dmacap,xor;
189*f126890aSEmmanuel Vadot				};
190*f126890aSEmmanuel Vadot				xor01 {
191*f126890aSEmmanuel Vadot					interrupts = <95>;
192*f126890aSEmmanuel Vadot					dmacap,memcpy;
193*f126890aSEmmanuel Vadot					dmacap,xor;
194*f126890aSEmmanuel Vadot					dmacap,memset;
195*f126890aSEmmanuel Vadot				};
196*f126890aSEmmanuel Vadot			};
197*f126890aSEmmanuel Vadot		};
198*f126890aSEmmanuel Vadot
199*f126890aSEmmanuel Vadot		crypto_sram0: sa-sram0 {
200*f126890aSEmmanuel Vadot			compatible = "mmio-sram";
201*f126890aSEmmanuel Vadot			reg = <MBUS_ID(0x09, 0x09) 0 0x800>;
202*f126890aSEmmanuel Vadot			clocks = <&gateclk 23>;
203*f126890aSEmmanuel Vadot			#address-cells = <1>;
204*f126890aSEmmanuel Vadot			#size-cells = <1>;
205*f126890aSEmmanuel Vadot			ranges = <0 MBUS_ID(0x09, 0x09) 0 0x800>;
206*f126890aSEmmanuel Vadot		};
207*f126890aSEmmanuel Vadot
208*f126890aSEmmanuel Vadot		crypto_sram1: sa-sram1 {
209*f126890aSEmmanuel Vadot			compatible = "mmio-sram";
210*f126890aSEmmanuel Vadot			reg = <MBUS_ID(0x09, 0x05) 0 0x800>;
211*f126890aSEmmanuel Vadot			clocks = <&gateclk 23>;
212*f126890aSEmmanuel Vadot			#address-cells = <1>;
213*f126890aSEmmanuel Vadot			#size-cells = <1>;
214*f126890aSEmmanuel Vadot			ranges = <0 MBUS_ID(0x09, 0x05) 0 0x800>;
215*f126890aSEmmanuel Vadot		};
216*f126890aSEmmanuel Vadot
217*f126890aSEmmanuel Vadot		bm_bppi: bm-bppi {
218*f126890aSEmmanuel Vadot			compatible = "mmio-sram";
219*f126890aSEmmanuel Vadot			reg = <MBUS_ID(0x0c, 0x04) 0 0x100000>;
220*f126890aSEmmanuel Vadot			ranges = <0 MBUS_ID(0x0c, 0x04) 0 0x100000>;
221*f126890aSEmmanuel Vadot			#address-cells = <1>;
222*f126890aSEmmanuel Vadot			#size-cells = <1>;
223*f126890aSEmmanuel Vadot			clocks = <&gateclk 13>;
224*f126890aSEmmanuel Vadot			no-memory-wc;
225*f126890aSEmmanuel Vadot			status = "disabled";
226*f126890aSEmmanuel Vadot		};
227*f126890aSEmmanuel Vadot	};
228*f126890aSEmmanuel Vadot
229*f126890aSEmmanuel Vadot	clocks {
230*f126890aSEmmanuel Vadot		/* 25 MHz reference crystal */
231*f126890aSEmmanuel Vadot		refclk: oscillator {
232*f126890aSEmmanuel Vadot			compatible = "fixed-clock";
233*f126890aSEmmanuel Vadot			#clock-cells = <0>;
234*f126890aSEmmanuel Vadot			clock-frequency = <25000000>;
235*f126890aSEmmanuel Vadot		};
236*f126890aSEmmanuel Vadot	};
237*f126890aSEmmanuel Vadot};
238*f126890aSEmmanuel Vadot
239*f126890aSEmmanuel Vadot&i2c0 {
240*f126890aSEmmanuel Vadot	compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
241*f126890aSEmmanuel Vadot	reg = <0x11000 0x100>;
242*f126890aSEmmanuel Vadot};
243*f126890aSEmmanuel Vadot
244*f126890aSEmmanuel Vadot&i2c1 {
245*f126890aSEmmanuel Vadot	compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
246*f126890aSEmmanuel Vadot	reg = <0x11100 0x100>;
247*f126890aSEmmanuel Vadot};
248*f126890aSEmmanuel Vadot
249*f126890aSEmmanuel Vadot&mpic {
250*f126890aSEmmanuel Vadot	reg = <0x20a00 0x2d0>, <0x21070 0x58>;
251*f126890aSEmmanuel Vadot};
252*f126890aSEmmanuel Vadot
253*f126890aSEmmanuel Vadot&timer {
254*f126890aSEmmanuel Vadot	compatible = "marvell,armada-xp-timer";
255*f126890aSEmmanuel Vadot	clocks = <&coreclk 2>, <&refclk>;
256*f126890aSEmmanuel Vadot	clock-names = "nbclk", "fixed";
257*f126890aSEmmanuel Vadot};
258*f126890aSEmmanuel Vadot
259*f126890aSEmmanuel Vadot&watchdog {
260*f126890aSEmmanuel Vadot	compatible = "marvell,armada-xp-wdt";
261*f126890aSEmmanuel Vadot	clocks = <&coreclk 2>, <&refclk>;
262*f126890aSEmmanuel Vadot	clock-names = "nbclk", "fixed";
263*f126890aSEmmanuel Vadot	interrupts = <93>, <38>;
264*f126890aSEmmanuel Vadot};
265*f126890aSEmmanuel Vadot
266*f126890aSEmmanuel Vadot&cpurst {
267*f126890aSEmmanuel Vadot	reg = <0x20800 0x20>;
268*f126890aSEmmanuel Vadot};
269*f126890aSEmmanuel Vadot
270*f126890aSEmmanuel Vadot&usb0 {
271*f126890aSEmmanuel Vadot	clocks = <&gateclk 18>;
272*f126890aSEmmanuel Vadot};
273*f126890aSEmmanuel Vadot
274*f126890aSEmmanuel Vadot&usb1 {
275*f126890aSEmmanuel Vadot	clocks = <&gateclk 19>;
276*f126890aSEmmanuel Vadot};
277*f126890aSEmmanuel Vadot
278*f126890aSEmmanuel Vadot&pinctrl {
279*f126890aSEmmanuel Vadot	ge0_gmii_pins: ge0-gmii-pins {
280*f126890aSEmmanuel Vadot		marvell,pins =
281*f126890aSEmmanuel Vadot		     "mpp0",  "mpp1",  "mpp2",  "mpp3",
282*f126890aSEmmanuel Vadot		     "mpp4",  "mpp5",  "mpp6",  "mpp7",
283*f126890aSEmmanuel Vadot		     "mpp8",  "mpp9",  "mpp10", "mpp11",
284*f126890aSEmmanuel Vadot		     "mpp12", "mpp13", "mpp14", "mpp15",
285*f126890aSEmmanuel Vadot		     "mpp16", "mpp17", "mpp18", "mpp19",
286*f126890aSEmmanuel Vadot		     "mpp20", "mpp21", "mpp22", "mpp23";
287*f126890aSEmmanuel Vadot		marvell,function = "ge0";
288*f126890aSEmmanuel Vadot	};
289*f126890aSEmmanuel Vadot
290*f126890aSEmmanuel Vadot	ge0_rgmii_pins: ge0-rgmii-pins {
291*f126890aSEmmanuel Vadot		marvell,pins =
292*f126890aSEmmanuel Vadot		     "mpp0", "mpp1", "mpp2", "mpp3",
293*f126890aSEmmanuel Vadot		     "mpp4", "mpp5", "mpp6", "mpp7",
294*f126890aSEmmanuel Vadot		     "mpp8", "mpp9", "mpp10", "mpp11";
295*f126890aSEmmanuel Vadot		marvell,function = "ge0";
296*f126890aSEmmanuel Vadot	};
297*f126890aSEmmanuel Vadot
298*f126890aSEmmanuel Vadot	ge1_rgmii_pins: ge1-rgmii-pins {
299*f126890aSEmmanuel Vadot		marvell,pins =
300*f126890aSEmmanuel Vadot		     "mpp12", "mpp13", "mpp14", "mpp15",
301*f126890aSEmmanuel Vadot		     "mpp16", "mpp17", "mpp18", "mpp19",
302*f126890aSEmmanuel Vadot		     "mpp20", "mpp21", "mpp22", "mpp23";
303*f126890aSEmmanuel Vadot		marvell,function = "ge1";
304*f126890aSEmmanuel Vadot	};
305*f126890aSEmmanuel Vadot
306*f126890aSEmmanuel Vadot	sdio_pins: sdio-pins {
307*f126890aSEmmanuel Vadot		marvell,pins = "mpp30", "mpp31", "mpp32",
308*f126890aSEmmanuel Vadot			       "mpp33", "mpp34", "mpp35";
309*f126890aSEmmanuel Vadot		marvell,function = "sd0";
310*f126890aSEmmanuel Vadot	};
311*f126890aSEmmanuel Vadot
312*f126890aSEmmanuel Vadot	spi0_pins: spi0-pins {
313*f126890aSEmmanuel Vadot		marvell,pins = "mpp36", "mpp37",
314*f126890aSEmmanuel Vadot			       "mpp38", "mpp39";
315*f126890aSEmmanuel Vadot		marvell,function = "spi0";
316*f126890aSEmmanuel Vadot	};
317*f126890aSEmmanuel Vadot
318*f126890aSEmmanuel Vadot	spi1_pins: spi1-pins {
319*f126890aSEmmanuel Vadot		marvell,pins = "mpp13", "mpp14",
320*f126890aSEmmanuel Vadot			       "mpp16", "mpp17";
321*f126890aSEmmanuel Vadot		marvell,function = "spi1";
322*f126890aSEmmanuel Vadot	};
323*f126890aSEmmanuel Vadot
324*f126890aSEmmanuel Vadot	uart2_pins: uart2-pins {
325*f126890aSEmmanuel Vadot		marvell,pins = "mpp42", "mpp43";
326*f126890aSEmmanuel Vadot		marvell,function = "uart2";
327*f126890aSEmmanuel Vadot	};
328*f126890aSEmmanuel Vadot
329*f126890aSEmmanuel Vadot	uart3_pins: uart3-pins {
330*f126890aSEmmanuel Vadot		marvell,pins = "mpp44", "mpp45";
331*f126890aSEmmanuel Vadot		marvell,function = "uart3";
332*f126890aSEmmanuel Vadot	};
333*f126890aSEmmanuel Vadot};
334*f126890aSEmmanuel Vadot
335*f126890aSEmmanuel Vadot&spi0 {
336*f126890aSEmmanuel Vadot	compatible = "marvell,armada-xp-spi", "marvell,orion-spi";
337*f126890aSEmmanuel Vadot	pinctrl-0 = <&spi0_pins>;
338*f126890aSEmmanuel Vadot	pinctrl-names = "default";
339*f126890aSEmmanuel Vadot};
340*f126890aSEmmanuel Vadot
341*f126890aSEmmanuel Vadot&spi1 {
342*f126890aSEmmanuel Vadot	compatible = "marvell,armada-xp-spi", "marvell,orion-spi";
343*f126890aSEmmanuel Vadot	pinctrl-0 = <&spi1_pins>;
344*f126890aSEmmanuel Vadot	pinctrl-names = "default";
345*f126890aSEmmanuel Vadot};
346