0001 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
0002 /*
0003 * Device Tree Include file for Marvell Armada 37xx family of SoCs.
0004 *
0005 * Copyright (C) 2016 Marvell
0006 *
0007 * Gregory CLEMENT <gregory.clement@free-electrons.com>
0008 *
0009 */
0010
0011 #include <dt-bindings/interrupt-controller/arm-gic.h>
0012
0013 / {
0014 model = "Marvell Armada 37xx SoC";
0015 compatible = "marvell,armada3700";
0016 interrupt-parent = <&gic>;
0017 #address-cells = <2>;
0018 #size-cells = <2>;
0019
0020 aliases {
0021 serial0 = &uart0;
0022 serial1 = &uart1;
0023 };
0024
0025 reserved-memory {
0026 #address-cells = <2>;
0027 #size-cells = <2>;
0028 ranges;
0029
0030 /*
0031 * The PSCI firmware region depicted below is the default one
0032 * and should be updated by the bootloader.
0033 */
0034 psci-area@4000000 {
0035 reg = <0 0x4000000 0 0x200000>;
0036 no-map;
0037 };
0038 };
0039
0040 cpus {
0041 #address-cells = <1>;
0042 #size-cells = <0>;
0043 cpu0: cpu@0 {
0044 device_type = "cpu";
0045 compatible = "arm,cortex-a53";
0046 reg = <0>;
0047 clocks = <&nb_periph_clk 16>;
0048 enable-method = "psci";
0049 };
0050 };
0051
0052 psci {
0053 compatible = "arm,psci-0.2";
0054 method = "smc";
0055 };
0056
0057 timer {
0058 compatible = "arm,armv8-timer";
0059 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>,
0060 <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>,
0061 <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>,
0062 <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>;
0063 };
0064
0065 pmu {
0066 compatible = "arm,armv8-pmuv3";
0067 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
0068 };
0069
0070 soc {
0071 compatible = "simple-bus";
0072 #address-cells = <2>;
0073 #size-cells = <2>;
0074 ranges;
0075
0076 internal-regs@d0000000 {
0077 #address-cells = <1>;
0078 #size-cells = <1>;
0079 compatible = "simple-bus";
0080 /* 32M internal register @ 0xd000_0000 */
0081 ranges = <0x0 0x0 0xd0000000 0x2000000>;
0082
0083 wdt: watchdog@8300 {
0084 compatible = "marvell,armada-3700-wdt";
0085 reg = <0x8300 0x40>;
0086 marvell,system-controller = <&cpu_misc>;
0087 clocks = <&xtalclk>;
0088 };
0089
0090 cpu_misc: system-controller@d000 {
0091 compatible = "marvell,armada-3700-cpu-misc",
0092 "syscon";
0093 reg = <0xd000 0x1000>;
0094 };
0095
0096 spi0: spi@10600 {
0097 compatible = "marvell,armada-3700-spi";
0098 #address-cells = <1>;
0099 #size-cells = <0>;
0100 reg = <0x10600 0xA00>;
0101 clocks = <&nb_periph_clk 7>;
0102 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
0103 num-cs = <4>;
0104 status = "disabled";
0105 };
0106
0107 i2c0: i2c@11000 {
0108 compatible = "marvell,armada-3700-i2c";
0109 reg = <0x11000 0x24>;
0110 #address-cells = <1>;
0111 #size-cells = <0>;
0112 clocks = <&nb_periph_clk 10>;
0113 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
0114 mrvl,i2c-fast-mode;
0115 status = "disabled";
0116 };
0117
0118 i2c1: i2c@11080 {
0119 compatible = "marvell,armada-3700-i2c";
0120 reg = <0x11080 0x24>;
0121 #address-cells = <1>;
0122 #size-cells = <0>;
0123 clocks = <&nb_periph_clk 9>;
0124 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
0125 mrvl,i2c-fast-mode;
0126 status = "disabled";
0127 };
0128
0129 avs: avs@11500 {
0130 compatible = "marvell,armada-3700-avs",
0131 "syscon";
0132 reg = <0x11500 0x40>;
0133 };
0134
0135 uartclk: clock-controller@12010 {
0136 compatible = "marvell,armada-3700-uart-clock";
0137 reg = <0x12010 0x4>, <0x12210 0x4>;
0138 clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
0139 <&tbg 3>, <&xtalclk>;
0140 clock-names = "TBG-A-P", "TBG-B-P", "TBG-A-S",
0141 "TBG-B-S", "xtal";
0142 #clock-cells = <1>;
0143 };
0144
0145 uart0: serial@12000 {
0146 compatible = "marvell,armada-3700-uart";
0147 reg = <0x12000 0x18>;
0148 clocks = <&uartclk 0>;
0149 interrupts =
0150 <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
0151 <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
0152 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
0153 interrupt-names = "uart-sum", "uart-tx", "uart-rx";
0154 status = "disabled";
0155 };
0156
0157 uart1: serial@12200 {
0158 compatible = "marvell,armada-3700-uart-ext";
0159 reg = <0x12200 0x30>;
0160 clocks = <&uartclk 1>;
0161 interrupts =
0162 <GIC_SPI 30 IRQ_TYPE_EDGE_RISING>,
0163 <GIC_SPI 31 IRQ_TYPE_EDGE_RISING>;
0164 interrupt-names = "uart-tx", "uart-rx";
0165 status = "disabled";
0166 };
0167
0168 nb_periph_clk: nb-periph-clk@13000 {
0169 compatible = "marvell,armada-3700-periph-clock-nb",
0170 "syscon";
0171 reg = <0x13000 0x100>;
0172 clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
0173 <&tbg 3>, <&xtalclk>;
0174 #clock-cells = <1>;
0175 };
0176
0177 sb_periph_clk: sb-periph-clk@18000 {
0178 compatible = "marvell,armada-3700-periph-clock-sb";
0179 reg = <0x18000 0x100>;
0180 clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
0181 <&tbg 3>, <&xtalclk>;
0182 #clock-cells = <1>;
0183 };
0184
0185 tbg: tbg@13200 {
0186 compatible = "marvell,armada-3700-tbg-clock";
0187 reg = <0x13200 0x100>;
0188 clocks = <&xtalclk>;
0189 #clock-cells = <1>;
0190 };
0191
0192 pinctrl_nb: pinctrl@13800 {
0193 compatible = "marvell,armada3710-nb-pinctrl",
0194 "syscon", "simple-mfd";
0195 reg = <0x13800 0x100>, <0x13C00 0x20>;
0196 /* MPP1[19:0] */
0197 gpionb: gpio {
0198 #gpio-cells = <2>;
0199 gpio-ranges = <&pinctrl_nb 0 0 36>;
0200 gpio-controller;
0201 interrupt-controller;
0202 #interrupt-cells = <2>;
0203 interrupts =
0204 <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
0205 <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
0206 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
0207 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
0208 <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
0209 <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
0210 <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
0211 <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
0212 <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
0213 <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
0214 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
0215 <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
0216 };
0217
0218 xtalclk: xtal-clk {
0219 compatible = "marvell,armada-3700-xtal-clock";
0220 clock-output-names = "xtal";
0221 #clock-cells = <0>;
0222 };
0223
0224 spi_quad_pins: spi-quad-pins {
0225 groups = "spi_quad";
0226 function = "spi";
0227 };
0228
0229 spi_cs1_pins: spi-cs1-pins {
0230 groups = "spi_cs1";
0231 function = "spi";
0232 };
0233
0234 i2c1_pins: i2c1-pins {
0235 groups = "i2c1";
0236 function = "i2c";
0237 };
0238
0239 i2c2_pins: i2c2-pins {
0240 groups = "i2c2";
0241 function = "i2c";
0242 };
0243
0244 uart1_pins: uart1-pins {
0245 groups = "uart1";
0246 function = "uart";
0247 };
0248
0249 uart2_pins: uart2-pins {
0250 groups = "uart2";
0251 function = "uart";
0252 };
0253
0254 mmc_pins: mmc-pins {
0255 groups = "emmc_nb";
0256 function = "emmc";
0257 };
0258 };
0259
0260 nb_pm: syscon@14000 {
0261 compatible = "marvell,armada-3700-nb-pm",
0262 "syscon";
0263 reg = <0x14000 0x60>;
0264 };
0265
0266 comphy: phy@18300 {
0267 compatible = "marvell,comphy-a3700";
0268 reg = <0x18300 0x300>,
0269 <0x1F000 0x400>,
0270 <0x5C000 0x400>,
0271 <0xe0178 0x8>;
0272 reg-names = "comphy",
0273 "lane1_pcie_gbe",
0274 "lane0_usb3_gbe",
0275 "lane2_sata_usb3";
0276 #address-cells = <1>;
0277 #size-cells = <0>;
0278 clocks = <&xtalclk>;
0279 clock-names = "xtal";
0280
0281 comphy0: phy@0 {
0282 reg = <0>;
0283 #phy-cells = <1>;
0284 };
0285
0286 comphy1: phy@1 {
0287 reg = <1>;
0288 #phy-cells = <1>;
0289 };
0290
0291 comphy2: phy@2 {
0292 reg = <2>;
0293 #phy-cells = <1>;
0294 };
0295 };
0296
0297 pinctrl_sb: pinctrl@18800 {
0298 compatible = "marvell,armada3710-sb-pinctrl",
0299 "syscon", "simple-mfd";
0300 reg = <0x18800 0x100>, <0x18C00 0x20>;
0301 /* MPP2[23:0] */
0302 gpiosb: gpio {
0303 #gpio-cells = <2>;
0304 gpio-ranges = <&pinctrl_sb 0 0 30>;
0305 gpio-controller;
0306 interrupt-controller;
0307 #interrupt-cells = <2>;
0308 interrupts =
0309 <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
0310 <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
0311 <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
0312 <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
0313 <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
0314 };
0315
0316 rgmii_pins: mii-pins {
0317 groups = "rgmii";
0318 function = "mii";
0319 };
0320
0321 smi_pins: smi-pins {
0322 groups = "smi";
0323 function = "smi";
0324 };
0325
0326 sdio_pins: sdio-pins {
0327 groups = "sdio_sb";
0328 function = "sdio";
0329 };
0330
0331 pcie_reset_pins: pcie-reset-pins {
0332 groups = "pcie1"; /* this actually controls "pcie1_reset" */
0333 function = "gpio";
0334 };
0335
0336 pcie_clkreq_pins: pcie-clkreq-pins {
0337 groups = "pcie1_clkreq";
0338 function = "pcie";
0339 };
0340 };
0341
0342 eth0: ethernet@30000 {
0343 compatible = "marvell,armada-3700-neta";
0344 reg = <0x30000 0x4000>;
0345 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
0346 clocks = <&sb_periph_clk 8>;
0347 status = "disabled";
0348 };
0349
0350 mdio: mdio@32004 {
0351 #address-cells = <1>;
0352 #size-cells = <0>;
0353 compatible = "marvell,orion-mdio";
0354 reg = <0x32004 0x4>;
0355 };
0356
0357 eth1: ethernet@40000 {
0358 compatible = "marvell,armada-3700-neta";
0359 reg = <0x40000 0x4000>;
0360 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
0361 clocks = <&sb_periph_clk 7>;
0362 status = "disabled";
0363 };
0364
0365 usb3: usb@58000 {
0366 compatible = "marvell,armada3700-xhci",
0367 "generic-xhci";
0368 reg = <0x58000 0x4000>;
0369 marvell,usb-misc-reg = <&usb32_syscon>;
0370 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
0371 clocks = <&sb_periph_clk 12>;
0372 phys = <&comphy0 0>, <&usb2_utmi_otg_phy>;
0373 phy-names = "usb3-phy", "usb2-utmi-otg-phy";
0374 status = "disabled";
0375 };
0376
0377 usb2_utmi_otg_phy: phy@5d000 {
0378 compatible = "marvell,a3700-utmi-otg-phy";
0379 reg = <0x5d000 0x800>;
0380 marvell,usb-misc-reg = <&usb32_syscon>;
0381 #phy-cells = <0>;
0382 };
0383
0384 usb32_syscon: system-controller@5d800 {
0385 compatible = "marvell,armada-3700-usb2-host-device-misc",
0386 "syscon";
0387 reg = <0x5d800 0x800>;
0388 };
0389
0390 usb2: usb@5e000 {
0391 compatible = "marvell,armada-3700-ehci";
0392 reg = <0x5e000 0x1000>;
0393 marvell,usb-misc-reg = <&usb2_syscon>;
0394 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
0395 phys = <&usb2_utmi_host_phy>;
0396 phy-names = "usb2-utmi-host-phy";
0397 status = "disabled";
0398 };
0399
0400 usb2_utmi_host_phy: phy@5f000 {
0401 compatible = "marvell,a3700-utmi-host-phy";
0402 reg = <0x5f000 0x800>;
0403 marvell,usb-misc-reg = <&usb2_syscon>;
0404 #phy-cells = <0>;
0405 };
0406
0407 usb2_syscon: system-controller@5f800 {
0408 compatible = "marvell,armada-3700-usb2-host-misc",
0409 "syscon";
0410 reg = <0x5f800 0x800>;
0411 };
0412
0413 xor@60900 {
0414 compatible = "marvell,armada-3700-xor";
0415 reg = <0x60900 0x100>,
0416 <0x60b00 0x100>;
0417
0418 xor10 {
0419 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
0420 };
0421 xor11 {
0422 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
0423 };
0424 };
0425
0426 crypto: crypto@90000 {
0427 compatible = "inside-secure,safexcel-eip97ies";
0428 reg = <0x90000 0x20000>;
0429 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
0430 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
0431 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
0432 <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
0433 <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
0434 <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
0435 interrupt-names = "mem", "ring0", "ring1",
0436 "ring2", "ring3", "eip";
0437 clocks = <&nb_periph_clk 15>;
0438 };
0439
0440 rwtm: mailbox@b0000 {
0441 compatible = "marvell,armada-3700-rwtm-mailbox";
0442 reg = <0xb0000 0x100>;
0443 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
0444 #mbox-cells = <1>;
0445 };
0446
0447 sdhci1: mmc@d0000 {
0448 compatible = "marvell,armada-3700-sdhci",
0449 "marvell,sdhci-xenon";
0450 reg = <0xd0000 0x300>,
0451 <0x1e808 0x4>;
0452 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
0453 clocks = <&nb_periph_clk 0>;
0454 clock-names = "core";
0455 status = "disabled";
0456 };
0457
0458 sdhci0: mmc@d8000 {
0459 compatible = "marvell,armada-3700-sdhci",
0460 "marvell,sdhci-xenon";
0461 reg = <0xd8000 0x300>,
0462 <0x17808 0x4>;
0463 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
0464 clocks = <&nb_periph_clk 0>;
0465 clock-names = "core";
0466 status = "disabled";
0467 };
0468
0469 sata: sata@e0000 {
0470 compatible = "marvell,armada-3700-ahci";
0471 reg = <0xe0000 0x178>;
0472 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
0473 clocks = <&nb_periph_clk 1>;
0474 phys = <&comphy2 0>;
0475 phy-names = "sata-phy";
0476 status = "disabled";
0477 };
0478
0479 gic: interrupt-controller@1d00000 {
0480 compatible = "arm,gic-v3";
0481 #interrupt-cells = <3>;
0482 interrupt-controller;
0483 reg = <0x1d00000 0x10000>, /* GICD */
0484 <0x1d40000 0x40000>, /* GICR */
0485 <0x1d80000 0x2000>, /* GICC */
0486 <0x1d90000 0x2000>, /* GICH */
0487 <0x1da0000 0x20000>; /* GICV */
0488 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
0489 };
0490 };
0491
0492 pcie0: pcie@d0070000 {
0493 compatible = "marvell,armada-3700-pcie";
0494 device_type = "pci";
0495 status = "disabled";
0496 reg = <0 0xd0070000 0 0x20000>;
0497 #address-cells = <3>;
0498 #size-cells = <2>;
0499 bus-range = <0x00 0xff>;
0500 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
0501 #interrupt-cells = <1>;
0502 clocks = <&sb_periph_clk 13>;
0503 msi-parent = <&pcie0>;
0504 msi-controller;
0505 /*
0506 * The 128 MiB address range [0xe8000000-0xf0000000] is
0507 * dedicated for PCIe and can be assigned to 8 windows
0508 * with size a power of two. Use one 64 KiB window for
0509 * IO at the end and the remaining seven windows
0510 * (totaling 127 MiB) for MEM.
0511 */
0512 ranges = <0x82000000 0 0xe8000000 0 0xe8000000 0 0x07f00000 /* Port 0 MEM */
0513 0x81000000 0 0x00000000 0 0xefff0000 0 0x00010000>; /* Port 0 IO */
0514 interrupt-map-mask = <0 0 0 7>;
0515 interrupt-map = <0 0 0 1 &pcie_intc 0>,
0516 <0 0 0 2 &pcie_intc 1>,
0517 <0 0 0 3 &pcie_intc 2>,
0518 <0 0 0 4 &pcie_intc 3>;
0519 max-link-speed = <2>;
0520 phys = <&comphy1 0>;
0521 pcie_intc: interrupt-controller {
0522 interrupt-controller;
0523 #interrupt-cells = <1>;
0524 };
0525 };
0526 };
0527
0528 firmware {
0529 armada-3700-rwtm {
0530 compatible = "marvell,armada-3700-rwtm-firmware";
0531 mboxes = <&rwtm 0>;
0532 status = "okay";
0533 };
0534 };
0535 };