1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
3 * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com>
6 #include <dt-bindings/clock/berlin2q.h>
7 #include <dt-bindings/interrupt-controller/arm-gic.h>
10 model = "Marvell Armada 1500 pro (BG2-Q) SoC";
11 compatible = "marvell,berlin2q", "marvell,berlin";
23 enable-method = "marvell,berlin-smp";
26 compatible = "arm,cortex-a9";
28 next-level-cache = <&l2>;
31 clocks = <&chip_clk CLKID_CPU>;
32 clock-latency = <100000>;
33 /* Can be modified by the bootloader */
44 compatible = "arm,cortex-a9";
46 next-level-cache = <&l2>;
49 clocks = <&chip_clk CLKID_CPU>;
50 clock-latency = <100000>;
51 /* Can be modified by the bootloader */
62 compatible = "arm,cortex-a9";
64 next-level-cache = <&l2>;
67 clocks = <&chip_clk CLKID_CPU>;
68 clock-latency = <100000>;
69 /* Can be modified by the bootloader */
80 compatible = "arm,cortex-a9";
82 next-level-cache = <&l2>;
85 clocks = <&chip_clk CLKID_CPU>;
86 clock-latency = <100000>;
87 /* Can be modified by the bootloader */
99 compatible = "arm,cortex-a9-pmu";
100 interrupt-parent = <&gic>;
101 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
102 <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
103 <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
104 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
105 interrupt-affinity = <&cpu0>,
112 compatible = "fixed-clock";
114 clock-frequency = <25000000>;
118 compatible = "simple-bus";
119 #address-cells = <1>;
122 ranges = <0 0xf7000000 0x1000000>;
123 interrupt-parent = <&gic>;
125 sdhci0: sdhci@ab0000 {
126 compatible = "mrvl,pxav3-mmc";
127 reg = <0xab0000 0x200>;
128 clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
129 clock-names = "io", "core";
130 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
134 sdhci1: sdhci@ab0800 {
135 compatible = "mrvl,pxav3-mmc";
136 reg = <0xab0800 0x200>;
137 clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
138 clock-names = "io", "core";
139 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
143 sdhci2: sdhci@ab1000 {
144 compatible = "mrvl,pxav3-mmc";
145 reg = <0xab1000 0x200>;
146 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
147 clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>;
148 clock-names = "io", "core";
152 l2: l2-cache-controller@ac0000 {
153 compatible = "arm,pl310-cache";
154 reg = <0xac0000 0x1000>;
157 arm,data-latency = <2 2 2>;
158 arm,tag-latency = <2 2 2>;
161 scu: snoop-control-unit@ad0000 {
162 compatible = "arm,cortex-a9-scu";
163 reg = <0xad0000 0x58>;
167 compatible = "arm,cortex-a9-twd-timer";
168 reg = <0xad0600 0x20>;
169 clocks = <&chip_clk CLKID_TWD>;
170 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
173 gic: interrupt-controller@ad1000 {
174 compatible = "arm,cortex-a9-gic";
175 reg = <0xad1000 0x1000>, <0xad0100 0x100>;
176 interrupt-controller;
177 #interrupt-cells = <3>;
180 usb_phy2: phy@a2f400 {
181 compatible = "marvell,berlin2cd-usb-phy";
182 reg = <0xa2f400 0x128>;
184 resets = <&chip_rst 0x104 14>;
189 compatible = "chipidea,usb2";
190 reg = <0xa30000 0x10000>;
191 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
192 clocks = <&chip_clk CLKID_USB2>;
194 phy-names = "usb-phy";
198 usb_phy0: phy@b74000 {
199 compatible = "marvell,berlin2cd-usb-phy";
200 reg = <0xb74000 0x128>;
202 resets = <&chip_rst 0x104 12>;
206 usb_phy1: phy@b78000 {
207 compatible = "marvell,berlin2cd-usb-phy";
208 reg = <0xb78000 0x128>;
210 resets = <&chip_rst 0x104 13>;
214 eth0: ethernet@b90000 {
215 compatible = "marvell,pxa168-eth";
216 reg = <0xb90000 0x10000>;
217 clocks = <&chip_clk CLKID_GETH0>;
218 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
219 /* set by bootloader */
220 local-mac-address = [00 00 00 00 00 00];
221 #address-cells = <1>;
223 phy-connection-type = "mii";
224 phy-handle = <ðphy0>;
227 ethphy0: ethernet-phy@0 {
233 compatible = "marvell,berlin-cpu-ctrl";
234 reg = <0xdd0000 0x10000>;
238 compatible = "simple-bus";
239 #address-cells = <1>;
242 ranges = <0 0xe80000 0x10000>;
243 interrupt-parent = <&aic>;
246 compatible = "snps,dw-apb-gpio";
247 reg = <0x0400 0x400>;
248 #address-cells = <1>;
252 compatible = "snps,dw-apb-gpio-port";
255 snps,nr-gpios = <32>;
257 interrupt-controller;
258 #interrupt-cells = <2>;
264 compatible = "snps,dw-apb-gpio";
265 reg = <0x0800 0x400>;
266 #address-cells = <1>;
270 compatible = "snps,dw-apb-gpio-port";
273 snps,nr-gpios = <32>;
275 interrupt-controller;
276 #interrupt-cells = <2>;
282 compatible = "snps,dw-apb-gpio";
283 reg = <0x0c00 0x400>;
284 #address-cells = <1>;
288 compatible = "snps,dw-apb-gpio-port";
291 snps,nr-gpios = <32>;
293 interrupt-controller;
294 #interrupt-cells = <2>;
300 compatible = "snps,dw-apb-gpio";
301 reg = <0x1000 0x400>;
302 #address-cells = <1>;
306 compatible = "snps,dw-apb-gpio-port";
309 snps,nr-gpios = <32>;
311 interrupt-controller;
312 #interrupt-cells = <2>;
318 compatible = "snps,designware-i2c";
319 #address-cells = <1>;
321 reg = <0x1400 0x100>;
323 clocks = <&chip_clk CLKID_CFG>;
324 pinctrl-0 = <&twsi0_pmux>;
325 pinctrl-names = "default";
330 compatible = "snps,designware-i2c";
331 #address-cells = <1>;
333 reg = <0x1800 0x100>;
335 clocks = <&chip_clk CLKID_CFG>;
336 pinctrl-0 = <&twsi1_pmux>;
337 pinctrl-names = "default";
342 compatible = "snps,dw-apb-timer";
344 clocks = <&chip_clk CLKID_CFG>;
345 clock-names = "timer";
350 compatible = "snps,dw-apb-timer";
352 clocks = <&chip_clk CLKID_CFG>;
353 clock-names = "timer";
357 compatible = "snps,dw-apb-timer";
359 clocks = <&chip_clk CLKID_CFG>;
360 clock-names = "timer";
365 compatible = "snps,dw-apb-timer";
367 clocks = <&chip_clk CLKID_CFG>;
368 clock-names = "timer";
373 compatible = "snps,dw-apb-timer";
375 clocks = <&chip_clk CLKID_CFG>;
376 clock-names = "timer";
381 compatible = "snps,dw-apb-timer";
383 clocks = <&chip_clk CLKID_CFG>;
384 clock-names = "timer";
389 compatible = "snps,dw-apb-timer";
391 clocks = <&chip_clk CLKID_CFG>;
392 clock-names = "timer";
397 compatible = "snps,dw-apb-timer";
399 clocks = <&chip_clk CLKID_CFG>;
400 clock-names = "timer";
404 aic: interrupt-controller@3800 {
405 compatible = "snps,dw-apb-ictl";
407 interrupt-controller;
408 #interrupt-cells = <1>;
409 interrupt-parent = <&gic>;
410 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
414 chip: chip-control@ea0000 {
415 compatible = "simple-mfd", "syscon";
416 reg = <0xea0000 0x400>, <0xdd0170 0x10>;
419 compatible = "marvell,berlin2q-clk";
422 clock-names = "refclk";
425 soc_pinctrl: pin-controller {
426 compatible = "marvell,berlin2q-soc-pinctrl";
433 twsi0_pmux: twsi0-pmux {
438 twsi1_pmux: twsi1-pmux {
445 compatible = "marvell,berlin2-reset";
451 compatible = "marvell,berlin2q-ahci", "generic-ahci";
452 reg = <0xe90000 0x1000>;
453 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
454 clocks = <&chip_clk CLKID_SATA>;
455 #address-cells = <1>;
460 phys = <&sata_phy 0>;
466 phys = <&sata_phy 1>;
471 sata_phy: phy@e900a0 {
472 compatible = "marvell,berlin2q-sata-phy";
473 reg = <0xe900a0 0x200>;
474 clocks = <&chip_clk CLKID_SATA>;
475 #address-cells = <1>;
490 compatible = "chipidea,usb2";
491 reg = <0xed0000 0x10000>;
492 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
493 clocks = <&chip_clk CLKID_USB0>;
495 phy-names = "usb-phy";
500 compatible = "chipidea,usb2";
501 reg = <0xee0000 0x10000>;
502 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
503 clocks = <&chip_clk CLKID_USB1>;
505 phy-names = "usb-phy";
510 compatible = "marvell,berlin-pwm";
511 reg = <0xf20000 0x40>;
512 clocks = <&chip_clk CLKID_CFG>;
517 compatible = "simple-bus";
518 #address-cells = <1>;
521 ranges = <0 0xfc0000 0x10000>;
522 interrupt-parent = <&sic>;
524 wdt0: watchdog@1000 {
525 compatible = "snps,dw-wdt";
526 reg = <0x1000 0x100>;
531 wdt1: watchdog@2000 {
532 compatible = "snps,dw-wdt";
533 reg = <0x2000 0x100>;
538 wdt2: watchdog@3000 {
539 compatible = "snps,dw-wdt";
540 reg = <0x3000 0x100>;
545 sm_gpio1: gpio@5000 {
546 compatible = "snps,dw-apb-gpio";
547 reg = <0x5000 0x400>;
548 #address-cells = <1>;
552 compatible = "snps,dw-apb-gpio-port";
555 snps,nr-gpios = <32>;
561 compatible = "snps,designware-i2c";
562 #address-cells = <1>;
564 reg = <0x7000 0x100>;
567 pinctrl-0 = <&twsi2_pmux>;
568 pinctrl-names = "default";
573 compatible = "snps,designware-i2c";
574 #address-cells = <1>;
576 reg = <0x8000 0x100>;
579 pinctrl-0 = <&twsi3_pmux>;
580 pinctrl-names = "default";
585 compatible = "snps,dw-apb-uart";
586 reg = <0x9000 0x100>;
590 pinctrl-0 = <&uart0_pmux>;
591 pinctrl-names = "default";
596 compatible = "snps,dw-apb-uart";
597 reg = <0xa000 0x100>;
601 pinctrl-0 = <&uart1_pmux>;
602 pinctrl-names = "default";
606 sm_gpio0: gpio@c000 {
607 compatible = "snps,dw-apb-gpio";
608 reg = <0xc000 0x400>;
609 #address-cells = <1>;
613 compatible = "snps,dw-apb-gpio-port";
616 snps,nr-gpios = <32>;
621 sysctrl: pin-controller@d000 {
622 compatible = "simple-mfd", "syscon";
623 reg = <0xd000 0x100>;
625 sys_pinctrl: pin-controller {
626 compatible = "marvell,berlin2q-system-pinctrl";
628 uart0_pmux: uart0-pmux {
633 uart1_pmux: uart1-pmux {
638 twsi2_pmux: twsi2-pmux {
643 twsi3_pmux: twsi3-pmux {
650 compatible = "marvell,berlin2-adc";
651 interrupts = <12>, <14>;
652 interrupt-names = "adc", "tsen";
656 sic: interrupt-controller@e000 {
657 compatible = "snps,dw-apb-ictl";
659 interrupt-controller;
660 #interrupt-cells = <1>;
661 interrupt-parent = <&gic>;
662 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;