2 * Device Tree Include file for Marvell Armada 38x family of SoCs.
4 * Copyright (C) 2014 Marvell
6 * Lior Amsalem <alior@marvell.com>
7 * Gregory CLEMENT <gregory.clement@free-electrons.com>
8 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
10 * This file is licensed under the terms of the GNU General Public
11 * License version 2. This program is licensed "as is" without any
12 * warranty of any kind, whether express or implied.
15 #include "skeleton.dtsi"
16 #include <dt-bindings/interrupt-controller/arm-gic.h>
17 #include <dt-bindings/interrupt-controller/irq.h>
19 #define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
22 model = "Marvell Armada 38x family SoC";
23 compatible = "marvell,armada380";
34 compatible = "marvell,armada380-mbus", "simple-bus";
37 controller = <&mbusc>;
38 interrupt-parent = <&gic>;
39 pcie-mem-aperture = <0xe0000000 0x8000000>;
40 pcie-io-aperture = <0xe8000000 0x100000>;
43 compatible = "marvell,bootrom";
44 reg = <MBUS_ID(0x01, 0x1d) 0 0x200000>;
48 compatible = "marvell,mvebu-devbus";
49 reg = <MBUS_ID(0xf0, 0x01) 0x10400 0x8>;
50 ranges = <0 MBUS_ID(0x01, 0x2f) 0 0xffffffff>;
53 clocks = <&coreclk 0>;
58 compatible = "marvell,mvebu-devbus";
59 reg = <MBUS_ID(0xf0, 0x01) 0x10408 0x8>;
60 ranges = <0 MBUS_ID(0x01, 0x3e) 0 0xffffffff>;
63 clocks = <&coreclk 0>;
68 compatible = "marvell,mvebu-devbus";
69 reg = <MBUS_ID(0xf0, 0x01) 0x10410 0x8>;
70 ranges = <0 MBUS_ID(0x01, 0x3d) 0 0xffffffff>;
73 clocks = <&coreclk 0>;
78 compatible = "marvell,mvebu-devbus";
79 reg = <MBUS_ID(0xf0, 0x01) 0x10418 0x8>;
80 ranges = <0 MBUS_ID(0x01, 0x3b) 0 0xffffffff>;
83 clocks = <&coreclk 0>;
88 compatible = "marvell,mvebu-devbus";
89 reg = <MBUS_ID(0xf0, 0x01) 0x10420 0x8>;
90 ranges = <0 MBUS_ID(0x01, 0x37) 0 0xffffffff>;
93 clocks = <&coreclk 0>;
98 compatible = "simple-bus";
101 ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
103 L2: cache-controller@8000 {
104 compatible = "arm,pl310-cache";
105 reg = <0x8000 0x1000>;
111 compatible = "arm,cortex-a9-scu";
116 compatible = "arm,cortex-a9-twd-timer";
118 interrupts = <GIC_PPI 13 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>;
119 clocks = <&coreclk 2>;
122 gic: interrupt-controller@d000 {
123 compatible = "arm,cortex-a9-gic";
124 #interrupt-cells = <3>;
126 interrupt-controller;
127 reg = <0xd000 0x1000>,
132 compatible = "marvell,orion-spi";
133 reg = <0x10600 0x50>;
134 #address-cells = <1>;
137 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
138 clocks = <&coreclk 0>;
143 compatible = "marvell,orion-spi";
144 reg = <0x10680 0x50>;
145 #address-cells = <1>;
148 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
149 clocks = <&coreclk 0>;
154 compatible = "marvell,mv64xxx-i2c";
155 reg = <0x11000 0x20>;
156 #address-cells = <1>;
158 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
160 clocks = <&coreclk 0>;
165 compatible = "marvell,mv64xxx-i2c";
166 reg = <0x11100 0x20>;
167 #address-cells = <1>;
169 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
171 clocks = <&coreclk 0>;
175 uart0: serial@12000 {
176 compatible = "snps,dw-apb-uart";
177 reg = <0x12000 0x100>;
179 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
181 clocks = <&coreclk 0>;
186 compatible = "snps,dw-apb-uart";
187 reg = <0x12100 0x100>;
189 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
191 clocks = <&coreclk 0>;
195 pinctrl: pinctrl@18000 {
196 reg = <0x18000 0x20>;
198 ge0_rgmii_pins: ge-rgmii-pins-0 {
199 marvell,pins = "mpp6", "mpp7", "mpp8",
200 "mpp9", "mpp10", "mpp11",
201 "mpp12", "mpp13", "mpp14",
202 "mpp15", "mpp16", "mpp17";
203 marvell,function = "ge0";
206 ge1_rgmii_pins: ge-rgmii-pins-1 {
207 marvell,pins = "mpp21", "mpp27", "mpp28",
208 "mpp29", "mpp30", "mpp31",
209 "mpp32", "mpp37", "mpp38",
210 "mpp39", "mpp40", "mpp41";
211 marvell,function = "ge1";
214 i2c0_pins: i2c-pins-0 {
215 marvell,pins = "mpp2", "mpp3";
216 marvell,function = "i2c0";
219 mdio_pins: mdio-pins {
220 marvell,pins = "mpp4", "mpp5";
221 marvell,function = "ge";
224 ref_clk0_pins: ref-clk-pins-0 {
225 marvell,pins = "mpp45";
226 marvell,function = "ref";
229 ref_clk1_pins: ref-clk-pins-1 {
230 marvell,pins = "mpp46";
231 marvell,function = "ref";
234 spi0_pins: spi-pins-0 {
235 marvell,pins = "mpp22", "mpp23", "mpp24",
237 marvell,function = "spi0";
240 spi1_pins: spi-pins-1 {
241 marvell,pins = "mpp56", "mpp57", "mpp58",
243 marvell,function = "spi1";
246 uart0_pins: uart-pins-0 {
247 marvell,pins = "mpp0", "mpp1";
248 marvell,function = "ua0";
251 uart1_pins: uart-pins-1 {
252 marvell,pins = "mpp19", "mpp20";
253 marvell,function = "ua1";
256 sdhci_pins: sdhci-pins {
257 marvell,pins = "mpp48", "mpp49", "mpp50",
258 "mpp52", "mpp53", "mpp54",
259 "mpp55", "mpp57", "mpp58",
261 marvell,function = "sd0";
264 sata0_pins: sata-pins-0 {
265 marvell,pins = "mpp20";
266 marvell,function = "sata0";
269 sata1_pins: sata-pins-1 {
270 marvell,pins = "mpp19";
271 marvell,function = "sata1";
274 sata2_pins: sata-pins-2 {
275 marvell,pins = "mpp47";
276 marvell,function = "sata2";
279 sata3_pins: sata-pins-3 {
280 marvell,pins = "mpp44";
281 marvell,function = "sata3";
286 compatible = "marvell,orion-gpio";
287 reg = <0x18100 0x40>;
291 interrupt-controller;
292 #interrupt-cells = <2>;
293 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
294 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
295 <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
296 <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
300 compatible = "marvell,orion-gpio";
301 reg = <0x18140 0x40>;
305 interrupt-controller;
306 #interrupt-cells = <2>;
307 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
308 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
309 <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
310 <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
313 system-controller@18200 {
314 compatible = "marvell,armada-380-system-controller",
315 "marvell,armada-370-xp-system-controller";
316 reg = <0x18200 0x100>;
319 gateclk: clock-gating-control@18220 {
320 compatible = "marvell,armada-380-gating-clock";
322 clocks = <&coreclk 0>;
326 coreclk: mvebu-sar@18600 {
327 compatible = "marvell,armada-380-core-clock";
328 reg = <0x18600 0x04>;
332 mbusc: mbus-controller@20000 {
333 compatible = "marvell,mbus-controller";
334 reg = <0x20000 0x100>, <0x20180 0x20>;
337 mpic: interrupt-controller@20000 {
338 compatible = "marvell,mpic";
339 reg = <0x20a00 0x2d0>, <0x21070 0x58>;
340 #interrupt-cells = <1>;
342 interrupt-controller;
344 interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
348 compatible = "marvell,armada-380-timer",
349 "marvell,armada-xp-timer";
350 reg = <0x20300 0x30>, <0x21040 0x30>;
351 interrupts-extended = <&gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
352 <&gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
353 <&gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
354 <&gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
357 clocks = <&coreclk 2>, <&refclk>;
358 clock-names = "nbclk", "fixed";
362 compatible = "marvell,armada-380-wdt";
363 reg = <0x20300 0x34>, <0x20704 0x4>, <0x18260 0x4>;
364 clocks = <&coreclk 2>, <&refclk>;
365 clock-names = "nbclk", "fixed";
369 compatible = "marvell,armada-370-cpu-reset";
370 reg = <0x20800 0x10>;
373 mpcore-soc-ctrl@20d20 {
374 compatible = "marvell,armada-380-mpcore-soc-ctrl";
375 reg = <0x20d20 0x6c>;
378 coherency-fabric@21010 {
379 compatible = "marvell,armada-380-coherency-fabric";
380 reg = <0x21010 0x1c>;
384 compatible = "marvell,armada-380-pmsu";
385 reg = <0x22000 0x1000>;
388 eth1: ethernet@30000 {
389 compatible = "marvell,armada-370-neta";
390 reg = <0x30000 0x4000>;
391 interrupts-extended = <&mpic 10>;
392 clocks = <&gateclk 3>;
396 eth2: ethernet@34000 {
397 compatible = "marvell,armada-370-neta";
398 reg = <0x34000 0x4000>;
399 interrupts-extended = <&mpic 12>;
400 clocks = <&gateclk 2>;
405 compatible = "marvell,orion-ehci";
406 reg = <0x58000 0x500>;
407 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
408 clocks = <&gateclk 18>;
413 compatible = "marvell,orion-xor";
416 clocks = <&gateclk 22>;
420 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
425 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
433 compatible = "marvell,orion-xor";
436 clocks = <&gateclk 28>;
440 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
445 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
452 eth0: ethernet@70000 {
453 compatible = "marvell,armada-370-neta";
454 reg = <0x70000 0x4000>;
455 interrupts-extended = <&mpic 8>;
456 clocks = <&gateclk 4>;
461 #address-cells = <1>;
463 compatible = "marvell,orion-mdio";
465 clocks = <&gateclk 4>;
469 compatible = "marvell,armada-380-ahci";
470 reg = <0xa8000 0x2000>;
471 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
472 clocks = <&gateclk 15>;
477 compatible = "marvell,armada-380-ahci";
478 reg = <0xe0000 0x2000>;
479 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
480 clocks = <&gateclk 30>;
484 coredivclk: clock@e4250 {
485 compatible = "marvell,armada-380-corediv-clock";
489 clock-output-names = "nand";
493 compatible = "marvell,armada380-thermal";
494 reg = <0xe4078 0x4>, <0xe4074 0x4>;
499 compatible = "marvell,armada370-nand";
500 reg = <0xd0000 0x54>;
501 #address-cells = <1>;
503 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
504 clocks = <&coredivclk 0>;
509 compatible = "marvell,armada-380-sdhci";
510 reg = <0xd8000 0x1000>, <0xdc000 0x100>;
511 interrupts = <0 25 0x4>;
512 clocks = <&gateclk 17>;
513 mrvl,clk-delay-cycles = <0x1F>;
518 compatible = "marvell,armada-380-xhci";
519 reg = <0xf0000 0x4000>,<0xf4000 0x4000>;
520 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
521 clocks = <&gateclk 9>;
526 compatible = "marvell,armada-380-xhci";
527 reg = <0xf8000 0x4000>,<0xfc000 0x4000>;
528 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
529 clocks = <&gateclk 10>;
536 /* 2 GHz fixed main PLL */
538 compatible = "fixed-clock";
540 clock-frequency = <2000000000>;
543 /* 25 MHz reference crystal */
545 compatible = "fixed-clock";
547 clock-frequency = <25000000>;