1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
3 * Device Tree Include file for Marvell Armada 1500 (Berlin BG2) SoC
5 * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
7 * based on GPL'ed 2.6 kernel sources
8 * (c) Marvell International Ltd.
11 #include <dt-bindings/clock/berlin2.h>
12 #include <dt-bindings/interrupt-controller/arm-gic.h>
15 model = "Marvell Armada 1500 (BG2) SoC";
16 compatible = "marvell,berlin2", "marvell,berlin";
29 enable-method = "marvell,berlin-smp";
32 compatible = "marvell,pj4b";
34 next-level-cache = <&l2>;
37 clocks = <&chip_clk CLKID_CPU>;
38 clock-latency = <100000>;
49 compatible = "marvell,pj4b";
51 next-level-cache = <&l2>;
54 clocks = <&chip_clk CLKID_CPU>;
55 clock-latency = <100000>;
67 compatible = "fixed-clock";
69 clock-frequency = <25000000>;
73 compatible = "simple-bus";
76 interrupt-parent = <&gic>;
78 ranges = <0 0xf7000000 0x1000000>;
81 compatible = "mrvl,pxav3-mmc";
82 reg = <0xab0000 0x200>;
83 clocks = <&chip_clk CLKID_SDIO0XIN>, <&chip_clk CLKID_SDIO0>;
84 clock-names = "io", "core";
85 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
90 compatible = "mrvl,pxav3-mmc";
91 reg = <0xab0800 0x200>;
92 clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO1>;
93 clock-names = "io", "core";
94 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
99 compatible = "mrvl,pxav3-mmc";
100 reg = <0xab1000 0x200>;
101 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
102 clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_NFC>;
103 clock-names = "io", "core";
104 pinctrl-0 = <&emmc_pmux>;
105 pinctrl-names = "default";
109 l2: cache-controller@ac0000 {
110 compatible = "marvell,tauros3-cache", "arm,pl310-cache";
111 reg = <0xac0000 0x1000>;
116 scu: snoop-control-unit@ad0000 {
117 compatible = "arm,cortex-a9-scu";
118 reg = <0xad0000 0x58>;
121 gic: interrupt-controller@ad1000 {
122 compatible = "arm,cortex-a9-gic";
123 reg = <0xad1000 0x1000>, <0xad0100 0x0100>;
124 interrupt-controller;
125 #interrupt-cells = <3>;
129 compatible = "arm,cortex-a9-twd-timer";
130 reg = <0xad0600 0x20>;
131 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
132 clocks = <&chip_clk CLKID_TWD>;
135 eth1: ethernet@b90000 {
136 compatible = "marvell,pxa168-eth";
137 reg = <0xb90000 0x10000>;
138 clocks = <&chip_clk CLKID_GETH1>;
139 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
140 /* set by bootloader */
141 local-mac-address = [00 00 00 00 00 00];
142 #address-cells = <1>;
144 phy-connection-type = "mii";
145 phy-handle = <ðphy1>;
148 ethphy1: ethernet-phy@0 {
154 compatible = "marvell,berlin-cpu-ctrl";
155 reg = <0xdd0000 0x10000>;
158 eth0: ethernet@e50000 {
159 compatible = "marvell,pxa168-eth";
160 reg = <0xe50000 0x10000>;
161 clocks = <&chip_clk CLKID_GETH0>;
162 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
163 /* set by bootloader */
164 local-mac-address = [00 00 00 00 00 00];
165 #address-cells = <1>;
167 phy-connection-type = "mii";
168 phy-handle = <ðphy0>;
171 ethphy0: ethernet-phy@0 {
177 compatible = "simple-bus";
178 #address-cells = <1>;
181 ranges = <0 0xe80000 0x10000>;
182 interrupt-parent = <&aic>;
185 compatible = "snps,dw-apb-gpio";
186 reg = <0x0400 0x400>;
187 #address-cells = <1>;
191 compatible = "snps,dw-apb-gpio-port";
196 interrupt-controller;
197 #interrupt-cells = <2>;
203 compatible = "snps,dw-apb-gpio";
204 reg = <0x0800 0x400>;
205 #address-cells = <1>;
209 compatible = "snps,dw-apb-gpio-port";
214 interrupt-controller;
215 #interrupt-cells = <2>;
221 compatible = "snps,dw-apb-gpio";
222 reg = <0x0c00 0x400>;
223 #address-cells = <1>;
227 compatible = "snps,dw-apb-gpio-port";
232 interrupt-controller;
233 #interrupt-cells = <2>;
239 compatible = "snps,dw-apb-gpio";
240 reg = <0x1000 0x400>;
241 #address-cells = <1>;
245 compatible = "snps,dw-apb-gpio-port";
250 interrupt-controller;
251 #interrupt-cells = <2>;
257 compatible = "snps,dw-apb-timer";
260 clocks = <&chip_clk CLKID_CFG>;
261 clock-names = "timer";
266 compatible = "snps,dw-apb-timer";
269 clocks = <&chip_clk CLKID_CFG>;
270 clock-names = "timer";
275 compatible = "snps,dw-apb-timer";
278 clocks = <&chip_clk CLKID_CFG>;
279 clock-names = "timer";
284 compatible = "snps,dw-apb-timer";
287 clocks = <&chip_clk CLKID_CFG>;
288 clock-names = "timer";
293 compatible = "snps,dw-apb-timer";
296 clocks = <&chip_clk CLKID_CFG>;
297 clock-names = "timer";
302 compatible = "snps,dw-apb-timer";
305 clocks = <&chip_clk CLKID_CFG>;
306 clock-names = "timer";
311 compatible = "snps,dw-apb-timer";
314 clocks = <&chip_clk CLKID_CFG>;
315 clock-names = "timer";
320 compatible = "snps,dw-apb-timer";
323 clocks = <&chip_clk CLKID_CFG>;
324 clock-names = "timer";
328 aic: interrupt-controller@3000 {
329 compatible = "snps,dw-apb-ictl";
330 reg = <0x3000 0xc00>;
331 interrupt-controller;
332 #interrupt-cells = <1>;
333 interrupt-parent = <&gic>;
334 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
339 compatible = "marvell,berlin2-ahci", "generic-ahci";
340 reg = <0xe90000 0x1000>;
341 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
342 clocks = <&chip_clk CLKID_SATA>;
343 #address-cells = <1>;
348 phys = <&sata_phy 0>;
354 phys = <&sata_phy 1>;
359 sata_phy: phy@e900a0 {
360 compatible = "marvell,berlin2-sata-phy";
361 reg = <0xe900a0 0x200>;
362 clocks = <&chip_clk CLKID_SATA>;
363 #address-cells = <1>;
377 chip: chip-control@ea0000 {
378 compatible = "simple-mfd", "syscon";
379 reg = <0xea0000 0x400>;
382 compatible = "marvell,berlin2-clk";
385 clock-names = "refclk";
388 soc_pinctrl: pin-controller {
389 compatible = "marvell,berlin2-soc-pinctrl";
391 emmc_pmux: emmc-pmux {
398 compatible = "marvell,berlin2-reset";
404 compatible = "marvell,berlin-pwm";
405 reg = <0xf20000 0x40>;
406 clocks = <&chip_clk CLKID_CFG>;
411 compatible = "simple-bus";
412 #address-cells = <1>;
415 ranges = <0 0xfc0000 0x10000>;
416 interrupt-parent = <&sic>;
418 wdt0: watchdog@1000 {
419 compatible = "snps,dw-wdt";
420 reg = <0x1000 0x100>;
425 wdt1: watchdog@2000 {
426 compatible = "snps,dw-wdt";
427 reg = <0x2000 0x100>;
432 wdt2: watchdog@3000 {
433 compatible = "snps,dw-wdt";
434 reg = <0x3000 0x100>;
439 sm_gpio1: gpio@5000 {
440 compatible = "snps,dw-apb-gpio";
441 reg = <0x5000 0x400>;
442 #address-cells = <1>;
446 compatible = "snps,dw-apb-gpio-port";
454 sm_gpio0: gpio@c000 {
455 compatible = "snps,dw-apb-gpio";
456 reg = <0xc000 0x400>;
457 #address-cells = <1>;
461 compatible = "snps,dw-apb-gpio-port";
466 interrupt-controller;
467 #interrupt-cells = <2>;
473 compatible = "snps,dw-apb-uart";
474 reg = <0x9000 0x100>;
479 pinctrl-0 = <&uart0_pmux>;
480 pinctrl-names = "default";
485 compatible = "snps,dw-apb-uart";
486 reg = <0xa000 0x100>;
491 pinctrl-0 = <&uart1_pmux>;
492 pinctrl-names = "default";
497 compatible = "snps,dw-apb-uart";
498 reg = <0xb000 0x100>;
503 pinctrl-0 = <&uart2_pmux>;
504 pinctrl-names = "default";
508 sysctrl: system-controller@d000 {
509 compatible = "simple-mfd", "syscon";
510 reg = <0xd000 0x100>;
512 sys_pinctrl: pin-controller {
513 compatible = "marvell,berlin2-system-pinctrl";
514 uart0_pmux: uart0-pmux {
519 uart1_pmux: uart1-pmux {
523 uart2_pmux: uart2-pmux {
530 sic: interrupt-controller@e000 {
531 compatible = "snps,dw-apb-ictl";
532 reg = <0xe000 0x400>;
533 interrupt-controller;
534 #interrupt-cells = <1>;
535 interrupt-parent = <&gic>;
536 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;