1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Device Tree Include file for Marvell Armada XP family SoC
4 *
5 * Copyright (C) 2012 Marvell
6 *
7 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
8 *
9 * Contains definitions specific to the Armada XP MV78460 SoC that are not
10 * common to all Armada XP SoCs.
11 */
12
13#include "armada-xp.dtsi"
14
15/ {
16	model = "Marvell Armada XP MV78460 SoC";
17	compatible = "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp";
18
19	aliases {
20		gpio0 = &gpio0;
21		gpio1 = &gpio1;
22		gpio2 = &gpio2;
23	};
24
25
26	cpus {
27		#address-cells = <1>;
28		#size-cells = <0>;
29		enable-method = "marvell,armada-xp-smp";
30
31		cpu@0 {
32			device_type = "cpu";
33			compatible = "marvell,sheeva-v7";
34			reg = <0>;
35			clocks = <&cpuclk 0>;
36			clock-latency = <1000000>;
37		};
38
39		cpu@1 {
40			device_type = "cpu";
41			compatible = "marvell,sheeva-v7";
42			reg = <1>;
43			clocks = <&cpuclk 1>;
44			clock-latency = <1000000>;
45		};
46
47		cpu@2 {
48			device_type = "cpu";
49			compatible = "marvell,sheeva-v7";
50			reg = <2>;
51			clocks = <&cpuclk 2>;
52			clock-latency = <1000000>;
53		};
54
55		cpu@3 {
56			device_type = "cpu";
57			compatible = "marvell,sheeva-v7";
58			reg = <3>;
59			clocks = <&cpuclk 3>;
60			clock-latency = <1000000>;
61		};
62	};
63
64	soc {
65		/*
66		 * MV78460 has 4 PCIe units Gen2.0: Two units can be
67		 * configured as x4 or quad x1 lanes. Two units are
68		 * x4/x1.
69		 */
70		pciec: pcie@82000000 {
71			compatible = "marvell,armada-xp-pcie";
72			status = "disabled";
73			device_type = "pci";
74
75			#address-cells = <3>;
76			#size-cells = <2>;
77
78			msi-parent = <&mpic>;
79			bus-range = <0x00 0xff>;
80
81			ranges =
82			       <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000   /* Port 0.0 registers */
83				0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000   /* Port 2.0 registers */
84				0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000   /* Port 0.1 registers */
85				0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000   /* Port 0.2 registers */
86				0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000   /* Port 0.3 registers */
87				0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000   /* Port 1.0 registers */
88				0x82000000 0 0x82000 MBUS_ID(0xf0, 0x01) 0x82000 0 0x00002000   /* Port 3.0 registers */
89				0x82000000 0 0x84000 MBUS_ID(0xf0, 0x01) 0x84000 0 0x00002000   /* Port 1.1 registers */
90				0x82000000 0 0x88000 MBUS_ID(0xf0, 0x01) 0x88000 0 0x00002000   /* Port 1.2 registers */
91				0x82000000 0 0x8c000 MBUS_ID(0xf0, 0x01) 0x8c000 0 0x00002000   /* Port 1.3 registers */
92				0x82000000 0x1 0     MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */
93				0x81000000 0x1 0     MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO  */
94				0x82000000 0x2 0     MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 0.1 MEM */
95				0x81000000 0x2 0     MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 0.1 IO  */
96				0x82000000 0x3 0     MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 0.2 MEM */
97				0x81000000 0x3 0     MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 0.2 IO  */
98				0x82000000 0x4 0     MBUS_ID(0x04, 0x78) 0 1 0 /* Port 0.3 MEM */
99				0x81000000 0x4 0     MBUS_ID(0x04, 0x70) 0 1 0 /* Port 0.3 IO  */
100
101				0x82000000 0x5 0     MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 1.0 MEM */
102				0x81000000 0x5 0     MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 1.0 IO  */
103				0x82000000 0x6 0     MBUS_ID(0x08, 0xd8) 0 1 0 /* Port 1.1 MEM */
104				0x81000000 0x6 0     MBUS_ID(0x08, 0xd0) 0 1 0 /* Port 1.1 IO  */
105				0x82000000 0x7 0     MBUS_ID(0x08, 0xb8) 0 1 0 /* Port 1.2 MEM */
106				0x81000000 0x7 0     MBUS_ID(0x08, 0xb0) 0 1 0 /* Port 1.2 IO  */
107				0x82000000 0x8 0     MBUS_ID(0x08, 0x78) 0 1 0 /* Port 1.3 MEM */
108				0x81000000 0x8 0     MBUS_ID(0x08, 0x70) 0 1 0 /* Port 1.3 IO  */
109
110				0x82000000 0x9 0     MBUS_ID(0x04, 0xf8) 0 1 0 /* Port 2.0 MEM */
111				0x81000000 0x9 0     MBUS_ID(0x04, 0xf0) 0 1 0 /* Port 2.0 IO  */
112
113				0x82000000 0xa 0     MBUS_ID(0x08, 0xf8) 0 1 0 /* Port 3.0 MEM */
114				0x81000000 0xa 0     MBUS_ID(0x08, 0xf0) 0 1 0 /* Port 3.0 IO  */>;
115
116			pcie1: pcie@1,0 {
117				device_type = "pci";
118				assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
119				reg = <0x0800 0 0 0 0>;
120				#address-cells = <3>;
121				#size-cells = <2>;
122				#interrupt-cells = <1>;
123				ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
124					  0x81000000 0 0 0x81000000 0x1 0 1 0>;
125				bus-range = <0x00 0xff>;
126				interrupt-map-mask = <0 0 0 0>;
127				interrupt-map = <0 0 0 0 &mpic 58>;
128				marvell,pcie-port = <0>;
129				marvell,pcie-lane = <0>;
130				clocks = <&gateclk 5>;
131				status = "disabled";
132			};
133
134			pcie2: pcie@2,0 {
135				device_type = "pci";
136				assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
137				reg = <0x1000 0 0 0 0>;
138				#address-cells = <3>;
139				#size-cells = <2>;
140				#interrupt-cells = <1>;
141				ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0
142					  0x81000000 0 0 0x81000000 0x2 0 1 0>;
143				bus-range = <0x00 0xff>;
144				interrupt-map-mask = <0 0 0 0>;
145				interrupt-map = <0 0 0 0 &mpic 59>;
146				marvell,pcie-port = <0>;
147				marvell,pcie-lane = <1>;
148				clocks = <&gateclk 6>;
149				status = "disabled";
150			};
151
152			pcie3: pcie@3,0 {
153				device_type = "pci";
154				assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
155				reg = <0x1800 0 0 0 0>;
156				#address-cells = <3>;
157				#size-cells = <2>;
158				#interrupt-cells = <1>;
159				ranges = <0x82000000 0 0 0x82000000 0x3 0 1 0
160					  0x81000000 0 0 0x81000000 0x3 0 1 0>;
161				bus-range = <0x00 0xff>;
162				interrupt-map-mask = <0 0 0 0>;
163				interrupt-map = <0 0 0 0 &mpic 60>;
164				marvell,pcie-port = <0>;
165				marvell,pcie-lane = <2>;
166				clocks = <&gateclk 7>;
167				status = "disabled";
168			};
169
170			pcie4: pcie@4,0 {
171				device_type = "pci";
172				assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
173				reg = <0x2000 0 0 0 0>;
174				#address-cells = <3>;
175				#size-cells = <2>;
176				#interrupt-cells = <1>;
177				ranges = <0x82000000 0 0 0x82000000 0x4 0 1 0
178					  0x81000000 0 0 0x81000000 0x4 0 1 0>;
179				bus-range = <0x00 0xff>;
180				interrupt-map-mask = <0 0 0 0>;
181				interrupt-map = <0 0 0 0 &mpic 61>;
182				marvell,pcie-port = <0>;
183				marvell,pcie-lane = <3>;
184				clocks = <&gateclk 8>;
185				status = "disabled";
186			};
187
188			pcie5: pcie@5,0 {
189				device_type = "pci";
190				assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
191				reg = <0x2800 0 0 0 0>;
192				#address-cells = <3>;
193				#size-cells = <2>;
194				#interrupt-cells = <1>;
195				ranges = <0x82000000 0 0 0x82000000 0x5 0 1 0
196					  0x81000000 0 0 0x81000000 0x5 0 1 0>;
197				bus-range = <0x00 0xff>;
198				interrupt-map-mask = <0 0 0 0>;
199				interrupt-map = <0 0 0 0 &mpic 62>;
200				marvell,pcie-port = <1>;
201				marvell,pcie-lane = <0>;
202				clocks = <&gateclk 9>;
203				status = "disabled";
204			};
205
206			pcie6: pcie@6,0 {
207				device_type = "pci";
208				assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
209				reg = <0x3000 0 0 0 0>;
210				#address-cells = <3>;
211				#size-cells = <2>;
212				#interrupt-cells = <1>;
213				ranges = <0x82000000 0 0 0x82000000 0x6 0 1 0
214					  0x81000000 0 0 0x81000000 0x6 0 1 0>;
215				bus-range = <0x00 0xff>;
216				interrupt-map-mask = <0 0 0 0>;
217				interrupt-map = <0 0 0 0 &mpic 63>;
218				marvell,pcie-port = <1>;
219				marvell,pcie-lane = <1>;
220				clocks = <&gateclk 10>;
221				status = "disabled";
222			};
223
224			pcie7: pcie@7,0 {
225				device_type = "pci";
226				assigned-addresses = <0x82003800 0 0x88000 0 0x2000>;
227				reg = <0x3800 0 0 0 0>;
228				#address-cells = <3>;
229				#size-cells = <2>;
230				#interrupt-cells = <1>;
231				ranges = <0x82000000 0 0 0x82000000 0x7 0 1 0
232					  0x81000000 0 0 0x81000000 0x7 0 1 0>;
233				bus-range = <0x00 0xff>;
234				interrupt-map-mask = <0 0 0 0>;
235				interrupt-map = <0 0 0 0 &mpic 64>;
236				marvell,pcie-port = <1>;
237				marvell,pcie-lane = <2>;
238				clocks = <&gateclk 11>;
239				status = "disabled";
240			};
241
242			pcie8: pcie@8,0 {
243				device_type = "pci";
244				assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>;
245				reg = <0x4000 0 0 0 0>;
246				#address-cells = <3>;
247				#size-cells = <2>;
248				#interrupt-cells = <1>;
249				ranges = <0x82000000 0 0 0x82000000 0x8 0 1 0
250					  0x81000000 0 0 0x81000000 0x8 0 1 0>;
251				bus-range = <0x00 0xff>;
252				interrupt-map-mask = <0 0 0 0>;
253				interrupt-map = <0 0 0 0 &mpic 65>;
254				marvell,pcie-port = <1>;
255				marvell,pcie-lane = <3>;
256				clocks = <&gateclk 12>;
257				status = "disabled";
258			};
259
260			pcie9: pcie@9,0 {
261				device_type = "pci";
262				assigned-addresses = <0x82004800 0 0x42000 0 0x2000>;
263				reg = <0x4800 0 0 0 0>;
264				#address-cells = <3>;
265				#size-cells = <2>;
266				#interrupt-cells = <1>;
267				ranges = <0x82000000 0 0 0x82000000 0x9 0 1 0
268					  0x81000000 0 0 0x81000000 0x9 0 1 0>;
269				bus-range = <0x00 0xff>;
270				interrupt-map-mask = <0 0 0 0>;
271				interrupt-map = <0 0 0 0 &mpic 99>;
272				marvell,pcie-port = <2>;
273				marvell,pcie-lane = <0>;
274				clocks = <&gateclk 26>;
275				status = "disabled";
276			};
277
278			pcie10: pcie@a,0 {
279				device_type = "pci";
280				assigned-addresses = <0x82005000 0 0x82000 0 0x2000>;
281				reg = <0x5000 0 0 0 0>;
282				#address-cells = <3>;
283				#size-cells = <2>;
284				#interrupt-cells = <1>;
285				ranges = <0x82000000 0 0 0x82000000 0xa 0 1 0
286					  0x81000000 0 0 0x81000000 0xa 0 1 0>;
287				bus-range = <0x00 0xff>;
288				interrupt-map-mask = <0 0 0 0>;
289				interrupt-map = <0 0 0 0 &mpic 103>;
290				marvell,pcie-port = <3>;
291				marvell,pcie-lane = <0>;
292				clocks = <&gateclk 27>;
293				status = "disabled";
294			};
295		};
296
297		internal-regs {
298			gpio0: gpio@18100 {
299				compatible = "marvell,armada-370-gpio",
300					     "marvell,orion-gpio";
301				reg = <0x18100 0x40>, <0x181c0 0x08>;
302				reg-names = "gpio", "pwm";
303				ngpios = <32>;
304				gpio-controller;
305				#gpio-cells = <2>;
306				#pwm-cells = <2>;
307				interrupt-controller;
308				#interrupt-cells = <2>;
309				interrupts = <82>, <83>, <84>, <85>;
310				clocks = <&coreclk 0>;
311			};
312
313			gpio1: gpio@18140 {
314				compatible = "marvell,armada-370-gpio",
315					     "marvell,orion-gpio";
316				reg = <0x18140 0x40>, <0x181c8 0x08>;
317				reg-names = "gpio", "pwm";
318				ngpios = <32>;
319				gpio-controller;
320				#gpio-cells = <2>;
321				#pwm-cells = <2>;
322				interrupt-controller;
323				#interrupt-cells = <2>;
324				interrupts = <87>, <88>, <89>, <90>;
325				clocks = <&coreclk 0>;
326			};
327
328			gpio2: gpio@18180 {
329				compatible = "marvell,armada-370-gpio",
330					     "marvell,orion-gpio";
331				reg = <0x18180 0x40>;
332				ngpios = <3>;
333				gpio-controller;
334				#gpio-cells = <2>;
335				interrupt-controller;
336				#interrupt-cells = <2>;
337				interrupts = <91>;
338			};
339
340			eth3: ethernet@34000 {
341				compatible = "marvell,armada-xp-neta";
342				reg = <0x34000 0x4000>;
343				interrupts = <14>;
344				clocks = <&gateclk 1>;
345				status = "disabled";
346			};
347		};
348	};
349};
350
351&pinctrl {
352	compatible = "marvell,mv78460-pinctrl";
353};
354