Loading...
1/*
2 * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com>
3 *
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
7 * whole.
8 *
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.
12 *
13 * Or, alternatively,
14 *
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
22 * conditions:
23 *
24 * The above copyright notice and this permission notice shall be
25 * included in all copies or substantial portions of the Software.
26 *
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.
35 */
36
37#include <dt-bindings/clock/berlin2q.h>
38#include <dt-bindings/interrupt-controller/arm-gic.h>
39
40/ {
41 model = "Marvell Armada 1500 pro (BG2-Q) SoC";
42 compatible = "marvell,berlin2q", "marvell,berlin";
43 #address-cells = <1>;
44 #size-cells = <1>;
45
46 aliases {
47 serial0 = &uart0;
48 serial1 = &uart1;
49 };
50
51 cpus {
52 #address-cells = <1>;
53 #size-cells = <0>;
54 enable-method = "marvell,berlin-smp";
55
56 cpu@0 {
57 compatible = "arm,cortex-a9";
58 device_type = "cpu";
59 next-level-cache = <&l2>;
60 reg = <0>;
61
62 clocks = <&chip_clk CLKID_CPU>;
63 clock-latency = <100000>;
64 /* Can be modified by the bootloader */
65 operating-points = <
66 /* kHz uV */
67 1200000 1200000
68 1000000 1200000
69 800000 1200000
70 600000 1200000
71 >;
72 };
73
74 cpu@1 {
75 compatible = "arm,cortex-a9";
76 device_type = "cpu";
77 next-level-cache = <&l2>;
78 reg = <1>;
79 };
80
81 cpu@2 {
82 compatible = "arm,cortex-a9";
83 device_type = "cpu";
84 next-level-cache = <&l2>;
85 reg = <2>;
86 };
87
88 cpu@3 {
89 compatible = "arm,cortex-a9";
90 device_type = "cpu";
91 next-level-cache = <&l2>;
92 reg = <3>;
93 };
94 };
95
96 refclk: oscillator {
97 compatible = "fixed-clock";
98 #clock-cells = <0>;
99 clock-frequency = <25000000>;
100 };
101
102 soc@f7000000 {
103 compatible = "simple-bus";
104 #address-cells = <1>;
105 #size-cells = <1>;
106
107 ranges = <0 0xf7000000 0x1000000>;
108 interrupt-parent = <&gic>;
109
110 pmu {
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>;
116 };
117
118 sdhci0: sdhci@ab0000 {
119 compatible = "mrvl,pxav3-mmc";
120 reg = <0xab0000 0x200>;
121 clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
122 clock-names = "io", "core";
123 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
124 status = "disabled";
125 };
126
127 sdhci1: sdhci@ab0800 {
128 compatible = "mrvl,pxav3-mmc";
129 reg = <0xab0800 0x200>;
130 clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
131 clock-names = "io", "core";
132 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
133 status = "disabled";
134 };
135
136 sdhci2: sdhci@ab1000 {
137 compatible = "mrvl,pxav3-mmc";
138 reg = <0xab1000 0x200>;
139 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
140 clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>;
141 clock-names = "io", "core";
142 status = "disabled";
143 };
144
145 l2: l2-cache-controller@ac0000 {
146 compatible = "arm,pl310-cache";
147 reg = <0xac0000 0x1000>;
148 cache-level = <2>;
149 arm,data-latency = <2 2 2>;
150 arm,tag-latency = <2 2 2>;
151 };
152
153 scu: snoop-control-unit@ad0000 {
154 compatible = "arm,cortex-a9-scu";
155 reg = <0xad0000 0x58>;
156 };
157
158 local-timer@ad0600 {
159 compatible = "arm,cortex-a9-twd-timer";
160 reg = <0xad0600 0x20>;
161 clocks = <&chip_clk CLKID_TWD>;
162 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
163 };
164
165 gic: interrupt-controller@ad1000 {
166 compatible = "arm,cortex-a9-gic";
167 reg = <0xad1000 0x1000>, <0xad0100 0x100>;
168 interrupt-controller;
169 #interrupt-cells = <3>;
170 };
171
172 usb_phy2: phy@a2f400 {
173 compatible = "marvell,berlin2cd-usb-phy";
174 reg = <0xa2f400 0x128>;
175 #phy-cells = <0>;
176 resets = <&chip_rst 0x104 14>;
177 status = "disabled";
178 };
179
180 usb2: usb@a30000 {
181 compatible = "chipidea,usb2";
182 reg = <0xa30000 0x10000>;
183 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
184 clocks = <&chip_clk CLKID_USB2>;
185 phys = <&usb_phy2>;
186 phy-names = "usb-phy";
187 status = "disabled";
188 };
189
190 usb_phy0: phy@b74000 {
191 compatible = "marvell,berlin2cd-usb-phy";
192 reg = <0xb74000 0x128>;
193 #phy-cells = <0>;
194 resets = <&chip_rst 0x104 12>;
195 status = "disabled";
196 };
197
198 usb_phy1: phy@b78000 {
199 compatible = "marvell,berlin2cd-usb-phy";
200 reg = <0xb78000 0x128>;
201 #phy-cells = <0>;
202 resets = <&chip_rst 0x104 13>;
203 status = "disabled";
204 };
205
206 eth0: ethernet@b90000 {
207 compatible = "marvell,pxa168-eth";
208 reg = <0xb90000 0x10000>;
209 clocks = <&chip_clk CLKID_GETH0>;
210 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
211 /* set by bootloader */
212 local-mac-address = [00 00 00 00 00 00];
213 #address-cells = <1>;
214 #size-cells = <0>;
215 phy-connection-type = "mii";
216 phy-handle = <ðphy0>;
217 status = "disabled";
218
219 ethphy0: ethernet-phy@0 {
220 reg = <0>;
221 };
222 };
223
224 cpu-ctrl@dd0000 {
225 compatible = "marvell,berlin-cpu-ctrl";
226 reg = <0xdd0000 0x10000>;
227 };
228
229 apb@e80000 {
230 compatible = "simple-bus";
231 #address-cells = <1>;
232 #size-cells = <1>;
233
234 ranges = <0 0xe80000 0x10000>;
235 interrupt-parent = <&aic>;
236
237 gpio0: gpio@400 {
238 compatible = "snps,dw-apb-gpio";
239 reg = <0x0400 0x400>;
240 #address-cells = <1>;
241 #size-cells = <0>;
242
243 porta: gpio-port@0 {
244 compatible = "snps,dw-apb-gpio-port";
245 gpio-controller;
246 #gpio-cells = <2>;
247 snps,nr-gpios = <32>;
248 reg = <0>;
249 interrupt-controller;
250 #interrupt-cells = <2>;
251 interrupts = <0>;
252 };
253 };
254
255 gpio1: gpio@800 {
256 compatible = "snps,dw-apb-gpio";
257 reg = <0x0800 0x400>;
258 #address-cells = <1>;
259 #size-cells = <0>;
260
261 portb: gpio-port@1 {
262 compatible = "snps,dw-apb-gpio-port";
263 gpio-controller;
264 #gpio-cells = <2>;
265 snps,nr-gpios = <32>;
266 reg = <0>;
267 interrupt-controller;
268 #interrupt-cells = <2>;
269 interrupts = <1>;
270 };
271 };
272
273 gpio2: gpio@c00 {
274 compatible = "snps,dw-apb-gpio";
275 reg = <0x0c00 0x400>;
276 #address-cells = <1>;
277 #size-cells = <0>;
278
279 portc: gpio-port@2 {
280 compatible = "snps,dw-apb-gpio-port";
281 gpio-controller;
282 #gpio-cells = <2>;
283 snps,nr-gpios = <32>;
284 reg = <0>;
285 interrupt-controller;
286 #interrupt-cells = <2>;
287 interrupts = <2>;
288 };
289 };
290
291 gpio3: gpio@1000 {
292 compatible = "snps,dw-apb-gpio";
293 reg = <0x1000 0x400>;
294 #address-cells = <1>;
295 #size-cells = <0>;
296
297 portd: gpio-port@3 {
298 compatible = "snps,dw-apb-gpio-port";
299 gpio-controller;
300 #gpio-cells = <2>;
301 snps,nr-gpios = <32>;
302 reg = <0>;
303 interrupt-controller;
304 #interrupt-cells = <2>;
305 interrupts = <3>;
306 };
307 };
308
309 i2c0: i2c@1400 {
310 compatible = "snps,designware-i2c";
311 #address-cells = <1>;
312 #size-cells = <0>;
313 reg = <0x1400 0x100>;
314 interrupts = <4>;
315 clocks = <&chip_clk CLKID_CFG>;
316 pinctrl-0 = <&twsi0_pmux>;
317 pinctrl-names = "default";
318 status = "disabled";
319 };
320
321 i2c1: i2c@1800 {
322 compatible = "snps,designware-i2c";
323 #address-cells = <1>;
324 #size-cells = <0>;
325 reg = <0x1800 0x100>;
326 interrupts = <5>;
327 clocks = <&chip_clk CLKID_CFG>;
328 pinctrl-0 = <&twsi1_pmux>;
329 pinctrl-names = "default";
330 status = "disabled";
331 };
332
333 timer0: timer@2c00 {
334 compatible = "snps,dw-apb-timer";
335 reg = <0x2c00 0x14>;
336 clocks = <&chip_clk CLKID_CFG>;
337 clock-names = "timer";
338 interrupts = <8>;
339 };
340
341 timer1: timer@2c14 {
342 compatible = "snps,dw-apb-timer";
343 reg = <0x2c14 0x14>;
344 clocks = <&chip_clk CLKID_CFG>;
345 clock-names = "timer";
346 };
347
348 timer2: timer@2c28 {
349 compatible = "snps,dw-apb-timer";
350 reg = <0x2c28 0x14>;
351 clocks = <&chip_clk CLKID_CFG>;
352 clock-names = "timer";
353 status = "disabled";
354 };
355
356 timer3: timer@2c3c {
357 compatible = "snps,dw-apb-timer";
358 reg = <0x2c3c 0x14>;
359 clocks = <&chip_clk CLKID_CFG>;
360 clock-names = "timer";
361 status = "disabled";
362 };
363
364 timer4: timer@2c50 {
365 compatible = "snps,dw-apb-timer";
366 reg = <0x2c50 0x14>;
367 clocks = <&chip_clk CLKID_CFG>;
368 clock-names = "timer";
369 status = "disabled";
370 };
371
372 timer5: timer@2c64 {
373 compatible = "snps,dw-apb-timer";
374 reg = <0x2c64 0x14>;
375 clocks = <&chip_clk CLKID_CFG>;
376 clock-names = "timer";
377 status = "disabled";
378 };
379
380 timer6: timer@2c78 {
381 compatible = "snps,dw-apb-timer";
382 reg = <0x2c78 0x14>;
383 clocks = <&chip_clk CLKID_CFG>;
384 clock-names = "timer";
385 status = "disabled";
386 };
387
388 timer7: timer@2c8c {
389 compatible = "snps,dw-apb-timer";
390 reg = <0x2c8c 0x14>;
391 clocks = <&chip_clk CLKID_CFG>;
392 clock-names = "timer";
393 status = "disabled";
394 };
395
396 aic: interrupt-controller@3800 {
397 compatible = "snps,dw-apb-ictl";
398 reg = <0x3800 0x30>;
399 interrupt-controller;
400 #interrupt-cells = <1>;
401 interrupt-parent = <&gic>;
402 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
403 };
404 };
405
406 chip: chip-control@ea0000 {
407 compatible = "simple-mfd", "syscon";
408 reg = <0xea0000 0x400>, <0xdd0170 0x10>;
409
410 chip_clk: clock {
411 compatible = "marvell,berlin2q-clk";
412 #clock-cells = <1>;
413 clocks = <&refclk>;
414 clock-names = "refclk";
415 };
416
417 soc_pinctrl: pin-controller {
418 compatible = "marvell,berlin2q-soc-pinctrl";
419
420 sd1_pmux: sd1-pmux {
421 groups = "G31";
422 function = "sd1";
423 };
424
425 twsi0_pmux: twsi0-pmux {
426 groups = "G6";
427 function = "twsi0";
428 };
429
430 twsi1_pmux: twsi1-pmux {
431 groups = "G7";
432 function = "twsi1";
433 };
434 };
435
436 chip_rst: reset {
437 compatible = "marvell,berlin2-reset";
438 #reset-cells = <2>;
439 };
440 };
441
442 ahci: sata@e90000 {
443 compatible = "marvell,berlin2q-ahci", "generic-ahci";
444 reg = <0xe90000 0x1000>;
445 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
446 clocks = <&chip_clk CLKID_SATA>;
447 #address-cells = <1>;
448 #size-cells = <0>;
449
450 sata0: sata-port@0 {
451 reg = <0>;
452 phys = <&sata_phy 0>;
453 status = "disabled";
454 };
455
456 sata1: sata-port@1 {
457 reg = <1>;
458 phys = <&sata_phy 1>;
459 status = "disabled";
460 };
461 };
462
463 sata_phy: phy@e900a0 {
464 compatible = "marvell,berlin2q-sata-phy";
465 reg = <0xe900a0 0x200>;
466 clocks = <&chip_clk CLKID_SATA>;
467 #address-cells = <1>;
468 #size-cells = <0>;
469 #phy-cells = <1>;
470 status = "disabled";
471
472 sata-phy@0 {
473 reg = <0>;
474 };
475
476 sata-phy@1 {
477 reg = <1>;
478 };
479 };
480
481 usb0: usb@ed0000 {
482 compatible = "chipidea,usb2";
483 reg = <0xed0000 0x10000>;
484 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
485 clocks = <&chip_clk CLKID_USB0>;
486 phys = <&usb_phy0>;
487 phy-names = "usb-phy";
488 status = "disabled";
489 };
490
491 usb1: usb@ee0000 {
492 compatible = "chipidea,usb2";
493 reg = <0xee0000 0x10000>;
494 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
495 clocks = <&chip_clk CLKID_USB1>;
496 phys = <&usb_phy1>;
497 phy-names = "usb-phy";
498 status = "disabled";
499 };
500
501 pwm: pwm@f20000 {
502 compatible = "marvell,berlin-pwm";
503 reg = <0xf20000 0x40>;
504 clocks = <&chip_clk CLKID_CFG>;
505 #pwm-cells = <3>;
506 };
507
508 apb@fc0000 {
509 compatible = "simple-bus";
510 #address-cells = <1>;
511 #size-cells = <1>;
512
513 ranges = <0 0xfc0000 0x10000>;
514 interrupt-parent = <&sic>;
515
516 wdt0: watchdog@1000 {
517 compatible = "snps,dw-wdt";
518 reg = <0x1000 0x100>;
519 clocks = <&refclk>;
520 interrupts = <0>;
521 };
522
523 wdt1: watchdog@2000 {
524 compatible = "snps,dw-wdt";
525 reg = <0x2000 0x100>;
526 clocks = <&refclk>;
527 interrupts = <1>;
528 };
529
530 wdt2: watchdog@3000 {
531 compatible = "snps,dw-wdt";
532 reg = <0x3000 0x100>;
533 clocks = <&refclk>;
534 interrupts = <2>;
535 };
536
537 sm_gpio1: gpio@5000 {
538 compatible = "snps,dw-apb-gpio";
539 reg = <0x5000 0x400>;
540 #address-cells = <1>;
541 #size-cells = <0>;
542
543 portf: gpio-port@5 {
544 compatible = "snps,dw-apb-gpio-port";
545 gpio-controller;
546 #gpio-cells = <2>;
547 snps,nr-gpios = <32>;
548 reg = <0>;
549 };
550 };
551
552 i2c2: i2c@7000 {
553 compatible = "snps,designware-i2c";
554 #address-cells = <1>;
555 #size-cells = <0>;
556 reg = <0x7000 0x100>;
557 interrupts = <6>;
558 clocks = <&refclk>;
559 pinctrl-0 = <&twsi2_pmux>;
560 pinctrl-names = "default";
561 status = "disabled";
562 };
563
564 i2c3: i2c@8000 {
565 compatible = "snps,designware-i2c";
566 #address-cells = <1>;
567 #size-cells = <0>;
568 reg = <0x8000 0x100>;
569 interrupts = <7>;
570 clocks = <&refclk>;
571 pinctrl-0 = <&twsi3_pmux>;
572 pinctrl-names = "default";
573 status = "disabled";
574 };
575
576 uart0: uart@9000 {
577 compatible = "snps,dw-apb-uart";
578 reg = <0x9000 0x100>;
579 interrupts = <8>;
580 clocks = <&refclk>;
581 reg-shift = <2>;
582 pinctrl-0 = <&uart0_pmux>;
583 pinctrl-names = "default";
584 status = "disabled";
585 };
586
587 uart1: uart@a000 {
588 compatible = "snps,dw-apb-uart";
589 reg = <0xa000 0x100>;
590 interrupts = <9>;
591 clocks = <&refclk>;
592 reg-shift = <2>;
593 pinctrl-0 = <&uart1_pmux>;
594 pinctrl-names = "default";
595 status = "disabled";
596 };
597
598 sm_gpio0: gpio@c000 {
599 compatible = "snps,dw-apb-gpio";
600 reg = <0xc000 0x400>;
601 #address-cells = <1>;
602 #size-cells = <0>;
603
604 porte: gpio-port@4 {
605 compatible = "snps,dw-apb-gpio-port";
606 gpio-controller;
607 #gpio-cells = <2>;
608 snps,nr-gpios = <32>;
609 reg = <0>;
610 };
611 };
612
613 sysctrl: pin-controller@d000 {
614 compatible = "simple-mfd", "syscon";
615 reg = <0xd000 0x100>;
616
617 sys_pinctrl: pin-controller {
618 compatible = "marvell,berlin2q-system-pinctrl";
619
620 uart0_pmux: uart0-pmux {
621 groups = "GSM12";
622 function = "uart0";
623 };
624
625 uart1_pmux: uart1-pmux {
626 groups = "GSM14";
627 function = "uart1";
628 };
629
630 twsi2_pmux: twsi2-pmux {
631 groups = "GSM13";
632 function = "twsi2";
633 };
634
635 twsi3_pmux: twsi3-pmux {
636 groups = "GSM14";
637 function = "twsi3";
638 };
639 };
640
641 adc: adc {
642 compatible = "marvell,berlin2-adc";
643 interrupts = <12>, <14>;
644 interrupt-names = "adc", "tsen";
645 };
646 };
647
648 sic: interrupt-controller@e000 {
649 compatible = "snps,dw-apb-ictl";
650 reg = <0xe000 0x30>;
651 interrupt-controller;
652 #interrupt-cells = <1>;
653 interrupt-parent = <&gic>;
654 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
655 };
656 };
657 };
658};
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com>
4 */
5
6#include <dt-bindings/clock/berlin2q.h>
7#include <dt-bindings/interrupt-controller/arm-gic.h>
8
9/ {
10 model = "Marvell Armada 1500 pro (BG2-Q) SoC";
11 compatible = "marvell,berlin2q", "marvell,berlin";
12 #address-cells = <1>;
13 #size-cells = <1>;
14
15 aliases {
16 serial0 = &uart0;
17 serial1 = &uart1;
18 };
19
20 cpus {
21 #address-cells = <1>;
22 #size-cells = <0>;
23 enable-method = "marvell,berlin-smp";
24
25 cpu0: cpu@0 {
26 compatible = "arm,cortex-a9";
27 device_type = "cpu";
28 next-level-cache = <&l2>;
29 reg = <0>;
30
31 clocks = <&chip_clk CLKID_CPU>;
32 clock-latency = <100000>;
33 /* Can be modified by the bootloader */
34 operating-points = <
35 /* kHz uV */
36 1200000 1200000
37 1000000 1200000
38 800000 1200000
39 600000 1200000
40 >;
41 };
42
43 cpu1: cpu@1 {
44 compatible = "arm,cortex-a9";
45 device_type = "cpu";
46 next-level-cache = <&l2>;
47 reg = <1>;
48
49 clocks = <&chip_clk CLKID_CPU>;
50 clock-latency = <100000>;
51 /* Can be modified by the bootloader */
52 operating-points = <
53 /* kHz uV */
54 1200000 1200000
55 1000000 1200000
56 800000 1200000
57 600000 1200000
58 >;
59 };
60
61 cpu2: cpu@2 {
62 compatible = "arm,cortex-a9";
63 device_type = "cpu";
64 next-level-cache = <&l2>;
65 reg = <2>;
66
67 clocks = <&chip_clk CLKID_CPU>;
68 clock-latency = <100000>;
69 /* Can be modified by the bootloader */
70 operating-points = <
71 /* kHz uV */
72 1200000 1200000
73 1000000 1200000
74 800000 1200000
75 600000 1200000
76 >;
77 };
78
79 cpu3: cpu@3 {
80 compatible = "arm,cortex-a9";
81 device_type = "cpu";
82 next-level-cache = <&l2>;
83 reg = <3>;
84
85 clocks = <&chip_clk CLKID_CPU>;
86 clock-latency = <100000>;
87 /* Can be modified by the bootloader */
88 operating-points = <
89 /* kHz uV */
90 1200000 1200000
91 1000000 1200000
92 800000 1200000
93 600000 1200000
94 >;
95 };
96 };
97
98 pmu {
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>,
106 <&cpu1>,
107 <&cpu2>,
108 <&cpu3>;
109 };
110
111 refclk: oscillator {
112 compatible = "fixed-clock";
113 #clock-cells = <0>;
114 clock-frequency = <25000000>;
115 };
116
117 soc@f7000000 {
118 compatible = "simple-bus";
119 #address-cells = <1>;
120 #size-cells = <1>;
121
122 ranges = <0 0xf7000000 0x1000000>;
123 interrupt-parent = <&gic>;
124
125 sdhci0: mmc@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>;
131 status = "disabled";
132 };
133
134 sdhci1: mmc@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>;
140 status = "disabled";
141 };
142
143 sdhci2: mmc@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";
149 status = "disabled";
150 };
151
152 l2: cache-controller@ac0000 {
153 compatible = "arm,pl310-cache";
154 reg = <0xac0000 0x1000>;
155 cache-unified;
156 cache-level = <2>;
157 arm,data-latency = <2 2 2>;
158 arm,tag-latency = <2 2 2>;
159 };
160
161 scu: snoop-control-unit@ad0000 {
162 compatible = "arm,cortex-a9-scu";
163 reg = <0xad0000 0x58>;
164 };
165
166 local-timer@ad0600 {
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)>;
171 };
172
173 gic: interrupt-controller@ad1000 {
174 compatible = "arm,cortex-a9-gic";
175 reg = <0xad1000 0x1000>, <0xad0100 0x100>;
176 interrupt-controller;
177 #interrupt-cells = <3>;
178 };
179
180 usb_phy2: phy@a2f400 {
181 compatible = "marvell,berlin2cd-usb-phy";
182 reg = <0xa2f400 0x128>;
183 #phy-cells = <0>;
184 resets = <&chip_rst 0x104 14>;
185 status = "disabled";
186 };
187
188 usb2: usb@a30000 {
189 compatible = "chipidea,usb2";
190 reg = <0xa30000 0x10000>;
191 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
192 clocks = <&chip_clk CLKID_USB2>;
193 phys = <&usb_phy2>;
194 phy-names = "usb-phy";
195 status = "disabled";
196 };
197
198 usb_phy0: phy@b74000 {
199 compatible = "marvell,berlin2cd-usb-phy";
200 reg = <0xb74000 0x128>;
201 #phy-cells = <0>;
202 resets = <&chip_rst 0x104 12>;
203 status = "disabled";
204 };
205
206 usb_phy1: phy@b78000 {
207 compatible = "marvell,berlin2cd-usb-phy";
208 reg = <0xb78000 0x128>;
209 #phy-cells = <0>;
210 resets = <&chip_rst 0x104 13>;
211 status = "disabled";
212 };
213
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>;
222 #size-cells = <0>;
223 phy-connection-type = "mii";
224 phy-handle = <ðphy0>;
225 status = "disabled";
226
227 ethphy0: ethernet-phy@0 {
228 reg = <0>;
229 };
230 };
231
232 cpu-ctrl@dd0000 {
233 compatible = "marvell,berlin-cpu-ctrl";
234 reg = <0xdd0000 0x10000>;
235 };
236
237 apb@e80000 {
238 compatible = "simple-bus";
239 #address-cells = <1>;
240 #size-cells = <1>;
241
242 ranges = <0 0xe80000 0x10000>;
243 interrupt-parent = <&aic>;
244
245 gpio0: gpio@400 {
246 compatible = "snps,dw-apb-gpio";
247 reg = <0x0400 0x400>;
248 #address-cells = <1>;
249 #size-cells = <0>;
250
251 porta: gpio-port@0 {
252 compatible = "snps,dw-apb-gpio-port";
253 gpio-controller;
254 #gpio-cells = <2>;
255 ngpios = <32>;
256 reg = <0>;
257 interrupt-controller;
258 #interrupt-cells = <2>;
259 interrupts = <0>;
260 };
261 };
262
263 gpio1: gpio@800 {
264 compatible = "snps,dw-apb-gpio";
265 reg = <0x0800 0x400>;
266 #address-cells = <1>;
267 #size-cells = <0>;
268
269 portb: gpio-port@1 {
270 compatible = "snps,dw-apb-gpio-port";
271 gpio-controller;
272 #gpio-cells = <2>;
273 ngpios = <32>;
274 reg = <0>;
275 interrupt-controller;
276 #interrupt-cells = <2>;
277 interrupts = <1>;
278 };
279 };
280
281 gpio2: gpio@c00 {
282 compatible = "snps,dw-apb-gpio";
283 reg = <0x0c00 0x400>;
284 #address-cells = <1>;
285 #size-cells = <0>;
286
287 portc: gpio-port@2 {
288 compatible = "snps,dw-apb-gpio-port";
289 gpio-controller;
290 #gpio-cells = <2>;
291 ngpios = <32>;
292 reg = <0>;
293 interrupt-controller;
294 #interrupt-cells = <2>;
295 interrupts = <2>;
296 };
297 };
298
299 gpio3: gpio@1000 {
300 compatible = "snps,dw-apb-gpio";
301 reg = <0x1000 0x400>;
302 #address-cells = <1>;
303 #size-cells = <0>;
304
305 portd: gpio-port@3 {
306 compatible = "snps,dw-apb-gpio-port";
307 gpio-controller;
308 #gpio-cells = <2>;
309 ngpios = <32>;
310 reg = <0>;
311 interrupt-controller;
312 #interrupt-cells = <2>;
313 interrupts = <3>;
314 };
315 };
316
317 i2c0: i2c@1400 {
318 compatible = "snps,designware-i2c";
319 #address-cells = <1>;
320 #size-cells = <0>;
321 reg = <0x1400 0x100>;
322 interrupts = <4>;
323 clocks = <&chip_clk CLKID_CFG>;
324 pinctrl-0 = <&twsi0_pmux>;
325 pinctrl-names = "default";
326 status = "disabled";
327 };
328
329 i2c1: i2c@1800 {
330 compatible = "snps,designware-i2c";
331 #address-cells = <1>;
332 #size-cells = <0>;
333 reg = <0x1800 0x100>;
334 interrupts = <5>;
335 clocks = <&chip_clk CLKID_CFG>;
336 pinctrl-0 = <&twsi1_pmux>;
337 pinctrl-names = "default";
338 status = "disabled";
339 };
340
341 timer0: timer@2c00 {
342 compatible = "snps,dw-apb-timer";
343 reg = <0x2c00 0x14>;
344 clocks = <&chip_clk CLKID_CFG>;
345 clock-names = "timer";
346 interrupts = <8>;
347 };
348
349 timer1: timer@2c14 {
350 compatible = "snps,dw-apb-timer";
351 reg = <0x2c14 0x14>;
352 clocks = <&chip_clk CLKID_CFG>;
353 clock-names = "timer";
354 };
355
356 timer2: timer@2c28 {
357 compatible = "snps,dw-apb-timer";
358 reg = <0x2c28 0x14>;
359 clocks = <&chip_clk CLKID_CFG>;
360 clock-names = "timer";
361 status = "disabled";
362 };
363
364 timer3: timer@2c3c {
365 compatible = "snps,dw-apb-timer";
366 reg = <0x2c3c 0x14>;
367 clocks = <&chip_clk CLKID_CFG>;
368 clock-names = "timer";
369 status = "disabled";
370 };
371
372 timer4: timer@2c50 {
373 compatible = "snps,dw-apb-timer";
374 reg = <0x2c50 0x14>;
375 clocks = <&chip_clk CLKID_CFG>;
376 clock-names = "timer";
377 status = "disabled";
378 };
379
380 timer5: timer@2c64 {
381 compatible = "snps,dw-apb-timer";
382 reg = <0x2c64 0x14>;
383 clocks = <&chip_clk CLKID_CFG>;
384 clock-names = "timer";
385 status = "disabled";
386 };
387
388 timer6: timer@2c78 {
389 compatible = "snps,dw-apb-timer";
390 reg = <0x2c78 0x14>;
391 clocks = <&chip_clk CLKID_CFG>;
392 clock-names = "timer";
393 status = "disabled";
394 };
395
396 timer7: timer@2c8c {
397 compatible = "snps,dw-apb-timer";
398 reg = <0x2c8c 0x14>;
399 clocks = <&chip_clk CLKID_CFG>;
400 clock-names = "timer";
401 status = "disabled";
402 };
403
404 aic: interrupt-controller@3800 {
405 compatible = "snps,dw-apb-ictl";
406 reg = <0x3800 0x30>;
407 interrupt-controller;
408 #interrupt-cells = <1>;
409 interrupt-parent = <&gic>;
410 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
411 };
412 };
413
414 chip: chip-control@ea0000 {
415 compatible = "simple-mfd", "syscon";
416 reg = <0xea0000 0x400>, <0xdd0170 0x10>;
417
418 chip_clk: clock {
419 compatible = "marvell,berlin2q-clk";
420 #clock-cells = <1>;
421 clocks = <&refclk>;
422 clock-names = "refclk";
423 };
424
425 soc_pinctrl: pin-controller {
426 compatible = "marvell,berlin2q-soc-pinctrl";
427
428 sd1_pmux: sd1-pmux {
429 groups = "G31";
430 function = "sd1";
431 };
432
433 twsi0_pmux: twsi0-pmux {
434 groups = "G6";
435 function = "twsi0";
436 };
437
438 twsi1_pmux: twsi1-pmux {
439 groups = "G7";
440 function = "twsi1";
441 };
442 };
443
444 chip_rst: reset {
445 compatible = "marvell,berlin2-reset";
446 #reset-cells = <2>;
447 };
448 };
449
450 ahci: sata@e90000 {
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>;
456 #size-cells = <0>;
457
458 sata0: sata-port@0 {
459 reg = <0>;
460 phys = <&sata_phy 0>;
461 status = "disabled";
462 };
463
464 sata1: sata-port@1 {
465 reg = <1>;
466 phys = <&sata_phy 1>;
467 status = "disabled";
468 };
469 };
470
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>;
476 #size-cells = <0>;
477 #phy-cells = <1>;
478 status = "disabled";
479
480 sata-phy@0 {
481 reg = <0>;
482 };
483
484 sata-phy@1 {
485 reg = <1>;
486 };
487 };
488
489 usb0: usb@ed0000 {
490 compatible = "chipidea,usb2";
491 reg = <0xed0000 0x10000>;
492 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
493 clocks = <&chip_clk CLKID_USB0>;
494 phys = <&usb_phy0>;
495 phy-names = "usb-phy";
496 status = "disabled";
497 };
498
499 usb1: usb@ee0000 {
500 compatible = "chipidea,usb2";
501 reg = <0xee0000 0x10000>;
502 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
503 clocks = <&chip_clk CLKID_USB1>;
504 phys = <&usb_phy1>;
505 phy-names = "usb-phy";
506 status = "disabled";
507 };
508
509 pwm: pwm@f20000 {
510 compatible = "marvell,berlin-pwm";
511 reg = <0xf20000 0x40>;
512 clocks = <&chip_clk CLKID_CFG>;
513 #pwm-cells = <3>;
514 };
515
516 apb@fc0000 {
517 compatible = "simple-bus";
518 #address-cells = <1>;
519 #size-cells = <1>;
520
521 ranges = <0 0xfc0000 0x10000>;
522 interrupt-parent = <&sic>;
523
524 wdt0: watchdog@1000 {
525 compatible = "snps,dw-wdt";
526 reg = <0x1000 0x100>;
527 clocks = <&refclk>;
528 interrupts = <0>;
529 };
530
531 wdt1: watchdog@2000 {
532 compatible = "snps,dw-wdt";
533 reg = <0x2000 0x100>;
534 clocks = <&refclk>;
535 interrupts = <1>;
536 };
537
538 wdt2: watchdog@3000 {
539 compatible = "snps,dw-wdt";
540 reg = <0x3000 0x100>;
541 clocks = <&refclk>;
542 interrupts = <2>;
543 };
544
545 sm_gpio1: gpio@5000 {
546 compatible = "snps,dw-apb-gpio";
547 reg = <0x5000 0x400>;
548 #address-cells = <1>;
549 #size-cells = <0>;
550
551 portf: gpio-port@5 {
552 compatible = "snps,dw-apb-gpio-port";
553 gpio-controller;
554 #gpio-cells = <2>;
555 ngpios = <32>;
556 reg = <0>;
557 };
558 };
559
560 i2c2: i2c@7000 {
561 compatible = "snps,designware-i2c";
562 #address-cells = <1>;
563 #size-cells = <0>;
564 reg = <0x7000 0x100>;
565 interrupts = <6>;
566 clocks = <&refclk>;
567 pinctrl-0 = <&twsi2_pmux>;
568 pinctrl-names = "default";
569 status = "disabled";
570 };
571
572 i2c3: i2c@8000 {
573 compatible = "snps,designware-i2c";
574 #address-cells = <1>;
575 #size-cells = <0>;
576 reg = <0x8000 0x100>;
577 interrupts = <7>;
578 clocks = <&refclk>;
579 pinctrl-0 = <&twsi3_pmux>;
580 pinctrl-names = "default";
581 status = "disabled";
582 };
583
584 uart0: uart@9000 {
585 compatible = "snps,dw-apb-uart";
586 reg = <0x9000 0x100>;
587 interrupts = <8>;
588 clocks = <&refclk>;
589 reg-shift = <2>;
590 pinctrl-0 = <&uart0_pmux>;
591 pinctrl-names = "default";
592 status = "disabled";
593 };
594
595 uart1: uart@a000 {
596 compatible = "snps,dw-apb-uart";
597 reg = <0xa000 0x100>;
598 interrupts = <9>;
599 clocks = <&refclk>;
600 reg-shift = <2>;
601 pinctrl-0 = <&uart1_pmux>;
602 pinctrl-names = "default";
603 status = "disabled";
604 };
605
606 sm_gpio0: gpio@c000 {
607 compatible = "snps,dw-apb-gpio";
608 reg = <0xc000 0x400>;
609 #address-cells = <1>;
610 #size-cells = <0>;
611
612 porte: gpio-port@4 {
613 compatible = "snps,dw-apb-gpio-port";
614 gpio-controller;
615 #gpio-cells = <2>;
616 ngpios = <32>;
617 reg = <0>;
618 };
619 };
620
621 sysctrl: pin-controller@d000 {
622 compatible = "simple-mfd", "syscon";
623 reg = <0xd000 0x100>;
624
625 sys_pinctrl: pin-controller {
626 compatible = "marvell,berlin2q-system-pinctrl";
627
628 uart0_pmux: uart0-pmux {
629 groups = "GSM12";
630 function = "uart0";
631 };
632
633 uart1_pmux: uart1-pmux {
634 groups = "GSM14";
635 function = "uart1";
636 };
637
638 twsi2_pmux: twsi2-pmux {
639 groups = "GSM13";
640 function = "twsi2";
641 };
642
643 twsi3_pmux: twsi3-pmux {
644 groups = "GSM14";
645 function = "twsi3";
646 };
647 };
648
649 adc: adc {
650 compatible = "marvell,berlin2-adc";
651 interrupts = <12>, <14>;
652 interrupt-names = "adc", "tsen";
653 };
654 };
655
656 sic: interrupt-controller@e000 {
657 compatible = "snps,dw-apb-ictl";
658 reg = <0xe000 0x30>;
659 interrupt-controller;
660 #interrupt-cells = <1>;
661 interrupt-parent = <&gic>;
662 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
663 };
664 };
665 };
666};