1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Device Tree Include file for Marvell Armada 39x family of SoCs. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2015 Marvell 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 11*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun/ { 16*4882a593Smuzhiyun #address-cells = <1>; 17*4882a593Smuzhiyun #size-cells = <1>; 18*4882a593Smuzhiyun model = "Marvell Armada 39x family SoC"; 19*4882a593Smuzhiyun compatible = "marvell,armada390"; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun aliases { 22*4882a593Smuzhiyun gpio0 = &gpio0; 23*4882a593Smuzhiyun gpio1 = &gpio1; 24*4882a593Smuzhiyun serial0 = &uart0; 25*4882a593Smuzhiyun serial1 = &uart1; 26*4882a593Smuzhiyun serial2 = &uart2; 27*4882a593Smuzhiyun serial3 = &uart3; 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun cpus { 31*4882a593Smuzhiyun #address-cells = <1>; 32*4882a593Smuzhiyun #size-cells = <0>; 33*4882a593Smuzhiyun enable-method = "marvell,armada-390-smp"; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun cpu@0 { 36*4882a593Smuzhiyun device_type = "cpu"; 37*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 38*4882a593Smuzhiyun reg = <0>; 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun cpu@1 { 41*4882a593Smuzhiyun device_type = "cpu"; 42*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 43*4882a593Smuzhiyun reg = <1>; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun }; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun pmu { 48*4882a593Smuzhiyun compatible = "arm,cortex-a9-pmu"; 49*4882a593Smuzhiyun interrupts-extended = <&mpic 3>; 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun soc { 53*4882a593Smuzhiyun compatible = "marvell,armada390-mbus", "marvell,armadaxp-mbus", 54*4882a593Smuzhiyun "simple-bus"; 55*4882a593Smuzhiyun #address-cells = <2>; 56*4882a593Smuzhiyun #size-cells = <1>; 57*4882a593Smuzhiyun controller = <&mbusc>; 58*4882a593Smuzhiyun interrupt-parent = <&gic>; 59*4882a593Smuzhiyun pcie-mem-aperture = <0xe0000000 0x8000000>; 60*4882a593Smuzhiyun pcie-io-aperture = <0xe8000000 0x100000>; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun bootrom { 63*4882a593Smuzhiyun compatible = "marvell,bootrom"; 64*4882a593Smuzhiyun reg = <MBUS_ID(0x01, 0x1d) 0 0x200000>; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun internal-regs { 68*4882a593Smuzhiyun compatible = "simple-bus"; 69*4882a593Smuzhiyun #address-cells = <1>; 70*4882a593Smuzhiyun #size-cells = <1>; 71*4882a593Smuzhiyun ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun L2: cache-controller@8000 { 74*4882a593Smuzhiyun compatible = "arm,pl310-cache"; 75*4882a593Smuzhiyun reg = <0x8000 0x1000>; 76*4882a593Smuzhiyun cache-unified; 77*4882a593Smuzhiyun cache-level = <2>; 78*4882a593Smuzhiyun arm,double-linefill-incr = <0>; 79*4882a593Smuzhiyun arm,double-linefill-wrap = <0>; 80*4882a593Smuzhiyun arm,double-linefill = <0>; 81*4882a593Smuzhiyun prefetch-data = <1>; 82*4882a593Smuzhiyun }; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun scu@c000 { 85*4882a593Smuzhiyun compatible = "arm,cortex-a9-scu"; 86*4882a593Smuzhiyun reg = <0xc000 0x100>; 87*4882a593Smuzhiyun }; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun timer@c600 { 90*4882a593Smuzhiyun compatible = "arm,cortex-a9-twd-timer"; 91*4882a593Smuzhiyun reg = <0xc600 0x20>; 92*4882a593Smuzhiyun interrupts = <GIC_PPI 13 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>; 93*4882a593Smuzhiyun clocks = <&coreclk 2>; 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun gic: interrupt-controller@d000 { 97*4882a593Smuzhiyun compatible = "arm,cortex-a9-gic"; 98*4882a593Smuzhiyun #interrupt-cells = <3>; 99*4882a593Smuzhiyun #size-cells = <0>; 100*4882a593Smuzhiyun interrupt-controller; 101*4882a593Smuzhiyun reg = <0xd000 0x1000>, 102*4882a593Smuzhiyun <0xc100 0x100>; 103*4882a593Smuzhiyun }; 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun i2c0: i2c@11000 { 106*4882a593Smuzhiyun compatible = "marvell,mv64xxx-i2c"; 107*4882a593Smuzhiyun reg = <0x11000 0x20>; 108*4882a593Smuzhiyun #address-cells = <1>; 109*4882a593Smuzhiyun #size-cells = <0>; 110*4882a593Smuzhiyun interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 111*4882a593Smuzhiyun clocks = <&coreclk 0>; 112*4882a593Smuzhiyun status = "disabled"; 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun i2c1: i2c@11100 { 116*4882a593Smuzhiyun compatible = "marvell,mv64xxx-i2c"; 117*4882a593Smuzhiyun reg = <0x11100 0x20>; 118*4882a593Smuzhiyun #address-cells = <1>; 119*4882a593Smuzhiyun #size-cells = <0>; 120*4882a593Smuzhiyun interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 121*4882a593Smuzhiyun clocks = <&coreclk 0>; 122*4882a593Smuzhiyun status = "disabled"; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun i2c2: i2c@11200 { 126*4882a593Smuzhiyun compatible = "marvell,mv64xxx-i2c"; 127*4882a593Smuzhiyun reg = <0x11200 0x20>; 128*4882a593Smuzhiyun #address-cells = <1>; 129*4882a593Smuzhiyun #size-cells = <0>; 130*4882a593Smuzhiyun interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 131*4882a593Smuzhiyun clocks = <&coreclk 0>; 132*4882a593Smuzhiyun status = "disabled"; 133*4882a593Smuzhiyun }; 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun i2c3: i2c@11300 { 136*4882a593Smuzhiyun compatible = "marvell,mv64xxx-i2c"; 137*4882a593Smuzhiyun reg = <0x11300 0x20>; 138*4882a593Smuzhiyun #address-cells = <1>; 139*4882a593Smuzhiyun #size-cells = <0>; 140*4882a593Smuzhiyun interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 141*4882a593Smuzhiyun clocks = <&coreclk 0>; 142*4882a593Smuzhiyun status = "disabled"; 143*4882a593Smuzhiyun }; 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun uart0: serial@12000 { 146*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 147*4882a593Smuzhiyun reg = <0x12000 0x100>; 148*4882a593Smuzhiyun reg-shift = <2>; 149*4882a593Smuzhiyun interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 150*4882a593Smuzhiyun reg-io-width = <1>; 151*4882a593Smuzhiyun clocks = <&coreclk 0>; 152*4882a593Smuzhiyun status = "disabled"; 153*4882a593Smuzhiyun }; 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun uart1: serial@12100 { 156*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 157*4882a593Smuzhiyun reg = <0x12100 0x100>; 158*4882a593Smuzhiyun reg-shift = <2>; 159*4882a593Smuzhiyun interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; 160*4882a593Smuzhiyun reg-io-width = <1>; 161*4882a593Smuzhiyun clocks = <&coreclk 0>; 162*4882a593Smuzhiyun status = "disabled"; 163*4882a593Smuzhiyun }; 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun uart2: serial@12200 { 166*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 167*4882a593Smuzhiyun reg = <0x12200 0x100>; 168*4882a593Smuzhiyun reg-shift = <2>; 169*4882a593Smuzhiyun interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 170*4882a593Smuzhiyun reg-io-width = <1>; 171*4882a593Smuzhiyun clocks = <&coreclk 0>; 172*4882a593Smuzhiyun status = "disabled"; 173*4882a593Smuzhiyun }; 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun uart3: serial@12300 { 176*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 177*4882a593Smuzhiyun reg = <0x12300 0x100>; 178*4882a593Smuzhiyun reg-shift = <2>; 179*4882a593Smuzhiyun interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; 180*4882a593Smuzhiyun reg-io-width = <1>; 181*4882a593Smuzhiyun clocks = <&coreclk 0>; 182*4882a593Smuzhiyun status = "disabled"; 183*4882a593Smuzhiyun }; 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun pinctrl@18000 { 186*4882a593Smuzhiyun i2c0_pins: i2c0-pins { 187*4882a593Smuzhiyun marvell,pins = "mpp2", "mpp3"; 188*4882a593Smuzhiyun marvell,function = "i2c0"; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun uart0_pins: uart0-pins { 192*4882a593Smuzhiyun marvell,pins = "mpp0", "mpp1"; 193*4882a593Smuzhiyun marvell,function = "ua0"; 194*4882a593Smuzhiyun }; 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun uart1_pins: uart1-pins { 197*4882a593Smuzhiyun marvell,pins = "mpp19", "mpp20"; 198*4882a593Smuzhiyun marvell,function = "ua1"; 199*4882a593Smuzhiyun }; 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun spi1_pins: spi1-pins { 202*4882a593Smuzhiyun marvell,pins = "mpp56", "mpp57", "mpp58", "mpp59"; 203*4882a593Smuzhiyun marvell,function = "spi1"; 204*4882a593Smuzhiyun }; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun nand_pins: nand-pins { 207*4882a593Smuzhiyun marvell,pins = "mpp22", "mpp34", "mpp23", "mpp33", 208*4882a593Smuzhiyun "mpp38", "mpp28", "mpp40", "mpp42", 209*4882a593Smuzhiyun "mpp35", "mpp36", "mpp25", "mpp30", 210*4882a593Smuzhiyun "mpp32"; 211*4882a593Smuzhiyun marvell,function = "dev"; 212*4882a593Smuzhiyun }; 213*4882a593Smuzhiyun }; 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun gpio0: gpio@18100 { 216*4882a593Smuzhiyun compatible = "marvell,orion-gpio"; 217*4882a593Smuzhiyun reg = <0x18100 0x40>; 218*4882a593Smuzhiyun ngpios = <32>; 219*4882a593Smuzhiyun gpio-controller; 220*4882a593Smuzhiyun #gpio-cells = <2>; 221*4882a593Smuzhiyun interrupt-controller; 222*4882a593Smuzhiyun #interrupt-cells = <2>; 223*4882a593Smuzhiyun interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>, 224*4882a593Smuzhiyun <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>, 225*4882a593Smuzhiyun <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>, 226*4882a593Smuzhiyun <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>; 227*4882a593Smuzhiyun }; 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun gpio1: gpio@18140 { 230*4882a593Smuzhiyun compatible = "marvell,orion-gpio"; 231*4882a593Smuzhiyun reg = <0x18140 0x40>; 232*4882a593Smuzhiyun ngpios = <28>; 233*4882a593Smuzhiyun gpio-controller; 234*4882a593Smuzhiyun #gpio-cells = <2>; 235*4882a593Smuzhiyun interrupt-controller; 236*4882a593Smuzhiyun #interrupt-cells = <2>; 237*4882a593Smuzhiyun interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>, 238*4882a593Smuzhiyun <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>, 239*4882a593Smuzhiyun <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>, 240*4882a593Smuzhiyun <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 241*4882a593Smuzhiyun }; 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun system-controller@18200 { 244*4882a593Smuzhiyun compatible = "marvell,armada-390-system-controller", 245*4882a593Smuzhiyun "marvell,armada-370-xp-system-controller"; 246*4882a593Smuzhiyun reg = <0x18200 0x100>; 247*4882a593Smuzhiyun }; 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun gateclk: clock-gating-control@18220 { 250*4882a593Smuzhiyun compatible = "marvell,armada-390-gating-clock"; 251*4882a593Smuzhiyun reg = <0x18220 0x4>; 252*4882a593Smuzhiyun clocks = <&coreclk 0>; 253*4882a593Smuzhiyun #clock-cells = <1>; 254*4882a593Smuzhiyun }; 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun coreclk: mvebu-sar@18600 { 257*4882a593Smuzhiyun compatible = "marvell,armada-390-core-clock"; 258*4882a593Smuzhiyun reg = <0x18600 0x04>; 259*4882a593Smuzhiyun #clock-cells = <1>; 260*4882a593Smuzhiyun }; 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun mbusc: mbus-controller@20000 { 263*4882a593Smuzhiyun compatible = "marvell,mbus-controller"; 264*4882a593Smuzhiyun reg = <0x20000 0x100>, <0x20180 0x20>, <0x20250 0x8>; 265*4882a593Smuzhiyun }; 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun mpic: interrupt-controller@20a00 { 268*4882a593Smuzhiyun compatible = "marvell,mpic"; 269*4882a593Smuzhiyun reg = <0x20a00 0x2d0>, <0x21070 0x58>; 270*4882a593Smuzhiyun #interrupt-cells = <1>; 271*4882a593Smuzhiyun #size-cells = <1>; 272*4882a593Smuzhiyun interrupt-controller; 273*4882a593Smuzhiyun msi-controller; 274*4882a593Smuzhiyun interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>; 275*4882a593Smuzhiyun }; 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun timer@20300 { 278*4882a593Smuzhiyun compatible = "marvell,armada-380-timer", 279*4882a593Smuzhiyun "marvell,armada-xp-timer"; 280*4882a593Smuzhiyun reg = <0x20300 0x30>, <0x21040 0x30>; 281*4882a593Smuzhiyun interrupts-extended = <&gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, 282*4882a593Smuzhiyun <&gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, 283*4882a593Smuzhiyun <&gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, 284*4882a593Smuzhiyun <&gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, 285*4882a593Smuzhiyun <&mpic 5>, 286*4882a593Smuzhiyun <&mpic 6>; 287*4882a593Smuzhiyun clocks = <&coreclk 2>, <&coreclk 5>; 288*4882a593Smuzhiyun clock-names = "nbclk", "fixed"; 289*4882a593Smuzhiyun }; 290*4882a593Smuzhiyun 291*4882a593Smuzhiyun watchdog@20300 { 292*4882a593Smuzhiyun compatible = "marvell,armada-380-wdt"; 293*4882a593Smuzhiyun reg = <0x20300 0x34>, <0x20704 0x4>, 294*4882a593Smuzhiyun <0x18260 0x4>; 295*4882a593Smuzhiyun clocks = <&coreclk 2>, <&refclk>; 296*4882a593Smuzhiyun clock-names = "nbclk", "fixed"; 297*4882a593Smuzhiyun }; 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun cpurst@20800 { 300*4882a593Smuzhiyun compatible = "marvell,armada-370-cpu-reset"; 301*4882a593Smuzhiyun reg = <0x20800 0x10>; 302*4882a593Smuzhiyun }; 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun mpcore-soc-ctrl@20d20 { 305*4882a593Smuzhiyun compatible = "marvell,armada-380-mpcore-soc-ctrl"; 306*4882a593Smuzhiyun reg = <0x20d20 0x6c>; 307*4882a593Smuzhiyun }; 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun coherency-fabric@21010 { 310*4882a593Smuzhiyun compatible = "marvell,armada-380-coherency-fabric"; 311*4882a593Smuzhiyun reg = <0x21010 0x1c>; 312*4882a593Smuzhiyun }; 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun pmsu@22000 { 315*4882a593Smuzhiyun compatible = "marvell,armada-390-pmsu", 316*4882a593Smuzhiyun "marvell,armada-380-pmsu"; 317*4882a593Smuzhiyun reg = <0x22000 0x1000>; 318*4882a593Smuzhiyun }; 319*4882a593Smuzhiyun 320*4882a593Smuzhiyun xor@60800 { 321*4882a593Smuzhiyun compatible = "marvell,armada-380-xor", "marvell,orion-xor"; 322*4882a593Smuzhiyun reg = <0x60800 0x100 323*4882a593Smuzhiyun 0x60a00 0x100>; 324*4882a593Smuzhiyun clocks = <&gateclk 22>; 325*4882a593Smuzhiyun status = "okay"; 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun xor00 { 328*4882a593Smuzhiyun interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; 329*4882a593Smuzhiyun dmacap,memcpy; 330*4882a593Smuzhiyun dmacap,xor; 331*4882a593Smuzhiyun }; 332*4882a593Smuzhiyun xor01 { 333*4882a593Smuzhiyun interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 334*4882a593Smuzhiyun dmacap,memcpy; 335*4882a593Smuzhiyun dmacap,xor; 336*4882a593Smuzhiyun dmacap,memset; 337*4882a593Smuzhiyun }; 338*4882a593Smuzhiyun }; 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun xor@60900 { 341*4882a593Smuzhiyun compatible = "marvell,armada-380-xor", "marvell,orion-xor"; 342*4882a593Smuzhiyun reg = <0x60900 0x100 343*4882a593Smuzhiyun 0x60b00 0x100>; 344*4882a593Smuzhiyun clocks = <&gateclk 28>; 345*4882a593Smuzhiyun status = "okay"; 346*4882a593Smuzhiyun 347*4882a593Smuzhiyun xor10 { 348*4882a593Smuzhiyun interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; 349*4882a593Smuzhiyun dmacap,memcpy; 350*4882a593Smuzhiyun dmacap,xor; 351*4882a593Smuzhiyun }; 352*4882a593Smuzhiyun xor11 { 353*4882a593Smuzhiyun interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; 354*4882a593Smuzhiyun dmacap,memcpy; 355*4882a593Smuzhiyun dmacap,xor; 356*4882a593Smuzhiyun dmacap,memset; 357*4882a593Smuzhiyun }; 358*4882a593Smuzhiyun }; 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun rtc@a3800 { 361*4882a593Smuzhiyun compatible = "marvell,armada-380-rtc"; 362*4882a593Smuzhiyun reg = <0xa3800 0x20>, <0x184a0 0x0c>; 363*4882a593Smuzhiyun reg-names = "rtc", "rtc-soc"; 364*4882a593Smuzhiyun interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; 365*4882a593Smuzhiyun }; 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun nand_controller: nand-controller@d0000 { 368*4882a593Smuzhiyun compatible = "marvell,armada370-nand-controller"; 369*4882a593Smuzhiyun reg = <0xd0000 0x54>; 370*4882a593Smuzhiyun #address-cells = <1>; 371*4882a593Smuzhiyun #size-cells = <0>; 372*4882a593Smuzhiyun interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 373*4882a593Smuzhiyun clocks = <&coredivclk 0>; 374*4882a593Smuzhiyun status = "disabled"; 375*4882a593Smuzhiyun }; 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun sdhci@d8000 { 378*4882a593Smuzhiyun compatible = "marvell,armada-380-sdhci"; 379*4882a593Smuzhiyun reg-names = "sdhci", "mbus", "conf-sdio3"; 380*4882a593Smuzhiyun reg = <0xd8000 0x1000>, 381*4882a593Smuzhiyun <0xdc000 0x100>, 382*4882a593Smuzhiyun <0x18454 0x4>; 383*4882a593Smuzhiyun interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 384*4882a593Smuzhiyun clocks = <&gateclk 17>; 385*4882a593Smuzhiyun mrvl,clk-delay-cycles = <0x1F>; 386*4882a593Smuzhiyun status = "disabled"; 387*4882a593Smuzhiyun }; 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun coredivclk: clock@e4250 { 390*4882a593Smuzhiyun compatible = "marvell,armada-390-corediv-clock", 391*4882a593Smuzhiyun "marvell,armada-380-corediv-clock"; 392*4882a593Smuzhiyun reg = <0xe4250 0xc>; 393*4882a593Smuzhiyun #clock-cells = <1>; 394*4882a593Smuzhiyun clocks = <&mainpll>; 395*4882a593Smuzhiyun clock-output-names = "nand"; 396*4882a593Smuzhiyun }; 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun thermal@e8078 { 399*4882a593Smuzhiyun compatible = "marvell,armada380-thermal"; 400*4882a593Smuzhiyun reg = <0xe4078 0x4>, <0xe4074 0x4>; 401*4882a593Smuzhiyun status = "okay"; 402*4882a593Smuzhiyun }; 403*4882a593Smuzhiyun }; 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun pcie { 406*4882a593Smuzhiyun compatible = "marvell,armada-370-pcie"; 407*4882a593Smuzhiyun status = "disabled"; 408*4882a593Smuzhiyun device_type = "pci"; 409*4882a593Smuzhiyun 410*4882a593Smuzhiyun #address-cells = <3>; 411*4882a593Smuzhiyun #size-cells = <2>; 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun msi-parent = <&mpic>; 414*4882a593Smuzhiyun bus-range = <0x00 0xff>; 415*4882a593Smuzhiyun 416*4882a593Smuzhiyun ranges = 417*4882a593Smuzhiyun <0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000 418*4882a593Smuzhiyun 0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000 419*4882a593Smuzhiyun 0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000 420*4882a593Smuzhiyun 0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000 421*4882a593Smuzhiyun 0x82000000 0x1 0 MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 0 MEM */ 422*4882a593Smuzhiyun 0x81000000 0x1 0 MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 0 IO */ 423*4882a593Smuzhiyun 0x82000000 0x2 0 MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 1 MEM */ 424*4882a593Smuzhiyun 0x81000000 0x2 0 MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 1 IO */ 425*4882a593Smuzhiyun 0x82000000 0x3 0 MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 2 MEM */ 426*4882a593Smuzhiyun 0x81000000 0x3 0 MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 2 IO */ 427*4882a593Smuzhiyun 0x82000000 0x4 0 MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 3 MEM */ 428*4882a593Smuzhiyun 0x81000000 0x4 0 MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 3 IO */>; 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun /* 431*4882a593Smuzhiyun * This port can be either x4 or x1. When 432*4882a593Smuzhiyun * configured in x4 by the bootloader, then 433*4882a593Smuzhiyun * pcie@4,0 is not available. 434*4882a593Smuzhiyun */ 435*4882a593Smuzhiyun pcie@1,0 { 436*4882a593Smuzhiyun device_type = "pci"; 437*4882a593Smuzhiyun assigned-addresses = <0x82000800 0 0x80000 0 0x2000>; 438*4882a593Smuzhiyun reg = <0x0800 0 0 0 0>; 439*4882a593Smuzhiyun #address-cells = <3>; 440*4882a593Smuzhiyun #size-cells = <2>; 441*4882a593Smuzhiyun #interrupt-cells = <1>; 442*4882a593Smuzhiyun ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0 443*4882a593Smuzhiyun 0x81000000 0 0 0x81000000 0x1 0 1 0>; 444*4882a593Smuzhiyun bus-range = <0x00 0xff>; 445*4882a593Smuzhiyun interrupt-map-mask = <0 0 0 0>; 446*4882a593Smuzhiyun interrupt-map = <0 0 0 0 &gic GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 447*4882a593Smuzhiyun marvell,pcie-port = <0>; 448*4882a593Smuzhiyun marvell,pcie-lane = <0>; 449*4882a593Smuzhiyun clocks = <&gateclk 8>; 450*4882a593Smuzhiyun status = "disabled"; 451*4882a593Smuzhiyun }; 452*4882a593Smuzhiyun 453*4882a593Smuzhiyun /* x1 port */ 454*4882a593Smuzhiyun pcie@2,0 { 455*4882a593Smuzhiyun device_type = "pci"; 456*4882a593Smuzhiyun assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; 457*4882a593Smuzhiyun reg = <0x1000 0 0 0 0>; 458*4882a593Smuzhiyun #address-cells = <3>; 459*4882a593Smuzhiyun #size-cells = <2>; 460*4882a593Smuzhiyun #interrupt-cells = <1>; 461*4882a593Smuzhiyun ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0 462*4882a593Smuzhiyun 0x81000000 0 0 0x81000000 0x2 0 1 0>; 463*4882a593Smuzhiyun bus-range = <0x00 0xff>; 464*4882a593Smuzhiyun interrupt-map-mask = <0 0 0 0>; 465*4882a593Smuzhiyun interrupt-map = <0 0 0 0 &gic GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; 466*4882a593Smuzhiyun marvell,pcie-port = <1>; 467*4882a593Smuzhiyun marvell,pcie-lane = <0>; 468*4882a593Smuzhiyun clocks = <&gateclk 5>; 469*4882a593Smuzhiyun status = "disabled"; 470*4882a593Smuzhiyun }; 471*4882a593Smuzhiyun 472*4882a593Smuzhiyun /* x1 port */ 473*4882a593Smuzhiyun pcie@3,0 { 474*4882a593Smuzhiyun device_type = "pci"; 475*4882a593Smuzhiyun assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; 476*4882a593Smuzhiyun reg = <0x1800 0 0 0 0>; 477*4882a593Smuzhiyun #address-cells = <3>; 478*4882a593Smuzhiyun #size-cells = <2>; 479*4882a593Smuzhiyun #interrupt-cells = <1>; 480*4882a593Smuzhiyun ranges = <0x82000000 0 0 0x82000000 0x3 0 1 0 481*4882a593Smuzhiyun 0x81000000 0 0 0x81000000 0x3 0 1 0>; 482*4882a593Smuzhiyun bus-range = <0x00 0xff>; 483*4882a593Smuzhiyun interrupt-map-mask = <0 0 0 0>; 484*4882a593Smuzhiyun interrupt-map = <0 0 0 0 &gic GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>; 485*4882a593Smuzhiyun marvell,pcie-port = <2>; 486*4882a593Smuzhiyun marvell,pcie-lane = <0>; 487*4882a593Smuzhiyun clocks = <&gateclk 6>; 488*4882a593Smuzhiyun status = "disabled"; 489*4882a593Smuzhiyun }; 490*4882a593Smuzhiyun 491*4882a593Smuzhiyun /* 492*4882a593Smuzhiyun * x1 port only available when pcie@1,0 is 493*4882a593Smuzhiyun * configured as a x1 port 494*4882a593Smuzhiyun */ 495*4882a593Smuzhiyun pcie@4,0 { 496*4882a593Smuzhiyun device_type = "pci"; 497*4882a593Smuzhiyun assigned-addresses = <0x82000800 0 0x48000 0 0x2000>; 498*4882a593Smuzhiyun reg = <0x2000 0 0 0 0>; 499*4882a593Smuzhiyun #address-cells = <3>; 500*4882a593Smuzhiyun #size-cells = <2>; 501*4882a593Smuzhiyun #interrupt-cells = <1>; 502*4882a593Smuzhiyun ranges = <0x82000000 0 0 0x82000000 0x4 0 1 0 503*4882a593Smuzhiyun 0x81000000 0 0 0x81000000 0x4 0 1 0>; 504*4882a593Smuzhiyun bus-range = <0x00 0xff>; 505*4882a593Smuzhiyun interrupt-map-mask = <0 0 0 0>; 506*4882a593Smuzhiyun interrupt-map = <0 0 0 0 &gic GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 507*4882a593Smuzhiyun marvell,pcie-port = <3>; 508*4882a593Smuzhiyun marvell,pcie-lane = <0>; 509*4882a593Smuzhiyun clocks = <&gateclk 7>; 510*4882a593Smuzhiyun status = "disabled"; 511*4882a593Smuzhiyun }; 512*4882a593Smuzhiyun }; 513*4882a593Smuzhiyun 514*4882a593Smuzhiyun spi0: spi@10600 { 515*4882a593Smuzhiyun compatible = "marvell,armada-390-spi", 516*4882a593Smuzhiyun "marvell,orion-spi"; 517*4882a593Smuzhiyun reg = <MBUS_ID(0xf0, 0x01) 0x10600 0x50>; 518*4882a593Smuzhiyun #address-cells = <1>; 519*4882a593Smuzhiyun #size-cells = <0>; 520*4882a593Smuzhiyun cell-index = <0>; 521*4882a593Smuzhiyun interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 522*4882a593Smuzhiyun clocks = <&coreclk 0>; 523*4882a593Smuzhiyun status = "disabled"; 524*4882a593Smuzhiyun }; 525*4882a593Smuzhiyun 526*4882a593Smuzhiyun spi1: spi@10680 { 527*4882a593Smuzhiyun compatible = "marvell,armada-390-spi", 528*4882a593Smuzhiyun "marvell,orion-spi"; 529*4882a593Smuzhiyun reg = <MBUS_ID(0xf0, 0x01) 0x10680 0x50>; 530*4882a593Smuzhiyun #address-cells = <1>; 531*4882a593Smuzhiyun #size-cells = <0>; 532*4882a593Smuzhiyun cell-index = <1>; 533*4882a593Smuzhiyun interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; 534*4882a593Smuzhiyun clocks = <&coreclk 0>; 535*4882a593Smuzhiyun status = "disabled"; 536*4882a593Smuzhiyun }; 537*4882a593Smuzhiyun }; 538*4882a593Smuzhiyun 539*4882a593Smuzhiyun clocks { 540*4882a593Smuzhiyun /* 1 GHz fixed main PLL */ 541*4882a593Smuzhiyun mainpll: mainpll { 542*4882a593Smuzhiyun compatible = "fixed-clock"; 543*4882a593Smuzhiyun #clock-cells = <0>; 544*4882a593Smuzhiyun clock-frequency = <1000000000>; 545*4882a593Smuzhiyun }; 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun /* 25 MHz reference crystal */ 548*4882a593Smuzhiyun refclk: oscillator { 549*4882a593Smuzhiyun compatible = "fixed-clock"; 550*4882a593Smuzhiyun #clock-cells = <0>; 551*4882a593Smuzhiyun clock-frequency = <25000000>; 552*4882a593Smuzhiyun }; 553*4882a593Smuzhiyun }; 554*4882a593Smuzhiyun}; 555