1 // SPDX-License-Identifier: GPL-2.0+ OR MIT
3 * Copyright (C) 2019 Lubomir Rintel <lkundrak@v3.sk>
6 #include <dt-bindings/clock/marvell,mmp2.h>
7 #include <dt-bindings/power/marvell,mmp2.h>
8 #include <dt-bindings/interrupt-controller/arm-gic.h>
17 enable-method = "marvell,mmp3-smp";
20 compatible = "marvell,pj4b";
22 next-level-cache = <&l2>;
27 compatible = "marvell,pj4b";
29 next-level-cache = <&l2>;
37 compatible = "simple-bus";
38 interrupt-parent = <&gic>;
42 compatible = "simple-bus";
45 reg = <0xd4200000 0x00200000>;
48 interrupt-controller@d4282000 {
49 compatible = "marvell,mmp3-intc";
51 #interrupt-cells = <1>;
52 reg = <0xd4282000 0x1000>,
54 mrvl,intc-nr-irqs = <64>;
57 pmic_mux: interrupt-controller@d4282150 {
58 compatible = "mrvl,mmp2-mux-intc";
59 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
61 #interrupt-cells = <1>;
62 reg = <0x150 0x4>, <0x168 0x4>;
63 reg-names = "mux status", "mux mask";
64 mrvl,intc-nr-irqs = <4>;
67 rtc_mux: interrupt-controller@d4282154 {
68 compatible = "mrvl,mmp2-mux-intc";
69 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
71 #interrupt-cells = <1>;
72 reg = <0x154 0x4>, <0x16c 0x4>;
73 reg-names = "mux status", "mux mask";
74 mrvl,intc-nr-irqs = <2>;
77 hsi3_mux: interrupt-controller@d42821bc {
78 compatible = "mrvl,mmp2-mux-intc";
79 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
81 #interrupt-cells = <1>;
82 reg = <0x1bc 0x4>, <0x1a4 0x4>;
83 reg-names = "mux status", "mux mask";
84 mrvl,intc-nr-irqs = <3>;
87 gpu_mux: interrupt-controller@d42821c0 {
88 compatible = "mrvl,mmp2-mux-intc";
89 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
91 #interrupt-cells = <1>;
92 reg = <0x1c0 0x4>, <0x1a8 0x4>;
93 reg-names = "mux status", "mux mask";
94 mrvl,intc-nr-irqs = <3>;
97 twsi_mux: interrupt-controller@d4282158 {
98 compatible = "mrvl,mmp2-mux-intc";
99 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
100 interrupt-controller;
101 #interrupt-cells = <1>;
102 reg = <0x158 0x4>, <0x170 0x4>;
103 reg-names = "mux status", "mux mask";
104 mrvl,intc-nr-irqs = <5>;
107 hsi2_mux: interrupt-controller@d42821c4 {
108 compatible = "mrvl,mmp2-mux-intc";
109 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
110 interrupt-controller;
111 #interrupt-cells = <1>;
112 reg = <0x1c4 0x4>, <0x1ac 0x4>;
113 reg-names = "mux status", "mux mask";
114 mrvl,intc-nr-irqs = <2>;
117 dxo_mux: interrupt-controller@d42821c8 {
118 compatible = "mrvl,mmp2-mux-intc";
119 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
120 interrupt-controller;
121 #interrupt-cells = <1>;
122 reg = <0x1c8 0x4>, <0x1b0 0x4>;
123 reg-names = "mux status", "mux mask";
124 mrvl,intc-nr-irqs = <2>;
127 misc1_mux: interrupt-controller@d428215c {
128 compatible = "mrvl,mmp2-mux-intc";
129 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
130 interrupt-controller;
131 #interrupt-cells = <1>;
132 reg = <0x15c 0x4>, <0x174 0x4>;
133 reg-names = "mux status", "mux mask";
134 mrvl,intc-nr-irqs = <31>;
137 ci_mux: interrupt-controller@d42821cc {
138 compatible = "mrvl,mmp2-mux-intc";
139 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
140 interrupt-controller;
141 #interrupt-cells = <1>;
142 reg = <0x1cc 0x4>, <0x1b4 0x4>;
143 reg-names = "mux status", "mux mask";
144 mrvl,intc-nr-irqs = <2>;
147 ssp_mux: interrupt-controller@d4282160 {
148 compatible = "mrvl,mmp2-mux-intc";
149 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
150 interrupt-controller;
151 #interrupt-cells = <1>;
152 reg = <0x160 0x4>, <0x178 0x4>;
153 reg-names = "mux status", "mux mask";
154 mrvl,intc-nr-irqs = <2>;
157 hsi1_mux: interrupt-controller@d4282184 {
158 compatible = "mrvl,mmp2-mux-intc";
159 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
160 interrupt-controller;
161 #interrupt-cells = <1>;
162 reg = <0x184 0x4>, <0x17c 0x4>;
163 reg-names = "mux status", "mux mask";
164 mrvl,intc-nr-irqs = <4>;
167 misc2_mux: interrupt-controller@d4282188 {
168 compatible = "mrvl,mmp2-mux-intc";
169 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
170 interrupt-controller;
171 #interrupt-cells = <1>;
172 reg = <0x188 0x4>, <0x180 0x4>;
173 reg-names = "mux status", "mux mask";
174 mrvl,intc-nr-irqs = <20>;
177 hsi0_mux: interrupt-controller@d42821d0 {
178 compatible = "mrvl,mmp2-mux-intc";
179 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
180 interrupt-controller;
181 #interrupt-cells = <1>;
182 reg = <0x1d0 0x4>, <0x1b8 0x4>;
183 reg-names = "mux status", "mux mask";
184 mrvl,intc-nr-irqs = <5>;
187 usb_otg_phy0: usb-phy@d4207000 {
188 compatible = "marvell,mmp3-usb-phy";
189 reg = <0xd4207000 0x40>;
194 usb_otg0: usb@d4208000 {
195 compatible = "marvell,pxau2o-ehci";
196 reg = <0xd4208000 0x200>;
197 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
198 clocks = <&soc_clocks MMP2_CLK_USB>;
199 clock-names = "USBCLK";
200 phys = <&usb_otg_phy0>;
205 hsic_phy0: usb-phy@f0001800 {
206 compatible = "marvell,mmp3-hsic-phy";
207 reg = <0xf0001800 0x40>;
212 hsic0: usb@f0001000 {
213 compatible = "marvell,pxau2o-ehci";
214 reg = <0xf0001000 0x200>;
215 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
216 clocks = <&soc_clocks MMP2_CLK_USBHSIC0>;
217 clock-names = "USBCLK";
221 #address-cells = <0x01>;
222 #size-cells = <0x00>;
226 hsic_phy1: usb-phy@f0002800 {
227 compatible = "marvell,mmp3-hsic-phy";
228 reg = <0xf0002800 0x40>;
233 hsic1: usb@f0002000 {
234 compatible = "marvell,pxau2o-ehci";
235 reg = <0xf0002000 0x200>;
236 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
237 clocks = <&soc_clocks MMP2_CLK_USBHSIC1>;
238 clock-names = "USBCLK";
242 #address-cells = <0x01>;
243 #size-cells = <0x00>;
248 compatible = "mrvl,pxav3-mmc";
249 reg = <0xd4280000 0x120>;
250 clocks = <&soc_clocks MMP2_CLK_SDH0>;
252 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
257 compatible = "mrvl,pxav3-mmc";
258 reg = <0xd4280800 0x120>;
259 clocks = <&soc_clocks MMP2_CLK_SDH1>;
261 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
266 compatible = "mrvl,pxav3-mmc";
267 reg = <0xd4281000 0x120>;
268 clocks = <&soc_clocks MMP2_CLK_SDH2>;
270 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
275 compatible = "mrvl,pxav3-mmc";
276 reg = <0xd4281800 0x120>;
277 clocks = <&soc_clocks MMP2_CLK_SDH3>;
279 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
284 compatible = "mrvl,pxav3-mmc";
285 reg = <0xd4217000 0x120>;
286 clocks = <&soc_clocks MMP3_CLK_SDH4>;
288 interrupt-parent = <&hsi1_mux>;
293 camera0: camera@d420a000 {
294 compatible = "marvell,mmp2-ccic";
295 reg = <0xd420a000 0x800>;
296 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
297 clocks = <&soc_clocks MMP2_CLK_CCIC0>;
300 clock-output-names = "mclk";
304 camera1: camera@d420a800 {
305 compatible = "marvell,mmp2-ccic";
306 reg = <0xd420a800 0x800>;
307 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
308 clocks = <&soc_clocks MMP2_CLK_CCIC1>;
311 clock-output-names = "mclk";
315 gpu_3d: gpu@d420d000 {
316 compatible = "vivante,gc";
317 reg = <0xd420d000 0x2000>;
318 interrupt-parent = <&gpu_mux>;
321 clocks = <&soc_clocks MMP3_CLK_GPU_3D>,
322 <&soc_clocks MMP3_CLK_GPU_BUS>;
323 clock-names = "core", "bus";
324 power-domains = <&soc_clocks MMP2_POWER_DOMAIN_GPU>;
327 gpu_2d: gpu@d420f000 {
328 compatible = "vivante,gc";
329 reg = <0xd420f000 0x2000>;
330 interrupt-parent = <&gpu_mux>;
333 clocks = <&soc_clocks MMP3_CLK_GPU_2D>,
334 <&soc_clocks MMP3_CLK_GPU_BUS>;
335 clock-names = "core", "bus";
336 power-domains = <&soc_clocks MMP2_POWER_DOMAIN_GPU>;
341 compatible = "simple-bus";
342 #address-cells = <1>;
344 reg = <0xd4000000 0x00200000>;
347 timer: timer@d4014000 {
348 compatible = "mrvl,mmp-timer";
349 reg = <0xd4014000 0x100>;
350 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
351 clocks = <&soc_clocks MMP2_CLK_TIMER>;
354 uart1: serial@d4030000 {
355 compatible = "mrvl,mmp-uart", "intel,xscale-uart";
356 reg = <0xd4030000 0x1000>;
357 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
358 clocks = <&soc_clocks MMP2_CLK_UART0>;
359 resets = <&soc_clocks MMP2_CLK_UART0>;
364 uart2: serial@d4017000 {
365 compatible = "mrvl,mmp-uart", "intel,xscale-uart";
366 reg = <0xd4017000 0x1000>;
367 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
368 clocks = <&soc_clocks MMP2_CLK_UART1>;
369 resets = <&soc_clocks MMP2_CLK_UART1>;
374 uart3: serial@d4018000 {
375 compatible = "mrvl,mmp-uart", "intel,xscale-uart";
376 reg = <0xd4018000 0x1000>;
377 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
378 clocks = <&soc_clocks MMP2_CLK_UART2>;
379 resets = <&soc_clocks MMP2_CLK_UART2>;
384 uart4: serial@d4016000 {
385 compatible = "mrvl,mmp-uart", "intel,xscale-uart";
386 reg = <0xd4016000 0x1000>;
387 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
388 clocks = <&soc_clocks MMP2_CLK_UART3>;
389 resets = <&soc_clocks MMP2_CLK_UART3>;
394 gpio: gpio@d4019000 {
395 compatible = "marvell,mmp2-gpio";
396 #address-cells = <1>;
398 reg = <0xd4019000 0x1000>;
401 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
402 interrupt-names = "gpio_mux";
403 clocks = <&soc_clocks MMP2_CLK_GPIO>;
404 resets = <&soc_clocks MMP2_CLK_GPIO>;
405 interrupt-controller;
406 #interrupt-cells = <2>;
409 gcb0: gpio@d4019000 {
410 reg = <0xd4019000 0x4>;
413 gcb1: gpio@d4019004 {
414 reg = <0xd4019004 0x4>;
417 gcb2: gpio@d4019008 {
418 reg = <0xd4019008 0x4>;
421 gcb3: gpio@d4019100 {
422 reg = <0xd4019100 0x4>;
425 gcb4: gpio@d4019104 {
426 reg = <0xd4019104 0x4>;
429 gcb5: gpio@d4019108 {
430 reg = <0xd4019108 0x4>;
434 twsi1: i2c@d4011000 {
435 compatible = "mrvl,mmp-twsi";
436 reg = <0xd4011000 0x70>;
437 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
438 clocks = <&soc_clocks MMP2_CLK_TWSI0>;
439 resets = <&soc_clocks MMP2_CLK_TWSI0>;
440 #address-cells = <1>;
446 twsi2: i2c@d4031000 {
447 compatible = "mrvl,mmp-twsi";
448 reg = <0xd4031000 0x70>;
449 interrupt-parent = <&twsi_mux>;
451 clocks = <&soc_clocks MMP2_CLK_TWSI1>;
452 resets = <&soc_clocks MMP2_CLK_TWSI1>;
453 #address-cells = <1>;
458 twsi3: i2c@d4032000 {
459 compatible = "mrvl,mmp-twsi";
460 reg = <0xd4032000 0x70>;
461 interrupt-parent = <&twsi_mux>;
463 clocks = <&soc_clocks MMP2_CLK_TWSI2>;
464 resets = <&soc_clocks MMP2_CLK_TWSI2>;
465 #address-cells = <1>;
470 twsi4: i2c@d4033000 {
471 compatible = "mrvl,mmp-twsi";
472 reg = <0xd4033000 0x70>;
473 interrupt-parent = <&twsi_mux>;
475 clocks = <&soc_clocks MMP2_CLK_TWSI3>;
476 resets = <&soc_clocks MMP2_CLK_TWSI3>;
477 #address-cells = <1>;
483 twsi5: i2c@d4033800 {
484 compatible = "mrvl,mmp-twsi";
485 reg = <0xd4033800 0x70>;
486 interrupt-parent = <&twsi_mux>;
488 clocks = <&soc_clocks MMP2_CLK_TWSI4>;
489 resets = <&soc_clocks MMP2_CLK_TWSI4>;
490 #address-cells = <1>;
495 twsi6: i2c@d4034000 {
496 compatible = "mrvl,mmp-twsi";
497 reg = <0xd4034000 0x70>;
498 interrupt-parent = <&twsi_mux>;
500 clocks = <&soc_clocks MMP2_CLK_TWSI5>;
501 resets = <&soc_clocks MMP2_CLK_TWSI5>;
502 #address-cells = <1>;
508 compatible = "mrvl,mmp-rtc";
509 reg = <0xd4010000 0x1000>;
510 interrupts = <1>, <0>;
511 interrupt-names = "rtc 1Hz", "rtc alarm";
512 interrupt-parent = <&rtc_mux>;
513 clocks = <&soc_clocks MMP2_CLK_RTC>;
514 resets = <&soc_clocks MMP2_CLK_RTC>;
519 compatible = "marvell,mmp2-ssp";
520 reg = <0xd4035000 0x1000>;
521 clocks = <&soc_clocks MMP2_CLK_SSP0>;
522 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
523 #address-cells = <1>;
529 compatible = "marvell,mmp2-ssp";
530 reg = <0xd4036000 0x1000>;
531 clocks = <&soc_clocks MMP2_CLK_SSP1>;
532 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
533 #address-cells = <1>;
539 compatible = "marvell,mmp2-ssp";
540 reg = <0xd4037000 0x1000>;
541 clocks = <&soc_clocks MMP2_CLK_SSP2>;
542 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
543 #address-cells = <1>;
549 compatible = "marvell,mmp2-ssp";
550 reg = <0xd4039000 0x1000>;
551 clocks = <&soc_clocks MMP2_CLK_SSP3>;
552 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
553 #address-cells = <1>;
559 l2: cache-controller@d0020000 {
560 compatible = "marvell,tauros3-cache", "arm,pl310-cache";
561 reg = <0xd0020000 0x1000>;
566 soc_clocks: clocks@d4050000 {
567 compatible = "marvell,mmp3-clock";
568 reg = <0xd4050000 0x1000>,
571 reg-names = "mpmu", "apmu", "apbc";
574 #power-domain-cells = <1>;
577 snoop-control-unit@e0000000 {
578 compatible = "arm,arm11mp-scu";
579 reg = <0xe0000000 0x100>;
582 gic: interrupt-controller@e0001000 {
583 compatible = "arm,arm11mp-gic";
584 interrupt-controller;
585 #interrupt-cells = <3>;
586 reg = <0xe0001000 0x1000>,
590 local-timer@e0000600 {
591 compatible = "arm,arm11mp-twd-timer";
592 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) |
593 IRQ_TYPE_EDGE_RISING)>;
594 reg = <0xe0000600 0x20>;
598 compatible = "arm,arm11mp-twd-wdt";
599 reg = <0xe0000620 0x20>;
600 interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) |
601 IRQ_TYPE_EDGE_RISING)>;