2 * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com>
4 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
9 * a) This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
15 * b) Permission is hereby granted, free of charge, to any person
16 * obtaining a copy of this software and associated documentation
17 * files (the "Software"), to deal in the Software without
18 * restriction, including without limitation the rights to use,
19 * copy, modify, merge, publish, distribute, sublicense, and/or
20 * sell copies of the Software, and to permit persons to whom the
21 * Software is furnished to do so, subject to the following
24 * The above copyright notice and this permission notice shall be
25 * included in all copies or substantial portions of the Software.
27 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
29 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
31 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
32 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
33 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
34 * OTHER DEALINGS IN THE SOFTWARE.
37 #include <dt-bindings/clock/berlin2q.h>
38 #include <dt-bindings/interrupt-controller/arm-gic.h>
40 #include "skeleton.dtsi"
43 model = "Marvell Armada 1500 pro (BG2-Q) SoC";
44 compatible = "marvell,berlin2q", "marvell,berlin";
54 enable-method = "marvell,berlin-smp";
57 compatible = "arm,cortex-a9";
59 next-level-cache = <&l2>;
62 clocks = <&chip_clk CLKID_CPU>;
63 clock-latency = <100000>;
64 /* Can be modified by the bootloader */
75 compatible = "arm,cortex-a9";
77 next-level-cache = <&l2>;
82 compatible = "arm,cortex-a9";
84 next-level-cache = <&l2>;
89 compatible = "arm,cortex-a9";
91 next-level-cache = <&l2>;
97 compatible = "fixed-clock";
99 clock-frequency = <25000000>;
103 compatible = "simple-bus";
104 #address-cells = <1>;
107 ranges = <0 0xf7000000 0x1000000>;
108 interrupt-parent = <&gic>;
111 compatible = "arm,cortex-a9-pmu";
112 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
113 <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
114 <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
115 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
118 sdhci0: sdhci@ab0000 {
119 compatible = "mrvl,pxav3-mmc";
120 reg = <0xab0000 0x200>;
121 clocks = <&chip_clk CLKID_SDIO1XIN>;
122 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
126 sdhci1: sdhci@ab0800 {
127 compatible = "mrvl,pxav3-mmc";
128 reg = <0xab0800 0x200>;
129 clocks = <&chip_clk CLKID_SDIO1XIN>;
130 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
134 sdhci2: sdhci@ab1000 {
135 compatible = "mrvl,pxav3-mmc";
136 reg = <0xab1000 0x200>;
137 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
138 clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_NFC>;
139 clock-names = "io", "core";
143 l2: l2-cache-controller@ac0000 {
144 compatible = "arm,pl310-cache";
145 reg = <0xac0000 0x1000>;
147 arm,data-latency = <2 2 2>;
148 arm,tag-latency = <2 2 2>;
151 scu: snoop-control-unit@ad0000 {
152 compatible = "arm,cortex-a9-scu";
153 reg = <0xad0000 0x58>;
157 compatible = "arm,cortex-a9-twd-timer";
158 reg = <0xad0600 0x20>;
159 clocks = <&chip_clk CLKID_TWD>;
160 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
163 gic: interrupt-controller@ad1000 {
164 compatible = "arm,cortex-a9-gic";
165 reg = <0xad1000 0x1000>, <0xad0100 0x100>;
166 interrupt-controller;
167 #interrupt-cells = <3>;
170 usb_phy2: phy@a2f400 {
171 compatible = "marvell,berlin2cd-usb-phy";
172 reg = <0xa2f400 0x128>;
174 resets = <&chip_rst 0x104 14>;
179 compatible = "chipidea,usb2";
180 reg = <0xa30000 0x10000>;
181 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
182 clocks = <&chip_clk CLKID_USB2>;
184 phy-names = "usb-phy";
188 usb_phy0: phy@b74000 {
189 compatible = "marvell,berlin2cd-usb-phy";
190 reg = <0xb74000 0x128>;
192 resets = <&chip_rst 0x104 12>;
196 usb_phy1: phy@b78000 {
197 compatible = "marvell,berlin2cd-usb-phy";
198 reg = <0xb78000 0x128>;
200 resets = <&chip_rst 0x104 13>;
204 eth0: ethernet@b90000 {
205 compatible = "marvell,pxa168-eth";
206 reg = <0xb90000 0x10000>;
207 clocks = <&chip_clk CLKID_GETH0>;
208 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
209 /* set by bootloader */
210 local-mac-address = [00 00 00 00 00 00];
211 #address-cells = <1>;
213 phy-connection-type = "mii";
214 phy-handle = <ðphy0>;
217 ethphy0: ethernet-phy@0 {
223 compatible = "marvell,berlin-cpu-ctrl";
224 reg = <0xdd0000 0x10000>;
228 compatible = "simple-bus";
229 #address-cells = <1>;
232 ranges = <0 0xe80000 0x10000>;
233 interrupt-parent = <&aic>;
236 compatible = "snps,dw-apb-gpio";
237 reg = <0x0400 0x400>;
238 #address-cells = <1>;
242 compatible = "snps,dw-apb-gpio-port";
245 snps,nr-gpios = <32>;
247 interrupt-controller;
248 #interrupt-cells = <2>;
254 compatible = "snps,dw-apb-gpio";
255 reg = <0x0800 0x400>;
256 #address-cells = <1>;
260 compatible = "snps,dw-apb-gpio-port";
263 snps,nr-gpios = <32>;
265 interrupt-controller;
266 #interrupt-cells = <2>;
272 compatible = "snps,dw-apb-gpio";
273 reg = <0x0c00 0x400>;
274 #address-cells = <1>;
278 compatible = "snps,dw-apb-gpio-port";
281 snps,nr-gpios = <32>;
283 interrupt-controller;
284 #interrupt-cells = <2>;
290 compatible = "snps,dw-apb-gpio";
291 reg = <0x1000 0x400>;
292 #address-cells = <1>;
296 compatible = "snps,dw-apb-gpio-port";
299 snps,nr-gpios = <32>;
301 interrupt-controller;
302 #interrupt-cells = <2>;
308 compatible = "snps,designware-i2c";
309 #address-cells = <1>;
311 reg = <0x1400 0x100>;
312 interrupt-parent = <&aic>;
314 clocks = <&chip_clk CLKID_CFG>;
315 pinctrl-0 = <&twsi0_pmux>;
316 pinctrl-names = "default";
321 compatible = "snps,designware-i2c";
322 #address-cells = <1>;
324 reg = <0x1800 0x100>;
325 interrupt-parent = <&aic>;
327 clocks = <&chip_clk CLKID_CFG>;
328 pinctrl-0 = <&twsi1_pmux>;
329 pinctrl-names = "default";
334 compatible = "snps,dw-apb-timer";
336 clocks = <&chip_clk CLKID_CFG>;
337 clock-names = "timer";
342 compatible = "snps,dw-apb-timer";
344 clocks = <&chip_clk CLKID_CFG>;
345 clock-names = "timer";
349 compatible = "snps,dw-apb-timer";
351 clocks = <&chip_clk CLKID_CFG>;
352 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";
396 aic: interrupt-controller@3800 {
397 compatible = "snps,dw-apb-ictl";
399 interrupt-controller;
400 #interrupt-cells = <1>;
401 interrupt-parent = <&gic>;
402 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
406 chip: chip-control@ea0000 {
407 compatible = "simple-mfd", "syscon";
408 reg = <0xea0000 0x400>, <0xdd0170 0x10>;
411 compatible = "marvell,berlin2q-clk";
414 clock-names = "refclk";
417 soc_pinctrl: pin-controller {
418 compatible = "marvell,berlin2q-soc-pinctrl";
420 twsi0_pmux: twsi0-pmux {
425 twsi1_pmux: twsi1-pmux {
432 compatible = "marvell,berlin2-reset";
438 compatible = "marvell,berlin2q-ahci", "generic-ahci";
439 reg = <0xe90000 0x1000>;
440 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
441 clocks = <&chip_clk CLKID_SATA>;
442 #address-cells = <1>;
447 phys = <&sata_phy 0>;
453 phys = <&sata_phy 1>;
458 sata_phy: phy@e900a0 {
459 compatible = "marvell,berlin2q-sata-phy";
460 reg = <0xe900a0 0x200>;
461 clocks = <&chip_clk CLKID_SATA>;
462 #address-cells = <1>;
477 compatible = "chipidea,usb2";
478 reg = <0xed0000 0x10000>;
479 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
480 clocks = <&chip_clk CLKID_USB0>;
482 phy-names = "usb-phy";
487 compatible = "chipidea,usb2";
488 reg = <0xee0000 0x10000>;
489 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
490 clocks = <&chip_clk CLKID_USB1>;
492 phy-names = "usb-phy";
497 compatible = "marvell,berlin-pwm";
498 reg = <0xf20000 0x40>;
499 clocks = <&chip_clk CLKID_CFG>;
504 compatible = "simple-bus";
505 #address-cells = <1>;
508 ranges = <0 0xfc0000 0x10000>;
509 interrupt-parent = <&sic>;
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>;
531 interrupt-parent = <&sic>;
534 pinctrl-0 = <&twsi2_pmux>;
535 pinctrl-names = "default";
540 compatible = "snps,designware-i2c";
541 #address-cells = <1>;
543 reg = <0x8000 0x100>;
544 interrupt-parent = <&sic>;
547 pinctrl-0 = <&twsi3_pmux>;
548 pinctrl-names = "default";
553 compatible = "snps,dw-apb-uart";
554 reg = <0x9000 0x100>;
555 interrupt-parent = <&sic>;
559 pinctrl-0 = <&uart0_pmux>;
560 pinctrl-names = "default";
565 compatible = "snps,dw-apb-uart";
566 reg = <0xa000 0x100>;
567 interrupt-parent = <&sic>;
571 pinctrl-0 = <&uart1_pmux>;
572 pinctrl-names = "default";
576 sm_gpio0: gpio@c000 {
577 compatible = "snps,dw-apb-gpio";
578 reg = <0xc000 0x400>;
579 #address-cells = <1>;
583 compatible = "snps,dw-apb-gpio-port";
586 snps,nr-gpios = <32>;
591 sysctrl: pin-controller@d000 {
592 compatible = "simple-mfd", "syscon";
593 reg = <0xd000 0x100>;
595 sys_pinctrl: pin-controller {
596 compatible = "marvell,berlin2q-system-pinctrl";
598 uart0_pmux: uart0-pmux {
603 uart1_pmux: uart1-pmux {
608 twsi2_pmux: twsi2-pmux {
613 twsi3_pmux: twsi3-pmux {
620 compatible = "marvell,berlin2-adc";
621 interrupts = <12>, <14>;
622 interrupt-names = "adc", "tsen";
626 sic: interrupt-controller@e000 {
627 compatible = "snps,dw-apb-ictl";
629 interrupt-controller;
630 #interrupt-cells = <1>;
631 interrupt-parent = <&gic>;
632 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;