4 * Copyright (c) 2015 Broadcom. All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
16 * * Neither the name of Broadcom Corporation nor the names of its
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 /memreserve/ 0x81000000 0x00200000;
35 #include <dt-bindings/interrupt-controller/arm-gic.h>
36 #include <dt-bindings/clock/bcm-ns2.h>
39 compatible = "brcm,ns2";
40 interrupt-parent = <&gic>;
50 compatible = "arm,cortex-a57";
52 enable-method = "psci";
53 next-level-cache = <&CLUSTER0_L2>;
58 compatible = "arm,cortex-a57";
60 enable-method = "psci";
61 next-level-cache = <&CLUSTER0_L2>;
66 compatible = "arm,cortex-a57";
68 enable-method = "psci";
69 next-level-cache = <&CLUSTER0_L2>;
74 compatible = "arm,cortex-a57";
76 enable-method = "psci";
77 next-level-cache = <&CLUSTER0_L2>;
80 CLUSTER0_L2: l2-cache@0 {
87 compatible = "arm,psci-1.0";
92 compatible = "arm,armv8-timer";
93 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(0xff) |
95 <GIC_PPI 14 (GIC_CPU_MASK_RAW(0xff) |
97 <GIC_PPI 11 (GIC_CPU_MASK_RAW(0xff) |
99 <GIC_PPI 10 (GIC_CPU_MASK_RAW(0xff) |
100 IRQ_TYPE_LEVEL_LOW)>;
104 compatible = "arm,armv8-pmuv3";
105 interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
106 <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
107 <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>,
108 <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
109 interrupt-affinity = <&A57_0>,
115 pcie0: pcie@20020000 {
116 compatible = "brcm,iproc-pcie";
117 reg = <0 0x20020000 0 0x1000>;
120 #interrupt-cells = <1>;
121 interrupt-map-mask = <0 0 0 0>;
122 interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>;
124 linux,pci-domain = <0>;
126 bus-range = <0x00 0xff>;
128 #address-cells = <3>;
131 ranges = <0x83000000 0 0x00000000 0 0x00000000 0 0x20000000>;
134 brcm,pcie-ob-oarr-size;
135 brcm,pcie-ob-axi-offset = <0x00000000>;
136 brcm,pcie-ob-window-size = <256>;
141 phy-names = "pcie-phy";
143 msi-parent = <&v2m0>;
146 pcie4: pcie@50020000 {
147 compatible = "brcm,iproc-pcie";
148 reg = <0 0x50020000 0 0x1000>;
151 #interrupt-cells = <1>;
152 interrupt-map-mask = <0 0 0 0>;
153 interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
155 linux,pci-domain = <4>;
157 bus-range = <0x00 0xff>;
159 #address-cells = <3>;
162 ranges = <0x83000000 0 0x00000000 0 0x30000000 0 0x20000000>;
165 brcm,pcie-ob-oarr-size;
166 brcm,pcie-ob-axi-offset = <0x30000000>;
167 brcm,pcie-ob-window-size = <256>;
172 phy-names = "pcie-phy";
174 msi-parent = <&v2m0>;
177 pcie8: pcie@60c00000 {
178 compatible = "brcm,iproc-pcie-paxc";
179 reg = <0 0x60c00000 0 0x1000>;
181 linux,pci-domain = <8>;
183 bus-range = <0x0 0x1>;
185 #address-cells = <3>;
188 ranges = <0x83000000 0 0x00000000 0 0x60000000 0 0x00c00000>;
192 msi-parent = <&v2m0>;
196 compatible = "simple-bus";
197 #address-cells = <1>;
199 ranges = <0 0 0 0xffffffff>;
201 #include "ns2-clock.dtsi"
203 enet: ethernet@61000000 {
204 compatible = "brcm,ns2-amac";
205 reg = <0x61000000 0x1000>,
208 reg-names = "amac_base", "idm_base", "nicpm_base";
209 interrupts = <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
211 phy-handle = <&gphy0>;
216 pdc0: iproc-pdc0@612c0000 {
217 compatible = "brcm,iproc-pdc-mbox";
218 reg = <0x612c0000 0x445>; /* PDC FS0 regs */
219 interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
222 brcm,rx-status-len = <32>;
226 crypto0: crypto@612d0000 {
227 compatible = "brcm,spum-crypto";
228 reg = <0x612d0000 0x900>;
232 pdc1: iproc-pdc1@612e0000 {
233 compatible = "brcm,iproc-pdc-mbox";
234 reg = <0x612e0000 0x445>; /* PDC FS1 regs */
235 interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
238 brcm,rx-status-len = <32>;
242 crypto1: crypto@612f0000 {
243 compatible = "brcm,spum-crypto";
244 reg = <0x612f0000 0x900>;
248 pdc2: iproc-pdc2@61300000 {
249 compatible = "brcm,iproc-pdc-mbox";
250 reg = <0x61300000 0x445>; /* PDC FS2 regs */
251 interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
254 brcm,rx-status-len = <32>;
258 crypto2: crypto@61310000 {
259 compatible = "brcm,spum-crypto";
260 reg = <0x61310000 0x900>;
264 pdc3: iproc-pdc3@61320000 {
265 compatible = "brcm,iproc-pdc-mbox";
266 reg = <0x61320000 0x445>; /* PDC FS3 regs */
267 interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
270 brcm,rx-status-len = <32>;
274 crypto3: crypto@61330000 {
275 compatible = "brcm,spum-crypto";
276 reg = <0x61330000 0x900>;
280 dma0: dma-controller@61360000 {
281 compatible = "arm,pl330", "arm,primecell";
282 reg = <0x61360000 0x1000>;
283 interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>,
284 <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>,
285 <GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>,
286 <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>,
287 <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>,
288 <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
289 <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
290 <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
291 <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
293 clocks = <&iprocslow>;
294 clock-names = "apb_pclk";
298 compatible = "arm,mmu-500";
299 reg = <0x64000000 0x40000>;
300 #global-interrupts = <2>;
301 interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
302 <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>,
303 <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>,
304 <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>,
305 <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>,
306 <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>,
307 <GIC_SPI 235 IRQ_TYPE_LEVEL_HIGH>,
308 <GIC_SPI 236 IRQ_TYPE_LEVEL_HIGH>,
309 <GIC_SPI 237 IRQ_TYPE_LEVEL_HIGH>,
310 <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>,
311 <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>,
312 <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>,
313 <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>,
314 <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
315 <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>,
316 <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>,
317 <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>,
318 <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>,
319 <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>,
320 <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>,
321 <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>,
322 <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>,
323 <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH>,
324 <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>,
325 <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>,
326 <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>,
327 <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>,
328 <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
329 <GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>,
330 <GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>,
331 <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>,
332 <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>,
333 <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
334 <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>;
338 pinctrl: pinctrl@6501d130 {
339 compatible = "brcm,ns2-pinmux";
340 reg = <0x6501d130 0x08>,
345 gpio_aon: gpio@65024800 {
346 compatible = "brcm,iproc-gpio";
347 reg = <0x65024800 0x50>,
354 gic: interrupt-controller@65210000 {
355 compatible = "arm,gic-400";
356 #interrupt-cells = <3>;
357 interrupt-controller;
358 reg = <0x65210000 0x1000>,
362 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_RAW(0xf) |
363 IRQ_TYPE_LEVEL_HIGH)>;
365 #address-cells = <1>;
367 ranges = <0 0x652e0000 0x80000>;
370 compatible = "arm,gic-v2m-frame";
371 interrupt-parent = <&gic>;
373 reg = <0x00000 0x1000>;
374 arm,msi-base-spi = <72>;
375 arm,msi-num-spis = <16>;
379 compatible = "arm,gic-v2m-frame";
380 interrupt-parent = <&gic>;
382 reg = <0x10000 0x1000>;
383 arm,msi-base-spi = <88>;
384 arm,msi-num-spis = <16>;
388 compatible = "arm,gic-v2m-frame";
389 interrupt-parent = <&gic>;
391 reg = <0x20000 0x1000>;
392 arm,msi-base-spi = <104>;
393 arm,msi-num-spis = <16>;
397 compatible = "arm,gic-v2m-frame";
398 interrupt-parent = <&gic>;
400 reg = <0x30000 0x1000>;
401 arm,msi-base-spi = <120>;
402 arm,msi-num-spis = <16>;
406 compatible = "arm,gic-v2m-frame";
407 interrupt-parent = <&gic>;
409 reg = <0x40000 0x1000>;
410 arm,msi-base-spi = <136>;
411 arm,msi-num-spis = <16>;
415 compatible = "arm,gic-v2m-frame";
416 interrupt-parent = <&gic>;
418 reg = <0x50000 0x1000>;
419 arm,msi-base-spi = <152>;
420 arm,msi-num-spis = <16>;
424 compatible = "arm,gic-v2m-frame";
425 interrupt-parent = <&gic>;
427 reg = <0x60000 0x1000>;
428 arm,msi-base-spi = <168>;
429 arm,msi-num-spis = <16>;
433 compatible = "arm,gic-v2m-frame";
434 interrupt-parent = <&gic>;
436 reg = <0x70000 0x1000>;
437 arm,msi-base-spi = <184>;
438 arm,msi-num-spis = <16>;
443 compatible = "arm,cci-400";
444 #address-cells = <1>;
446 reg = <0x65590000 0x1000>;
447 ranges = <0 0x65590000 0x10000>;
450 compatible = "arm,cci-400-pmu,r1",
452 reg = <0x9000 0x4000>;
453 interrupts = <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>,
454 <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>,
455 <GIC_SPI 346 IRQ_TYPE_LEVEL_HIGH>,
456 <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
457 <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
458 <GIC_SPI 349 IRQ_TYPE_LEVEL_HIGH>;
462 usbdrd_phy: phy@66000960 {
464 compatible = "brcm,ns2-drd-phy";
465 reg = <0x66000960 0x24>,
469 reg-names = "icfg", "rst-ctrl",
470 "crmu-ctrl", "usb2-strap";
471 id-gpios = <&gpio_g 30 0>;
472 vbus-gpios = <&gpio_g 31 0>;
477 compatible = "brcm,iproc-pwm";
478 reg = <0x66010000 0x28>;
484 mdio_mux_iproc: mdio-mux@66020000 {
485 compatible = "brcm,mdio-mux-iproc";
486 reg = <0x66020000 0x250>;
487 #address-cells = <1>;
492 #address-cells = <1>;
495 pci_phy0: pci-phy@0 {
496 compatible = "brcm,ns2-pcie-phy";
505 #address-cells = <1>;
508 pci_phy1: pci-phy@0 {
509 compatible = "brcm,ns2-pcie-phy";
518 #address-cells = <1>;
523 timer0: timer@66030000 {
524 compatible = "arm,sp804", "arm,primecell";
525 reg = <0x66030000 0x1000>;
526 interrupts = <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>;
527 clocks = <&iprocslow>,
530 clock-names = "timer1", "timer2", "apb_pclk";
533 timer1: timer@66040000 {
534 compatible = "arm,sp804", "arm,primecell";
535 reg = <0x66040000 0x1000>;
536 interrupts = <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>;
537 clocks = <&iprocslow>,
540 clock-names = "timer1", "timer2", "apb_pclk";
543 timer2: timer@66050000 {
544 compatible = "arm,sp804", "arm,primecell";
545 reg = <0x66050000 0x1000>;
546 interrupts = <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>;
547 clocks = <&iprocslow>,
550 clock-names = "timer1", "timer2", "apb_pclk";
553 timer3: timer@66060000 {
554 compatible = "arm,sp804", "arm,primecell";
555 reg = <0x66060000 0x1000>;
556 interrupts = <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>;
557 clocks = <&iprocslow>,
560 clock-names = "timer1", "timer2", "apb_pclk";
564 compatible = "brcm,iproc-i2c";
565 reg = <0x66080000 0x100>;
566 #address-cells = <1>;
568 interrupts = <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>;
569 clock-frequency = <100000>;
573 wdt0: watchdog@66090000 {
574 compatible = "arm,sp805", "arm,primecell";
575 reg = <0x66090000 0x1000>;
576 interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>;
577 clocks = <&iprocslow>, <&iprocslow>;
578 clock-names = "wdog_clk", "apb_pclk";
581 gpio_g: gpio@660a0000 {
582 compatible = "brcm,iproc-gpio";
583 reg = <0x660a0000 0x50>;
587 interrupt-controller;
588 interrupts = <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>;
592 compatible = "brcm,iproc-i2c";
593 reg = <0x660b0000 0x100>;
594 #address-cells = <1>;
596 interrupts = <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>;
597 clock-frequency = <100000>;
601 uart0: serial@66100000 {
602 compatible = "snps,dw-apb-uart";
603 reg = <0x66100000 0x100>;
604 interrupts = <GIC_SPI 390 IRQ_TYPE_LEVEL_HIGH>;
605 clocks = <&iprocslow>;
611 uart1: serial@66110000 {
612 compatible = "snps,dw-apb-uart";
613 reg = <0x66110000 0x100>;
614 interrupts = <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>;
615 clocks = <&iprocslow>;
621 uart2: serial@66120000 {
622 compatible = "snps,dw-apb-uart";
623 reg = <0x66120000 0x100>;
624 interrupts = <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>;
625 clocks = <&iprocslow>;
631 uart3: serial@66130000 {
632 compatible = "snps,dw-apb-uart";
633 reg = <0x66130000 0x100>;
634 interrupts = <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>;
642 compatible = "arm,pl022", "arm,primecell";
643 reg = <0x66180000 0x1000>;
644 interrupts = <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>;
645 clocks = <&iprocslow>, <&iprocslow>;
646 clock-names = "sspclk", "apb_pclk";
647 #address-cells = <1>;
653 compatible = "arm,pl022", "arm,primecell";
654 reg = <0x66190000 0x1000>;
655 interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
656 clocks = <&iprocslow>, <&iprocslow>;
657 clock-names = "sspclk", "apb_pclk";
658 #address-cells = <1>;
663 hwrng: hwrng@66220000 {
664 compatible = "brcm,iproc-rng200";
665 reg = <0x66220000 0x28>;
668 sata_phy: sata_phy@663f0100 {
669 compatible = "brcm,iproc-ns2-sata-phy";
670 reg = <0x663f0100 0x1f00>,
672 reg-names = "phy", "phy-ctrl";
673 #address-cells = <1>;
676 sata_phy0: sata-phy@0 {
682 sata_phy1: sata-phy@1 {
689 sata: sata@663f2000 {
690 compatible = "brcm,iproc-ahci", "generic-ahci";
691 reg = <0x663f2000 0x1000>;
694 interrupts = <GIC_SPI 438 IRQ_TYPE_LEVEL_HIGH>;
695 #address-cells = <1>;
702 phy-names = "sata-phy";
708 phy-names = "sata-phy";
712 sdio0: sdhci@66420000 {
713 compatible = "brcm,sdhci-iproc-cygnus";
714 reg = <0x66420000 0x100>;
715 interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>;
718 clocks = <&genpll_sw BCM_NS2_GENPLL_SW_SDIO_CLK>;
722 sdio1: sdhci@66430000 {
723 compatible = "brcm,sdhci-iproc-cygnus";
724 reg = <0x66430000 0x100>;
725 interrupts = <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>;
728 clocks = <&genpll_sw BCM_NS2_GENPLL_SW_SDIO_CLK>;
732 nand: nand@66460000 {
733 compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
734 reg = <0x66460000 0x600>,
737 reg-names = "nand", "iproc-idm", "iproc-ext";
738 interrupts = <GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH>;
740 #address-cells = <1>;
747 compatible = "brcm,spi-ns2-qspi", "brcm,spi-bcm-qspi";
748 reg = <0x66470200 0x184>,
752 reg-names = "mspi", "bspi", "intr_regs",
754 interrupts = <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH>;
755 interrupt-names = "spi_l1_intr";
756 clocks = <&iprocmed>;
757 clock-names = "iprocmed";
759 #address-cells = <1>;