Loading...
Note: File does not exist in v6.13.7.
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};