1*f126890aSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*f126890aSEmmanuel Vadot/* 3*f126890aSEmmanuel Vadot * Device Tree Include file for Marvell Armada 370 and Armada XP SoC 4*f126890aSEmmanuel Vadot * 5*f126890aSEmmanuel Vadot * Copyright (C) 2012 Marvell 6*f126890aSEmmanuel Vadot * 7*f126890aSEmmanuel Vadot * Lior Amsalem <alior@marvell.com> 8*f126890aSEmmanuel Vadot * Gregory CLEMENT <gregory.clement@free-electrons.com> 9*f126890aSEmmanuel Vadot * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 10*f126890aSEmmanuel Vadot * Ben Dooks <ben.dooks@codethink.co.uk> 11*f126890aSEmmanuel Vadot * 12*f126890aSEmmanuel Vadot * This file contains the definitions that are common to the Armada 13*f126890aSEmmanuel Vadot * 370 and Armada XP SoC. 14*f126890aSEmmanuel Vadot */ 15*f126890aSEmmanuel Vadot 16*f126890aSEmmanuel Vadot#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 17*f126890aSEmmanuel Vadot 18*f126890aSEmmanuel Vadot/ { 19*f126890aSEmmanuel Vadot model = "Marvell Armada 370 and XP SoC"; 20*f126890aSEmmanuel Vadot compatible = "marvell,armada-370-xp"; 21*f126890aSEmmanuel Vadot 22*f126890aSEmmanuel Vadot aliases { 23*f126890aSEmmanuel Vadot serial0 = &uart0; 24*f126890aSEmmanuel Vadot serial1 = &uart1; 25*f126890aSEmmanuel Vadot }; 26*f126890aSEmmanuel Vadot 27*f126890aSEmmanuel Vadot cpus { 28*f126890aSEmmanuel Vadot #address-cells = <1>; 29*f126890aSEmmanuel Vadot #size-cells = <0>; 30*f126890aSEmmanuel Vadot cpu@0 { 31*f126890aSEmmanuel Vadot compatible = "marvell,sheeva-v7"; 32*f126890aSEmmanuel Vadot device_type = "cpu"; 33*f126890aSEmmanuel Vadot reg = <0>; 34*f126890aSEmmanuel Vadot }; 35*f126890aSEmmanuel Vadot }; 36*f126890aSEmmanuel Vadot 37*f126890aSEmmanuel Vadot pmu { 38*f126890aSEmmanuel Vadot compatible = "arm,cortex-a9-pmu"; 39*f126890aSEmmanuel Vadot interrupts-extended = <&mpic 3>; 40*f126890aSEmmanuel Vadot }; 41*f126890aSEmmanuel Vadot 42*f126890aSEmmanuel Vadot soc { 43*f126890aSEmmanuel Vadot #address-cells = <2>; 44*f126890aSEmmanuel Vadot #size-cells = <1>; 45*f126890aSEmmanuel Vadot controller = <&mbusc>; 46*f126890aSEmmanuel Vadot interrupt-parent = <&mpic>; 47*f126890aSEmmanuel Vadot pcie-mem-aperture = <0xf8000000 0x7e00000>; 48*f126890aSEmmanuel Vadot pcie-io-aperture = <0xffe00000 0x100000>; 49*f126890aSEmmanuel Vadot 50*f126890aSEmmanuel Vadot devbus_bootcs: devbus-bootcs { 51*f126890aSEmmanuel Vadot compatible = "marvell,mvebu-devbus"; 52*f126890aSEmmanuel Vadot reg = <MBUS_ID(0xf0, 0x01) 0x10400 0x8>; 53*f126890aSEmmanuel Vadot ranges = <0 MBUS_ID(0x01, 0x2f) 0 0xffffffff>; 54*f126890aSEmmanuel Vadot #address-cells = <1>; 55*f126890aSEmmanuel Vadot #size-cells = <1>; 56*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 57*f126890aSEmmanuel Vadot status = "disabled"; 58*f126890aSEmmanuel Vadot }; 59*f126890aSEmmanuel Vadot 60*f126890aSEmmanuel Vadot devbus_cs0: devbus-cs0 { 61*f126890aSEmmanuel Vadot compatible = "marvell,mvebu-devbus"; 62*f126890aSEmmanuel Vadot reg = <MBUS_ID(0xf0, 0x01) 0x10408 0x8>; 63*f126890aSEmmanuel Vadot ranges = <0 MBUS_ID(0x01, 0x3e) 0 0xffffffff>; 64*f126890aSEmmanuel Vadot #address-cells = <1>; 65*f126890aSEmmanuel Vadot #size-cells = <1>; 66*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 67*f126890aSEmmanuel Vadot status = "disabled"; 68*f126890aSEmmanuel Vadot }; 69*f126890aSEmmanuel Vadot 70*f126890aSEmmanuel Vadot devbus_cs1: devbus-cs1 { 71*f126890aSEmmanuel Vadot compatible = "marvell,mvebu-devbus"; 72*f126890aSEmmanuel Vadot reg = <MBUS_ID(0xf0, 0x01) 0x10410 0x8>; 73*f126890aSEmmanuel Vadot ranges = <0 MBUS_ID(0x01, 0x3d) 0 0xffffffff>; 74*f126890aSEmmanuel Vadot #address-cells = <1>; 75*f126890aSEmmanuel Vadot #size-cells = <1>; 76*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 77*f126890aSEmmanuel Vadot status = "disabled"; 78*f126890aSEmmanuel Vadot }; 79*f126890aSEmmanuel Vadot 80*f126890aSEmmanuel Vadot devbus_cs2: devbus-cs2 { 81*f126890aSEmmanuel Vadot compatible = "marvell,mvebu-devbus"; 82*f126890aSEmmanuel Vadot reg = <MBUS_ID(0xf0, 0x01) 0x10418 0x8>; 83*f126890aSEmmanuel Vadot ranges = <0 MBUS_ID(0x01, 0x3b) 0 0xffffffff>; 84*f126890aSEmmanuel Vadot #address-cells = <1>; 85*f126890aSEmmanuel Vadot #size-cells = <1>; 86*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 87*f126890aSEmmanuel Vadot status = "disabled"; 88*f126890aSEmmanuel Vadot }; 89*f126890aSEmmanuel Vadot 90*f126890aSEmmanuel Vadot devbus_cs3: devbus-cs3 { 91*f126890aSEmmanuel Vadot compatible = "marvell,mvebu-devbus"; 92*f126890aSEmmanuel Vadot reg = <MBUS_ID(0xf0, 0x01) 0x10420 0x8>; 93*f126890aSEmmanuel Vadot ranges = <0 MBUS_ID(0x01, 0x37) 0 0xffffffff>; 94*f126890aSEmmanuel Vadot #address-cells = <1>; 95*f126890aSEmmanuel Vadot #size-cells = <1>; 96*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 97*f126890aSEmmanuel Vadot status = "disabled"; 98*f126890aSEmmanuel Vadot }; 99*f126890aSEmmanuel Vadot 100*f126890aSEmmanuel Vadot internal-regs { 101*f126890aSEmmanuel Vadot compatible = "simple-bus"; 102*f126890aSEmmanuel Vadot #address-cells = <1>; 103*f126890aSEmmanuel Vadot #size-cells = <1>; 104*f126890aSEmmanuel Vadot ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>; 105*f126890aSEmmanuel Vadot 106*f126890aSEmmanuel Vadot rtc: rtc@10300 { 107*f126890aSEmmanuel Vadot compatible = "marvell,orion-rtc"; 108*f126890aSEmmanuel Vadot reg = <0x10300 0x20>; 109*f126890aSEmmanuel Vadot interrupts = <50>; 110*f126890aSEmmanuel Vadot }; 111*f126890aSEmmanuel Vadot 112*f126890aSEmmanuel Vadot i2c0: i2c@11000 { 113*f126890aSEmmanuel Vadot compatible = "marvell,mv64xxx-i2c"; 114*f126890aSEmmanuel Vadot #address-cells = <1>; 115*f126890aSEmmanuel Vadot #size-cells = <0>; 116*f126890aSEmmanuel Vadot interrupts = <31>; 117*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 118*f126890aSEmmanuel Vadot status = "disabled"; 119*f126890aSEmmanuel Vadot }; 120*f126890aSEmmanuel Vadot 121*f126890aSEmmanuel Vadot i2c1: i2c@11100 { 122*f126890aSEmmanuel Vadot compatible = "marvell,mv64xxx-i2c"; 123*f126890aSEmmanuel Vadot #address-cells = <1>; 124*f126890aSEmmanuel Vadot #size-cells = <0>; 125*f126890aSEmmanuel Vadot interrupts = <32>; 126*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 127*f126890aSEmmanuel Vadot status = "disabled"; 128*f126890aSEmmanuel Vadot }; 129*f126890aSEmmanuel Vadot 130*f126890aSEmmanuel Vadot uart0: serial@12000 { 131*f126890aSEmmanuel Vadot compatible = "snps,dw-apb-uart"; 132*f126890aSEmmanuel Vadot reg = <0x12000 0x100>; 133*f126890aSEmmanuel Vadot reg-shift = <2>; 134*f126890aSEmmanuel Vadot interrupts = <41>; 135*f126890aSEmmanuel Vadot reg-io-width = <1>; 136*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 137*f126890aSEmmanuel Vadot status = "disabled"; 138*f126890aSEmmanuel Vadot }; 139*f126890aSEmmanuel Vadot 140*f126890aSEmmanuel Vadot uart1: serial@12100 { 141*f126890aSEmmanuel Vadot compatible = "snps,dw-apb-uart"; 142*f126890aSEmmanuel Vadot reg = <0x12100 0x100>; 143*f126890aSEmmanuel Vadot reg-shift = <2>; 144*f126890aSEmmanuel Vadot interrupts = <42>; 145*f126890aSEmmanuel Vadot reg-io-width = <1>; 146*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 147*f126890aSEmmanuel Vadot status = "disabled"; 148*f126890aSEmmanuel Vadot }; 149*f126890aSEmmanuel Vadot 150*f126890aSEmmanuel Vadot pinctrl: pin-ctrl@18000 { 151*f126890aSEmmanuel Vadot reg = <0x18000 0x38>; 152*f126890aSEmmanuel Vadot }; 153*f126890aSEmmanuel Vadot 154*f126890aSEmmanuel Vadot coredivclk: corediv-clock@18740 { 155*f126890aSEmmanuel Vadot compatible = "marvell,armada-370-corediv-clock"; 156*f126890aSEmmanuel Vadot reg = <0x18740 0xc>; 157*f126890aSEmmanuel Vadot #clock-cells = <1>; 158*f126890aSEmmanuel Vadot clocks = <&mainpll>; 159*f126890aSEmmanuel Vadot clock-output-names = "nand"; 160*f126890aSEmmanuel Vadot }; 161*f126890aSEmmanuel Vadot 162*f126890aSEmmanuel Vadot mbusc: mbus-controller@20000 { 163*f126890aSEmmanuel Vadot compatible = "marvell,mbus-controller"; 164*f126890aSEmmanuel Vadot reg = <0x20000 0x100>, <0x20180 0x20>, 165*f126890aSEmmanuel Vadot <0x20250 0x8>; 166*f126890aSEmmanuel Vadot }; 167*f126890aSEmmanuel Vadot 168*f126890aSEmmanuel Vadot mpic: interrupt-controller@20a00 { 169*f126890aSEmmanuel Vadot compatible = "marvell,mpic"; 170*f126890aSEmmanuel Vadot #interrupt-cells = <1>; 171*f126890aSEmmanuel Vadot interrupt-controller; 172*f126890aSEmmanuel Vadot msi-controller; 173*f126890aSEmmanuel Vadot }; 174*f126890aSEmmanuel Vadot 175*f126890aSEmmanuel Vadot coherencyfab: coherency-fabric@20200 { 176*f126890aSEmmanuel Vadot compatible = "marvell,coherency-fabric"; 177*f126890aSEmmanuel Vadot reg = <0x20200 0xb0>, <0x21010 0x1c>; 178*f126890aSEmmanuel Vadot }; 179*f126890aSEmmanuel Vadot 180*f126890aSEmmanuel Vadot timer: timer@20300 { 181*f126890aSEmmanuel Vadot reg = <0x20300 0x30>, <0x21040 0x30>; 182*f126890aSEmmanuel Vadot interrupts = <37>, <38>, <39>, <40>, <5>, <6>; 183*f126890aSEmmanuel Vadot }; 184*f126890aSEmmanuel Vadot 185*f126890aSEmmanuel Vadot watchdog: watchdog@20300 { 186*f126890aSEmmanuel Vadot reg = <0x20300 0x34>, <0x20704 0x4>; 187*f126890aSEmmanuel Vadot }; 188*f126890aSEmmanuel Vadot 189*f126890aSEmmanuel Vadot cpurst: cpurst@20800 { 190*f126890aSEmmanuel Vadot compatible = "marvell,armada-370-cpu-reset"; 191*f126890aSEmmanuel Vadot reg = <0x20800 0x8>; 192*f126890aSEmmanuel Vadot }; 193*f126890aSEmmanuel Vadot 194*f126890aSEmmanuel Vadot pmsu: pmsu@22000 { 195*f126890aSEmmanuel Vadot compatible = "marvell,armada-370-pmsu"; 196*f126890aSEmmanuel Vadot reg = <0x22000 0x1000>; 197*f126890aSEmmanuel Vadot }; 198*f126890aSEmmanuel Vadot 199*f126890aSEmmanuel Vadot usb0: usb@50000 { 200*f126890aSEmmanuel Vadot compatible = "marvell,orion-ehci"; 201*f126890aSEmmanuel Vadot reg = <0x50000 0x500>; 202*f126890aSEmmanuel Vadot interrupts = <45>; 203*f126890aSEmmanuel Vadot status = "disabled"; 204*f126890aSEmmanuel Vadot }; 205*f126890aSEmmanuel Vadot 206*f126890aSEmmanuel Vadot usb1: usb@51000 { 207*f126890aSEmmanuel Vadot compatible = "marvell,orion-ehci"; 208*f126890aSEmmanuel Vadot reg = <0x51000 0x500>; 209*f126890aSEmmanuel Vadot interrupts = <46>; 210*f126890aSEmmanuel Vadot status = "disabled"; 211*f126890aSEmmanuel Vadot }; 212*f126890aSEmmanuel Vadot 213*f126890aSEmmanuel Vadot eth0: ethernet@70000 { 214*f126890aSEmmanuel Vadot reg = <0x70000 0x4000>; 215*f126890aSEmmanuel Vadot interrupts = <8>; 216*f126890aSEmmanuel Vadot clocks = <&gateclk 4>; 217*f126890aSEmmanuel Vadot status = "disabled"; 218*f126890aSEmmanuel Vadot }; 219*f126890aSEmmanuel Vadot 220*f126890aSEmmanuel Vadot mdio: mdio@72004 { 221*f126890aSEmmanuel Vadot #address-cells = <1>; 222*f126890aSEmmanuel Vadot #size-cells = <0>; 223*f126890aSEmmanuel Vadot compatible = "marvell,orion-mdio"; 224*f126890aSEmmanuel Vadot reg = <0x72004 0x4>; 225*f126890aSEmmanuel Vadot clocks = <&gateclk 4>; 226*f126890aSEmmanuel Vadot }; 227*f126890aSEmmanuel Vadot 228*f126890aSEmmanuel Vadot eth1: ethernet@74000 { 229*f126890aSEmmanuel Vadot reg = <0x74000 0x4000>; 230*f126890aSEmmanuel Vadot interrupts = <10>; 231*f126890aSEmmanuel Vadot clocks = <&gateclk 3>; 232*f126890aSEmmanuel Vadot status = "disabled"; 233*f126890aSEmmanuel Vadot }; 234*f126890aSEmmanuel Vadot 235*f126890aSEmmanuel Vadot sata: sata@a0000 { 236*f126890aSEmmanuel Vadot compatible = "marvell,armada-370-sata"; 237*f126890aSEmmanuel Vadot reg = <0xa0000 0x5000>; 238*f126890aSEmmanuel Vadot interrupts = <55>; 239*f126890aSEmmanuel Vadot clocks = <&gateclk 15>, <&gateclk 30>; 240*f126890aSEmmanuel Vadot clock-names = "0", "1"; 241*f126890aSEmmanuel Vadot status = "disabled"; 242*f126890aSEmmanuel Vadot }; 243*f126890aSEmmanuel Vadot 244*f126890aSEmmanuel Vadot nand_controller: nand-controller@d0000 { 245*f126890aSEmmanuel Vadot compatible = "marvell,armada370-nand-controller"; 246*f126890aSEmmanuel Vadot reg = <0xd0000 0x54>; 247*f126890aSEmmanuel Vadot #address-cells = <1>; 248*f126890aSEmmanuel Vadot #size-cells = <0>; 249*f126890aSEmmanuel Vadot interrupts = <113>; 250*f126890aSEmmanuel Vadot clocks = <&coredivclk 0>; 251*f126890aSEmmanuel Vadot status = "disabled"; 252*f126890aSEmmanuel Vadot }; 253*f126890aSEmmanuel Vadot 254*f126890aSEmmanuel Vadot sdio: mvsdio@d4000 { 255*f126890aSEmmanuel Vadot compatible = "marvell,orion-sdio"; 256*f126890aSEmmanuel Vadot reg = <0xd4000 0x200>; 257*f126890aSEmmanuel Vadot interrupts = <54>; 258*f126890aSEmmanuel Vadot clocks = <&gateclk 17>; 259*f126890aSEmmanuel Vadot bus-width = <4>; 260*f126890aSEmmanuel Vadot cap-sdio-irq; 261*f126890aSEmmanuel Vadot cap-sd-highspeed; 262*f126890aSEmmanuel Vadot cap-mmc-highspeed; 263*f126890aSEmmanuel Vadot status = "disabled"; 264*f126890aSEmmanuel Vadot }; 265*f126890aSEmmanuel Vadot }; 266*f126890aSEmmanuel Vadot 267*f126890aSEmmanuel Vadot spi0: spi@10600 { 268*f126890aSEmmanuel Vadot reg = <MBUS_ID(0xf0, 0x01) 0x10600 0x28>, /* control */ 269*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x1e) 0 0xffffffff>, /* CS0 */ 270*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x5e) 0 0xffffffff>, /* CS1 */ 271*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x9e) 0 0xffffffff>, /* CS2 */ 272*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0xde) 0 0xffffffff>, /* CS3 */ 273*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x1f) 0 0xffffffff>, /* CS4 */ 274*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x5f) 0 0xffffffff>, /* CS5 */ 275*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x9f) 0 0xffffffff>, /* CS6 */ 276*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0xdf) 0 0xffffffff>; /* CS7 */ 277*f126890aSEmmanuel Vadot #address-cells = <1>; 278*f126890aSEmmanuel Vadot #size-cells = <0>; 279*f126890aSEmmanuel Vadot cell-index = <0>; 280*f126890aSEmmanuel Vadot interrupts = <30>; 281*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 282*f126890aSEmmanuel Vadot status = "disabled"; 283*f126890aSEmmanuel Vadot }; 284*f126890aSEmmanuel Vadot 285*f126890aSEmmanuel Vadot spi1: spi@10680 { 286*f126890aSEmmanuel Vadot reg = <MBUS_ID(0xf0, 0x01) 0x10680 0x28>, /* control */ 287*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x1a) 0 0xffffffff>, /* CS0 */ 288*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x5a) 0 0xffffffff>, /* CS1 */ 289*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x9a) 0 0xffffffff>, /* CS2 */ 290*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0xda) 0 0xffffffff>, /* CS3 */ 291*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x1b) 0 0xffffffff>, /* CS4 */ 292*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x5b) 0 0xffffffff>, /* CS5 */ 293*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0x9b) 0 0xffffffff>, /* CS6 */ 294*f126890aSEmmanuel Vadot <MBUS_ID(0x01, 0xdb) 0 0xffffffff>; /* CS7 */ 295*f126890aSEmmanuel Vadot #address-cells = <1>; 296*f126890aSEmmanuel Vadot #size-cells = <0>; 297*f126890aSEmmanuel Vadot cell-index = <1>; 298*f126890aSEmmanuel Vadot interrupts = <92>; 299*f126890aSEmmanuel Vadot clocks = <&coreclk 0>; 300*f126890aSEmmanuel Vadot status = "disabled"; 301*f126890aSEmmanuel Vadot }; 302*f126890aSEmmanuel Vadot }; 303*f126890aSEmmanuel Vadot 304*f126890aSEmmanuel Vadot clocks { 305*f126890aSEmmanuel Vadot /* 2 GHz fixed main PLL */ 306*f126890aSEmmanuel Vadot mainpll: mainpll { 307*f126890aSEmmanuel Vadot compatible = "fixed-clock"; 308*f126890aSEmmanuel Vadot #clock-cells = <0>; 309*f126890aSEmmanuel Vadot clock-frequency = <2000000000>; 310*f126890aSEmmanuel Vadot }; 311*f126890aSEmmanuel Vadot }; 312*f126890aSEmmanuel Vadot }; 313