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>;
51 compatible = "arm,cortex-a9";
53 next-level-cache = <&l2>;
58 compatible = "arm,cortex-a9";
60 next-level-cache = <&l2>;
66 compatible = "fixed-clock";
68 clock-frequency = <25000000>;
72 compatible = "simple-bus";
76 ranges = <0 0xf7000000 0x1000000>;
77 interrupt-parent = <&gic>;
80 compatible = "arm,cortex-a9-pmu";
81 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
83 <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
84 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
85 interrupt-affinity = <&cpu0>,
91 sdhci0: sdhci@ab0000 {
92 compatible = "mrvl,pxav3-mmc";
93 reg = <0xab0000 0x200>;
94 clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
95 clock-names = "io", "core";
96 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
100 sdhci1: sdhci@ab0800 {
101 compatible = "mrvl,pxav3-mmc";
102 reg = <0xab0800 0x200>;
103 clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
104 clock-names = "io", "core";
105 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
109 sdhci2: sdhci@ab1000 {
110 compatible = "mrvl,pxav3-mmc";
111 reg = <0xab1000 0x200>;
112 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
113 clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>;
114 clock-names = "io", "core";
118 l2: l2-cache-controller@ac0000 {
119 compatible = "arm,pl310-cache";
120 reg = <0xac0000 0x1000>;
123 arm,data-latency = <2 2 2>;
124 arm,tag-latency = <2 2 2>;
127 scu: snoop-control-unit@ad0000 {
128 compatible = "arm,cortex-a9-scu";
129 reg = <0xad0000 0x58>;
133 compatible = "arm,cortex-a9-twd-timer";
134 reg = <0xad0600 0x20>;
135 clocks = <&chip_clk CLKID_TWD>;
136 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
139 gic: interrupt-controller@ad1000 {
140 compatible = "arm,cortex-a9-gic";
141 reg = <0xad1000 0x1000>, <0xad0100 0x100>;
142 interrupt-controller;
143 #interrupt-cells = <3>;
146 usb_phy2: phy@a2f400 {
147 compatible = "marvell,berlin2cd-usb-phy";
148 reg = <0xa2f400 0x128>;
150 resets = <&chip_rst 0x104 14>;
155 compatible = "chipidea,usb2";
156 reg = <0xa30000 0x10000>;
157 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
158 clocks = <&chip_clk CLKID_USB2>;
160 phy-names = "usb-phy";
164 usb_phy0: phy@b74000 {
165 compatible = "marvell,berlin2cd-usb-phy";
166 reg = <0xb74000 0x128>;
168 resets = <&chip_rst 0x104 12>;
172 usb_phy1: phy@b78000 {
173 compatible = "marvell,berlin2cd-usb-phy";
174 reg = <0xb78000 0x128>;
176 resets = <&chip_rst 0x104 13>;
180 eth0: ethernet@b90000 {
181 compatible = "marvell,pxa168-eth";
182 reg = <0xb90000 0x10000>;
183 clocks = <&chip_clk CLKID_GETH0>;
184 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
185 /* set by bootloader */
186 local-mac-address = [00 00 00 00 00 00];
187 #address-cells = <1>;
189 phy-connection-type = "mii";
190 phy-handle = <ðphy0>;
193 ethphy0: ethernet-phy@0 {
199 compatible = "marvell,berlin-cpu-ctrl";
200 reg = <0xdd0000 0x10000>;
204 compatible = "simple-bus";
205 #address-cells = <1>;
208 ranges = <0 0xe80000 0x10000>;
209 interrupt-parent = <&aic>;
212 compatible = "snps,dw-apb-gpio";
213 reg = <0x0400 0x400>;
214 #address-cells = <1>;
218 compatible = "snps,dw-apb-gpio-port";
221 snps,nr-gpios = <32>;
223 interrupt-controller;
224 #interrupt-cells = <2>;
230 compatible = "snps,dw-apb-gpio";
231 reg = <0x0800 0x400>;
232 #address-cells = <1>;
236 compatible = "snps,dw-apb-gpio-port";
239 snps,nr-gpios = <32>;
241 interrupt-controller;
242 #interrupt-cells = <2>;
248 compatible = "snps,dw-apb-gpio";
249 reg = <0x0c00 0x400>;
250 #address-cells = <1>;
254 compatible = "snps,dw-apb-gpio-port";
257 snps,nr-gpios = <32>;
259 interrupt-controller;
260 #interrupt-cells = <2>;
266 compatible = "snps,dw-apb-gpio";
267 reg = <0x1000 0x400>;
268 #address-cells = <1>;
272 compatible = "snps,dw-apb-gpio-port";
275 snps,nr-gpios = <32>;
277 interrupt-controller;
278 #interrupt-cells = <2>;
284 compatible = "snps,designware-i2c";
285 #address-cells = <1>;
287 reg = <0x1400 0x100>;
289 clocks = <&chip_clk CLKID_CFG>;
290 pinctrl-0 = <&twsi0_pmux>;
291 pinctrl-names = "default";
296 compatible = "snps,designware-i2c";
297 #address-cells = <1>;
299 reg = <0x1800 0x100>;
301 clocks = <&chip_clk CLKID_CFG>;
302 pinctrl-0 = <&twsi1_pmux>;
303 pinctrl-names = "default";
308 compatible = "snps,dw-apb-timer";
310 clocks = <&chip_clk CLKID_CFG>;
311 clock-names = "timer";
316 compatible = "snps,dw-apb-timer";
318 clocks = <&chip_clk CLKID_CFG>;
319 clock-names = "timer";
323 compatible = "snps,dw-apb-timer";
325 clocks = <&chip_clk CLKID_CFG>;
326 clock-names = "timer";
331 compatible = "snps,dw-apb-timer";
333 clocks = <&chip_clk CLKID_CFG>;
334 clock-names = "timer";
339 compatible = "snps,dw-apb-timer";
341 clocks = <&chip_clk CLKID_CFG>;
342 clock-names = "timer";
347 compatible = "snps,dw-apb-timer";
349 clocks = <&chip_clk CLKID_CFG>;
350 clock-names = "timer";
355 compatible = "snps,dw-apb-timer";
357 clocks = <&chip_clk CLKID_CFG>;
358 clock-names = "timer";
363 compatible = "snps,dw-apb-timer";
365 clocks = <&chip_clk CLKID_CFG>;
366 clock-names = "timer";
370 aic: interrupt-controller@3800 {
371 compatible = "snps,dw-apb-ictl";
373 interrupt-controller;
374 #interrupt-cells = <1>;
375 interrupt-parent = <&gic>;
376 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
380 chip: chip-control@ea0000 {
381 compatible = "simple-mfd", "syscon";
382 reg = <0xea0000 0x400>, <0xdd0170 0x10>;
385 compatible = "marvell,berlin2q-clk";
388 clock-names = "refclk";
391 soc_pinctrl: pin-controller {
392 compatible = "marvell,berlin2q-soc-pinctrl";
399 twsi0_pmux: twsi0-pmux {
404 twsi1_pmux: twsi1-pmux {
411 compatible = "marvell,berlin2-reset";
417 compatible = "marvell,berlin2q-ahci", "generic-ahci";
418 reg = <0xe90000 0x1000>;
419 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
420 clocks = <&chip_clk CLKID_SATA>;
421 #address-cells = <1>;
426 phys = <&sata_phy 0>;
432 phys = <&sata_phy 1>;
437 sata_phy: phy@e900a0 {
438 compatible = "marvell,berlin2q-sata-phy";
439 reg = <0xe900a0 0x200>;
440 clocks = <&chip_clk CLKID_SATA>;
441 #address-cells = <1>;
456 compatible = "chipidea,usb2";
457 reg = <0xed0000 0x10000>;
458 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
459 clocks = <&chip_clk CLKID_USB0>;
461 phy-names = "usb-phy";
466 compatible = "chipidea,usb2";
467 reg = <0xee0000 0x10000>;
468 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
469 clocks = <&chip_clk CLKID_USB1>;
471 phy-names = "usb-phy";
476 compatible = "marvell,berlin-pwm";
477 reg = <0xf20000 0x40>;
478 clocks = <&chip_clk CLKID_CFG>;
483 compatible = "simple-bus";
484 #address-cells = <1>;
487 ranges = <0 0xfc0000 0x10000>;
488 interrupt-parent = <&sic>;
490 wdt0: watchdog@1000 {
491 compatible = "snps,dw-wdt";
492 reg = <0x1000 0x100>;
497 wdt1: watchdog@2000 {
498 compatible = "snps,dw-wdt";
499 reg = <0x2000 0x100>;
504 wdt2: watchdog@3000 {
505 compatible = "snps,dw-wdt";
506 reg = <0x3000 0x100>;
511 sm_gpio1: gpio@5000 {
512 compatible = "snps,dw-apb-gpio";
513 reg = <0x5000 0x400>;
514 #address-cells = <1>;
518 compatible = "snps,dw-apb-gpio-port";
521 snps,nr-gpios = <32>;
527 compatible = "snps,designware-i2c";
528 #address-cells = <1>;
530 reg = <0x7000 0x100>;
533 pinctrl-0 = <&twsi2_pmux>;
534 pinctrl-names = "default";
539 compatible = "snps,designware-i2c";
540 #address-cells = <1>;
542 reg = <0x8000 0x100>;
545 pinctrl-0 = <&twsi3_pmux>;
546 pinctrl-names = "default";
551 compatible = "snps,dw-apb-uart";
552 reg = <0x9000 0x100>;
556 pinctrl-0 = <&uart0_pmux>;
557 pinctrl-names = "default";
562 compatible = "snps,dw-apb-uart";
563 reg = <0xa000 0x100>;
567 pinctrl-0 = <&uart1_pmux>;
568 pinctrl-names = "default";
572 sm_gpio0: gpio@c000 {
573 compatible = "snps,dw-apb-gpio";
574 reg = <0xc000 0x400>;
575 #address-cells = <1>;
579 compatible = "snps,dw-apb-gpio-port";
582 snps,nr-gpios = <32>;
587 sysctrl: pin-controller@d000 {
588 compatible = "simple-mfd", "syscon";
589 reg = <0xd000 0x100>;
591 sys_pinctrl: pin-controller {
592 compatible = "marvell,berlin2q-system-pinctrl";
594 uart0_pmux: uart0-pmux {
599 uart1_pmux: uart1-pmux {
604 twsi2_pmux: twsi2-pmux {
609 twsi3_pmux: twsi3-pmux {
616 compatible = "marvell,berlin2-adc";
617 interrupts = <12>, <14>;
618 interrupt-names = "adc", "tsen";
622 sic: interrupt-controller@e000 {
623 compatible = "snps,dw-apb-ictl";
625 interrupt-controller;
626 #interrupt-cells = <1>;
627 interrupt-parent = <&gic>;
628 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;