1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Device Tree Include file for Marvell Armada 375 family SoC 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2014 Marvell 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Gregory CLEMENT <gregory.clement@free-electrons.com> 7*4882a593Smuzhiyun * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms 10*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual 11*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a 12*4882a593Smuzhiyun * whole. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * a) This file is free software; you can redistribute it and/or 15*4882a593Smuzhiyun * modify it under the terms of the GNU General Public License as 16*4882a593Smuzhiyun * published by the Free Software Foundation; either version 2 of the 17*4882a593Smuzhiyun * License, or (at your option) any later version. 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * This file is distributed in the hope that it will be useful 20*4882a593Smuzhiyun * but WITHOUT ANY WARRANTY; without even the implied warranty of 21*4882a593Smuzhiyun * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22*4882a593Smuzhiyun * GNU General Public License for more details. 23*4882a593Smuzhiyun * 24*4882a593Smuzhiyun * Or, alternatively 25*4882a593Smuzhiyun * 26*4882a593Smuzhiyun * b) Permission is hereby granted, free of charge, to any person 27*4882a593Smuzhiyun * obtaining a copy of this software and associated documentation 28*4882a593Smuzhiyun * files (the "Software"), to deal in the Software without 29*4882a593Smuzhiyun * restriction, including without limitation the rights to use 30*4882a593Smuzhiyun * copy, modify, merge, publish, distribute, sublicense, and/or 31*4882a593Smuzhiyun * sell copies of the Software, and to permit persons to whom the 32*4882a593Smuzhiyun * Software is furnished to do so, subject to the following 33*4882a593Smuzhiyun * conditions: 34*4882a593Smuzhiyun * 35*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be 36*4882a593Smuzhiyun * included in all copies or substantial portions of the Software. 37*4882a593Smuzhiyun * 38*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND 39*4882a593Smuzhiyun * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 40*4882a593Smuzhiyun * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 41*4882a593Smuzhiyun * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 42*4882a593Smuzhiyun * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY 43*4882a593Smuzhiyun * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 44*4882a593Smuzhiyun * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 45*4882a593Smuzhiyun * OTHER DEALINGS IN THE SOFTWARE. 46*4882a593Smuzhiyun */ 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun#include "skeleton.dtsi" 49*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 50*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h> 51*4882a593Smuzhiyun#include <dt-bindings/phy/phy.h> 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun/ { 56*4882a593Smuzhiyun model = "Marvell Armada 375 family SoC"; 57*4882a593Smuzhiyun compatible = "marvell,armada375"; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun aliases { 60*4882a593Smuzhiyun gpio0 = &gpio0; 61*4882a593Smuzhiyun gpio1 = &gpio1; 62*4882a593Smuzhiyun gpio2 = &gpio2; 63*4882a593Smuzhiyun serial0 = &uart0; 64*4882a593Smuzhiyun serial1 = &uart1; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun clocks { 68*4882a593Smuzhiyun /* 2 GHz fixed main PLL */ 69*4882a593Smuzhiyun mainpll: mainpll { 70*4882a593Smuzhiyun compatible = "fixed-clock"; 71*4882a593Smuzhiyun #clock-cells = <0>; 72*4882a593Smuzhiyun clock-frequency = <1000000000>; 73*4882a593Smuzhiyun }; 74*4882a593Smuzhiyun /* 25 MHz reference crystal */ 75*4882a593Smuzhiyun refclk: oscillator { 76*4882a593Smuzhiyun compatible = "fixed-clock"; 77*4882a593Smuzhiyun #clock-cells = <0>; 78*4882a593Smuzhiyun clock-frequency = <25000000>; 79*4882a593Smuzhiyun }; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun cpus { 83*4882a593Smuzhiyun #address-cells = <1>; 84*4882a593Smuzhiyun #size-cells = <0>; 85*4882a593Smuzhiyun enable-method = "marvell,armada-375-smp"; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun cpu@0 { 88*4882a593Smuzhiyun device_type = "cpu"; 89*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 90*4882a593Smuzhiyun reg = <0>; 91*4882a593Smuzhiyun }; 92*4882a593Smuzhiyun cpu@1 { 93*4882a593Smuzhiyun device_type = "cpu"; 94*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 95*4882a593Smuzhiyun reg = <1>; 96*4882a593Smuzhiyun }; 97*4882a593Smuzhiyun }; 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun pmu { 100*4882a593Smuzhiyun compatible = "arm,cortex-a9-pmu"; 101*4882a593Smuzhiyun interrupts-extended = <&mpic 3>; 102*4882a593Smuzhiyun }; 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun soc { 105*4882a593Smuzhiyun compatible = "marvell,armada375-mbus", "simple-bus"; 106*4882a593Smuzhiyun u-boot,dm-pre-reloc; 107*4882a593Smuzhiyun #address-cells = <2>; 108*4882a593Smuzhiyun #size-cells = <1>; 109*4882a593Smuzhiyun controller = <&mbusc>; 110*4882a593Smuzhiyun interrupt-parent = <&gic>; 111*4882a593Smuzhiyun pcie-mem-aperture = <0xe0000000 0x8000000>; 112*4882a593Smuzhiyun pcie-io-aperture = <0xe8000000 0x100000>; 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun bootrom { 115*4882a593Smuzhiyun compatible = "marvell,bootrom"; 116*4882a593Smuzhiyun reg = <MBUS_ID(0x01, 0x1d) 0 0x100000>; 117*4882a593Smuzhiyun }; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun devbus-bootcs { 120*4882a593Smuzhiyun compatible = "marvell,mvebu-devbus"; 121*4882a593Smuzhiyun reg = <MBUS_ID(0xf0, 0x01) 0x10400 0x8>; 122*4882a593Smuzhiyun ranges = <0 MBUS_ID(0x01, 0x2f) 0 0xffffffff>; 123*4882a593Smuzhiyun #address-cells = <1>; 124*4882a593Smuzhiyun #size-cells = <1>; 125*4882a593Smuzhiyun clocks = <&coreclk 0>; 126*4882a593Smuzhiyun status = "disabled"; 127*4882a593Smuzhiyun }; 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun devbus-cs0 { 130*4882a593Smuzhiyun compatible = "marvell,mvebu-devbus"; 131*4882a593Smuzhiyun reg = <MBUS_ID(0xf0, 0x01) 0x10408 0x8>; 132*4882a593Smuzhiyun ranges = <0 MBUS_ID(0x01, 0x3e) 0 0xffffffff>; 133*4882a593Smuzhiyun #address-cells = <1>; 134*4882a593Smuzhiyun #size-cells = <1>; 135*4882a593Smuzhiyun clocks = <&coreclk 0>; 136*4882a593Smuzhiyun status = "disabled"; 137*4882a593Smuzhiyun }; 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun devbus-cs1 { 140*4882a593Smuzhiyun compatible = "marvell,mvebu-devbus"; 141*4882a593Smuzhiyun reg = <MBUS_ID(0xf0, 0x01) 0x10410 0x8>; 142*4882a593Smuzhiyun ranges = <0 MBUS_ID(0x01, 0x3d) 0 0xffffffff>; 143*4882a593Smuzhiyun #address-cells = <1>; 144*4882a593Smuzhiyun #size-cells = <1>; 145*4882a593Smuzhiyun clocks = <&coreclk 0>; 146*4882a593Smuzhiyun status = "disabled"; 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun devbus-cs2 { 150*4882a593Smuzhiyun compatible = "marvell,mvebu-devbus"; 151*4882a593Smuzhiyun reg = <MBUS_ID(0xf0, 0x01) 0x10418 0x8>; 152*4882a593Smuzhiyun ranges = <0 MBUS_ID(0x01, 0x3b) 0 0xffffffff>; 153*4882a593Smuzhiyun #address-cells = <1>; 154*4882a593Smuzhiyun #size-cells = <1>; 155*4882a593Smuzhiyun clocks = <&coreclk 0>; 156*4882a593Smuzhiyun status = "disabled"; 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun devbus-cs3 { 160*4882a593Smuzhiyun compatible = "marvell,mvebu-devbus"; 161*4882a593Smuzhiyun reg = <MBUS_ID(0xf0, 0x01) 0x10420 0x8>; 162*4882a593Smuzhiyun ranges = <0 MBUS_ID(0x01, 0x37) 0 0xffffffff>; 163*4882a593Smuzhiyun #address-cells = <1>; 164*4882a593Smuzhiyun #size-cells = <1>; 165*4882a593Smuzhiyun clocks = <&coreclk 0>; 166*4882a593Smuzhiyun status = "disabled"; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun internal-regs { 170*4882a593Smuzhiyun compatible = "simple-bus"; 171*4882a593Smuzhiyun u-boot,dm-pre-reloc; 172*4882a593Smuzhiyun #address-cells = <1>; 173*4882a593Smuzhiyun #size-cells = <1>; 174*4882a593Smuzhiyun ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>; 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun L2: cache-controller@8000 { 177*4882a593Smuzhiyun compatible = "arm,pl310-cache"; 178*4882a593Smuzhiyun reg = <0x8000 0x1000>; 179*4882a593Smuzhiyun cache-unified; 180*4882a593Smuzhiyun cache-level = <2>; 181*4882a593Smuzhiyun arm,double-linefill-incr = <1>; 182*4882a593Smuzhiyun arm,double-linefill-wrap = <0>; 183*4882a593Smuzhiyun arm,double-linefill = <1>; 184*4882a593Smuzhiyun prefetch-data = <1>; 185*4882a593Smuzhiyun }; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun scu@c000 { 188*4882a593Smuzhiyun compatible = "arm,cortex-a9-scu"; 189*4882a593Smuzhiyun reg = <0xc000 0x58>; 190*4882a593Smuzhiyun }; 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun timer@c600 { 193*4882a593Smuzhiyun compatible = "arm,cortex-a9-twd-timer"; 194*4882a593Smuzhiyun reg = <0xc600 0x20>; 195*4882a593Smuzhiyun interrupts = <GIC_PPI 13 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>; 196*4882a593Smuzhiyun clocks = <&coreclk 2>; 197*4882a593Smuzhiyun }; 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun gic: interrupt-controller@d000 { 200*4882a593Smuzhiyun compatible = "arm,cortex-a9-gic"; 201*4882a593Smuzhiyun #interrupt-cells = <3>; 202*4882a593Smuzhiyun #size-cells = <0>; 203*4882a593Smuzhiyun interrupt-controller; 204*4882a593Smuzhiyun reg = <0xd000 0x1000>, 205*4882a593Smuzhiyun <0xc100 0x100>; 206*4882a593Smuzhiyun }; 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun mdio { 209*4882a593Smuzhiyun #address-cells = <1>; 210*4882a593Smuzhiyun #size-cells = <0>; 211*4882a593Smuzhiyun compatible = "marvell,orion-mdio"; 212*4882a593Smuzhiyun reg = <0xc0054 0x4>; 213*4882a593Smuzhiyun clocks = <&gateclk 19>; 214*4882a593Smuzhiyun }; 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun /* Network controller */ 217*4882a593Smuzhiyun ethernet@f0000 { 218*4882a593Smuzhiyun compatible = "marvell,armada-375-pp2"; 219*4882a593Smuzhiyun reg = <0xf0000 0xa000>, /* Packet Processor regs */ 220*4882a593Smuzhiyun <0xc0000 0x3060>, /* LMS regs */ 221*4882a593Smuzhiyun <0xc4000 0x100>, /* eth0 regs */ 222*4882a593Smuzhiyun <0xc5000 0x100>; /* eth1 regs */ 223*4882a593Smuzhiyun clocks = <&gateclk 3>, <&gateclk 19>; 224*4882a593Smuzhiyun clock-names = "pp_clk", "gop_clk"; 225*4882a593Smuzhiyun status = "disabled"; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun eth0: eth0@c4000 { 228*4882a593Smuzhiyun interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 229*4882a593Smuzhiyun port-id = <0>; 230*4882a593Smuzhiyun status = "disabled"; 231*4882a593Smuzhiyun }; 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun eth1: eth1@c5000 { 234*4882a593Smuzhiyun interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 235*4882a593Smuzhiyun port-id = <1>; 236*4882a593Smuzhiyun status = "disabled"; 237*4882a593Smuzhiyun }; 238*4882a593Smuzhiyun }; 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun rtc@10300 { 241*4882a593Smuzhiyun compatible = "marvell,orion-rtc"; 242*4882a593Smuzhiyun reg = <0x10300 0x20>; 243*4882a593Smuzhiyun interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; 244*4882a593Smuzhiyun }; 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun spi0: spi@10600 { 247*4882a593Smuzhiyun compatible = "marvell,armada-375-spi", 248*4882a593Smuzhiyun "marvell,orion-spi"; 249*4882a593Smuzhiyun reg = <0x10600 0x50>; 250*4882a593Smuzhiyun #address-cells = <1>; 251*4882a593Smuzhiyun #size-cells = <0>; 252*4882a593Smuzhiyun cell-index = <0>; 253*4882a593Smuzhiyun interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 254*4882a593Smuzhiyun clocks = <&coreclk 0>; 255*4882a593Smuzhiyun status = "disabled"; 256*4882a593Smuzhiyun }; 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun spi1: spi@10680 { 259*4882a593Smuzhiyun compatible = "marvell,armada-375-spi", 260*4882a593Smuzhiyun "marvell,orion-spi"; 261*4882a593Smuzhiyun reg = <0x10680 0x50>; 262*4882a593Smuzhiyun #address-cells = <1>; 263*4882a593Smuzhiyun #size-cells = <0>; 264*4882a593Smuzhiyun cell-index = <1>; 265*4882a593Smuzhiyun interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; 266*4882a593Smuzhiyun clocks = <&coreclk 0>; 267*4882a593Smuzhiyun status = "disabled"; 268*4882a593Smuzhiyun }; 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun i2c0: i2c@11000 { 271*4882a593Smuzhiyun compatible = "marvell,mv64xxx-i2c"; 272*4882a593Smuzhiyun reg = <0x11000 0x20>; 273*4882a593Smuzhiyun #address-cells = <1>; 274*4882a593Smuzhiyun #size-cells = <0>; 275*4882a593Smuzhiyun interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 276*4882a593Smuzhiyun timeout-ms = <1000>; 277*4882a593Smuzhiyun clocks = <&coreclk 0>; 278*4882a593Smuzhiyun status = "disabled"; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun i2c1: i2c@11100 { 282*4882a593Smuzhiyun compatible = "marvell,mv64xxx-i2c"; 283*4882a593Smuzhiyun reg = <0x11100 0x20>; 284*4882a593Smuzhiyun #address-cells = <1>; 285*4882a593Smuzhiyun #size-cells = <0>; 286*4882a593Smuzhiyun interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 287*4882a593Smuzhiyun timeout-ms = <1000>; 288*4882a593Smuzhiyun clocks = <&coreclk 0>; 289*4882a593Smuzhiyun status = "disabled"; 290*4882a593Smuzhiyun }; 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun uart0: serial@12000 { 293*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 294*4882a593Smuzhiyun reg = <0x12000 0x100>; 295*4882a593Smuzhiyun reg-shift = <2>; 296*4882a593Smuzhiyun interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 297*4882a593Smuzhiyun reg-io-width = <1>; 298*4882a593Smuzhiyun clocks = <&coreclk 0>; 299*4882a593Smuzhiyun status = "disabled"; 300*4882a593Smuzhiyun }; 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun uart1: serial@12100 { 303*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 304*4882a593Smuzhiyun reg = <0x12100 0x100>; 305*4882a593Smuzhiyun reg-shift = <2>; 306*4882a593Smuzhiyun interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; 307*4882a593Smuzhiyun reg-io-width = <1>; 308*4882a593Smuzhiyun clocks = <&coreclk 0>; 309*4882a593Smuzhiyun status = "disabled"; 310*4882a593Smuzhiyun }; 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun pinctrl { 313*4882a593Smuzhiyun compatible = "marvell,mv88f6720-pinctrl"; 314*4882a593Smuzhiyun reg = <0x18000 0x24>; 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun i2c0_pins: i2c0-pins { 317*4882a593Smuzhiyun marvell,pins = "mpp14", "mpp15"; 318*4882a593Smuzhiyun marvell,function = "i2c0"; 319*4882a593Smuzhiyun }; 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun i2c1_pins: i2c1-pins { 322*4882a593Smuzhiyun marvell,pins = "mpp61", "mpp62"; 323*4882a593Smuzhiyun marvell,function = "i2c1"; 324*4882a593Smuzhiyun }; 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun nand_pins: nand-pins { 327*4882a593Smuzhiyun marvell,pins = "mpp0", "mpp1", "mpp2", 328*4882a593Smuzhiyun "mpp3", "mpp4", "mpp5", 329*4882a593Smuzhiyun "mpp6", "mpp7", "mpp8", 330*4882a593Smuzhiyun "mpp9", "mpp10", "mpp11", 331*4882a593Smuzhiyun "mpp12", "mpp13"; 332*4882a593Smuzhiyun marvell,function = "nand"; 333*4882a593Smuzhiyun }; 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun sdio_pins: sdio-pins { 336*4882a593Smuzhiyun marvell,pins = "mpp24", "mpp25", "mpp26", 337*4882a593Smuzhiyun "mpp27", "mpp28", "mpp29"; 338*4882a593Smuzhiyun marvell,function = "sd"; 339*4882a593Smuzhiyun }; 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun spi0_pins: spi0-pins { 342*4882a593Smuzhiyun marvell,pins = "mpp0", "mpp1", "mpp4", 343*4882a593Smuzhiyun "mpp5", "mpp8", "mpp9"; 344*4882a593Smuzhiyun marvell,function = "spi0"; 345*4882a593Smuzhiyun }; 346*4882a593Smuzhiyun }; 347*4882a593Smuzhiyun 348*4882a593Smuzhiyun gpio0: gpio@18100 { 349*4882a593Smuzhiyun compatible = "marvell,orion-gpio"; 350*4882a593Smuzhiyun reg = <0x18100 0x40>; 351*4882a593Smuzhiyun ngpios = <32>; 352*4882a593Smuzhiyun gpio-controller; 353*4882a593Smuzhiyun #gpio-cells = <2>; 354*4882a593Smuzhiyun interrupt-controller; 355*4882a593Smuzhiyun #interrupt-cells = <2>; 356*4882a593Smuzhiyun interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>, 357*4882a593Smuzhiyun <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>, 358*4882a593Smuzhiyun <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>, 359*4882a593Smuzhiyun <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>; 360*4882a593Smuzhiyun }; 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun gpio1: gpio@18140 { 363*4882a593Smuzhiyun compatible = "marvell,orion-gpio"; 364*4882a593Smuzhiyun reg = <0x18140 0x40>; 365*4882a593Smuzhiyun ngpios = <32>; 366*4882a593Smuzhiyun gpio-controller; 367*4882a593Smuzhiyun #gpio-cells = <2>; 368*4882a593Smuzhiyun interrupt-controller; 369*4882a593Smuzhiyun #interrupt-cells = <2>; 370*4882a593Smuzhiyun interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>, 371*4882a593Smuzhiyun <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>, 372*4882a593Smuzhiyun <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>, 373*4882a593Smuzhiyun <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 374*4882a593Smuzhiyun }; 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun gpio2: gpio@18180 { 377*4882a593Smuzhiyun compatible = "marvell,orion-gpio"; 378*4882a593Smuzhiyun reg = <0x18180 0x40>; 379*4882a593Smuzhiyun ngpios = <3>; 380*4882a593Smuzhiyun gpio-controller; 381*4882a593Smuzhiyun #gpio-cells = <2>; 382*4882a593Smuzhiyun interrupt-controller; 383*4882a593Smuzhiyun #interrupt-cells = <2>; 384*4882a593Smuzhiyun interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; 385*4882a593Smuzhiyun }; 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun system-controller@18200 { 388*4882a593Smuzhiyun compatible = "marvell,armada-375-system-controller"; 389*4882a593Smuzhiyun reg = <0x18200 0x100>; 390*4882a593Smuzhiyun }; 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun gateclk: clock-gating-control@18220 { 393*4882a593Smuzhiyun compatible = "marvell,armada-375-gating-clock"; 394*4882a593Smuzhiyun reg = <0x18220 0x4>; 395*4882a593Smuzhiyun clocks = <&coreclk 0>; 396*4882a593Smuzhiyun #clock-cells = <1>; 397*4882a593Smuzhiyun }; 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun usbcluster: usb-cluster@18400 { 400*4882a593Smuzhiyun compatible = "marvell,armada-375-usb-cluster"; 401*4882a593Smuzhiyun reg = <0x18400 0x4>; 402*4882a593Smuzhiyun #phy-cells = <1>; 403*4882a593Smuzhiyun }; 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun mbusc: mbus-controller@20000 { 406*4882a593Smuzhiyun compatible = "marvell,mbus-controller"; 407*4882a593Smuzhiyun reg = <0x20000 0x100>, <0x20180 0x20>; 408*4882a593Smuzhiyun }; 409*4882a593Smuzhiyun 410*4882a593Smuzhiyun mpic: interrupt-controller@20a00 { 411*4882a593Smuzhiyun compatible = "marvell,mpic"; 412*4882a593Smuzhiyun reg = <0x20a00 0x2d0>, <0x21070 0x58>; 413*4882a593Smuzhiyun #interrupt-cells = <1>; 414*4882a593Smuzhiyun #size-cells = <1>; 415*4882a593Smuzhiyun interrupt-controller; 416*4882a593Smuzhiyun msi-controller; 417*4882a593Smuzhiyun interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>; 418*4882a593Smuzhiyun }; 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun timer@20300 { 421*4882a593Smuzhiyun compatible = "marvell,armada-375-timer", "marvell,armada-370-timer"; 422*4882a593Smuzhiyun reg = <0x20300 0x30>, <0x21040 0x30>; 423*4882a593Smuzhiyun interrupts-extended = <&gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, 424*4882a593Smuzhiyun <&gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, 425*4882a593Smuzhiyun <&gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, 426*4882a593Smuzhiyun <&gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, 427*4882a593Smuzhiyun <&mpic 5>, 428*4882a593Smuzhiyun <&mpic 6>; 429*4882a593Smuzhiyun clocks = <&coreclk 0>, <&refclk>; 430*4882a593Smuzhiyun clock-names = "nbclk", "fixed"; 431*4882a593Smuzhiyun }; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun watchdog@20300 { 434*4882a593Smuzhiyun compatible = "marvell,armada-375-wdt"; 435*4882a593Smuzhiyun reg = <0x20300 0x34>, <0x20704 0x4>, <0x18254 0x4>; 436*4882a593Smuzhiyun clocks = <&coreclk 0>, <&refclk>; 437*4882a593Smuzhiyun clock-names = "nbclk", "fixed"; 438*4882a593Smuzhiyun }; 439*4882a593Smuzhiyun 440*4882a593Smuzhiyun cpurst@20800 { 441*4882a593Smuzhiyun compatible = "marvell,armada-370-cpu-reset"; 442*4882a593Smuzhiyun reg = <0x20800 0x10>; 443*4882a593Smuzhiyun }; 444*4882a593Smuzhiyun 445*4882a593Smuzhiyun coherency-fabric@21010 { 446*4882a593Smuzhiyun compatible = "marvell,armada-375-coherency-fabric"; 447*4882a593Smuzhiyun reg = <0x21010 0x1c>; 448*4882a593Smuzhiyun }; 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun usb@50000 { 451*4882a593Smuzhiyun compatible = "marvell,orion-ehci"; 452*4882a593Smuzhiyun reg = <0x50000 0x500>; 453*4882a593Smuzhiyun interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 454*4882a593Smuzhiyun clocks = <&gateclk 18>; 455*4882a593Smuzhiyun phys = <&usbcluster PHY_TYPE_USB2>; 456*4882a593Smuzhiyun phy-names = "usb"; 457*4882a593Smuzhiyun status = "disabled"; 458*4882a593Smuzhiyun }; 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun usb@54000 { 461*4882a593Smuzhiyun compatible = "marvell,orion-ehci"; 462*4882a593Smuzhiyun reg = <0x54000 0x500>; 463*4882a593Smuzhiyun interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; 464*4882a593Smuzhiyun clocks = <&gateclk 26>; 465*4882a593Smuzhiyun status = "disabled"; 466*4882a593Smuzhiyun }; 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun usb3@58000 { 469*4882a593Smuzhiyun compatible = "marvell,armada-375-xhci"; 470*4882a593Smuzhiyun reg = <0x58000 0x20000>,<0x5b880 0x80>; 471*4882a593Smuzhiyun interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; 472*4882a593Smuzhiyun clocks = <&gateclk 16>; 473*4882a593Smuzhiyun phys = <&usbcluster PHY_TYPE_USB3>; 474*4882a593Smuzhiyun phy-names = "usb"; 475*4882a593Smuzhiyun status = "disabled"; 476*4882a593Smuzhiyun }; 477*4882a593Smuzhiyun 478*4882a593Smuzhiyun xor@60800 { 479*4882a593Smuzhiyun compatible = "marvell,orion-xor"; 480*4882a593Smuzhiyun reg = <0x60800 0x100 481*4882a593Smuzhiyun 0x60A00 0x100>; 482*4882a593Smuzhiyun clocks = <&gateclk 22>; 483*4882a593Smuzhiyun status = "okay"; 484*4882a593Smuzhiyun 485*4882a593Smuzhiyun xor00 { 486*4882a593Smuzhiyun interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; 487*4882a593Smuzhiyun dmacap,memcpy; 488*4882a593Smuzhiyun dmacap,xor; 489*4882a593Smuzhiyun }; 490*4882a593Smuzhiyun xor01 { 491*4882a593Smuzhiyun interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 492*4882a593Smuzhiyun dmacap,memcpy; 493*4882a593Smuzhiyun dmacap,xor; 494*4882a593Smuzhiyun dmacap,memset; 495*4882a593Smuzhiyun }; 496*4882a593Smuzhiyun }; 497*4882a593Smuzhiyun 498*4882a593Smuzhiyun xor@60900 { 499*4882a593Smuzhiyun compatible = "marvell,orion-xor"; 500*4882a593Smuzhiyun reg = <0x60900 0x100 501*4882a593Smuzhiyun 0x60b00 0x100>; 502*4882a593Smuzhiyun clocks = <&gateclk 23>; 503*4882a593Smuzhiyun status = "okay"; 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun xor10 { 506*4882a593Smuzhiyun interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; 507*4882a593Smuzhiyun dmacap,memcpy; 508*4882a593Smuzhiyun dmacap,xor; 509*4882a593Smuzhiyun }; 510*4882a593Smuzhiyun xor11 { 511*4882a593Smuzhiyun interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; 512*4882a593Smuzhiyun dmacap,memcpy; 513*4882a593Smuzhiyun dmacap,xor; 514*4882a593Smuzhiyun dmacap,memset; 515*4882a593Smuzhiyun }; 516*4882a593Smuzhiyun }; 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun crypto@90000 { 519*4882a593Smuzhiyun compatible = "marvell,armada-375-crypto"; 520*4882a593Smuzhiyun reg = <0x90000 0x10000>; 521*4882a593Smuzhiyun reg-names = "regs"; 522*4882a593Smuzhiyun interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, 523*4882a593Smuzhiyun <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 524*4882a593Smuzhiyun clocks = <&gateclk 30>, <&gateclk 31>, 525*4882a593Smuzhiyun <&gateclk 28>, <&gateclk 29>; 526*4882a593Smuzhiyun clock-names = "cesa0", "cesa1", 527*4882a593Smuzhiyun "cesaz0", "cesaz1"; 528*4882a593Smuzhiyun marvell,crypto-srams = <&crypto_sram0>, 529*4882a593Smuzhiyun <&crypto_sram1>; 530*4882a593Smuzhiyun marvell,crypto-sram-size = <0x800>; 531*4882a593Smuzhiyun }; 532*4882a593Smuzhiyun 533*4882a593Smuzhiyun sata@a0000 { 534*4882a593Smuzhiyun compatible = "marvell,orion-sata"; 535*4882a593Smuzhiyun reg = <0xa0000 0x5000>; 536*4882a593Smuzhiyun interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; 537*4882a593Smuzhiyun clocks = <&gateclk 14>, <&gateclk 20>; 538*4882a593Smuzhiyun clock-names = "0", "1"; 539*4882a593Smuzhiyun status = "disabled"; 540*4882a593Smuzhiyun }; 541*4882a593Smuzhiyun 542*4882a593Smuzhiyun nand@d0000 { 543*4882a593Smuzhiyun compatible = "marvell,armada370-nand"; 544*4882a593Smuzhiyun reg = <0xd0000 0x54>; 545*4882a593Smuzhiyun #address-cells = <1>; 546*4882a593Smuzhiyun #size-cells = <1>; 547*4882a593Smuzhiyun interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 548*4882a593Smuzhiyun clocks = <&gateclk 11>; 549*4882a593Smuzhiyun status = "disabled"; 550*4882a593Smuzhiyun }; 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun mvsdio@d4000 { 553*4882a593Smuzhiyun compatible = "marvell,orion-sdio"; 554*4882a593Smuzhiyun reg = <0xd4000 0x200>; 555*4882a593Smuzhiyun interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 556*4882a593Smuzhiyun clocks = <&gateclk 17>; 557*4882a593Smuzhiyun bus-width = <4>; 558*4882a593Smuzhiyun cap-sdio-irq; 559*4882a593Smuzhiyun cap-sd-highspeed; 560*4882a593Smuzhiyun cap-mmc-highspeed; 561*4882a593Smuzhiyun status = "disabled"; 562*4882a593Smuzhiyun }; 563*4882a593Smuzhiyun 564*4882a593Smuzhiyun thermal@e8078 { 565*4882a593Smuzhiyun compatible = "marvell,armada375-thermal"; 566*4882a593Smuzhiyun reg = <0xe8078 0x4>, <0xe807c 0x8>; 567*4882a593Smuzhiyun status = "okay"; 568*4882a593Smuzhiyun }; 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun coreclk: mvebu-sar@e8204 { 571*4882a593Smuzhiyun compatible = "marvell,armada-375-core-clock"; 572*4882a593Smuzhiyun reg = <0xe8204 0x04>; 573*4882a593Smuzhiyun #clock-cells = <1>; 574*4882a593Smuzhiyun }; 575*4882a593Smuzhiyun 576*4882a593Smuzhiyun coredivclk: corediv-clock@e8250 { 577*4882a593Smuzhiyun compatible = "marvell,armada-375-corediv-clock"; 578*4882a593Smuzhiyun reg = <0xe8250 0xc>; 579*4882a593Smuzhiyun #clock-cells = <1>; 580*4882a593Smuzhiyun clocks = <&mainpll>; 581*4882a593Smuzhiyun clock-output-names = "nand"; 582*4882a593Smuzhiyun }; 583*4882a593Smuzhiyun }; 584*4882a593Smuzhiyun 585*4882a593Smuzhiyun pcie-controller { 586*4882a593Smuzhiyun compatible = "marvell,armada-370-pcie"; 587*4882a593Smuzhiyun status = "disabled"; 588*4882a593Smuzhiyun device_type = "pci"; 589*4882a593Smuzhiyun 590*4882a593Smuzhiyun #address-cells = <3>; 591*4882a593Smuzhiyun #size-cells = <2>; 592*4882a593Smuzhiyun 593*4882a593Smuzhiyun msi-parent = <&mpic>; 594*4882a593Smuzhiyun bus-range = <0x00 0xff>; 595*4882a593Smuzhiyun 596*4882a593Smuzhiyun ranges = 597*4882a593Smuzhiyun <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000 598*4882a593Smuzhiyun 0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000 599*4882a593Smuzhiyun 0x82000000 0x1 0 MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0 MEM */ 600*4882a593Smuzhiyun 0x81000000 0x1 0 MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0 IO */ 601*4882a593Smuzhiyun 0x82000000 0x2 0 MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 1 MEM */ 602*4882a593Smuzhiyun 0x81000000 0x2 0 MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 1 IO */>; 603*4882a593Smuzhiyun 604*4882a593Smuzhiyun pcie@1,0 { 605*4882a593Smuzhiyun device_type = "pci"; 606*4882a593Smuzhiyun assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; 607*4882a593Smuzhiyun reg = <0x0800 0 0 0 0>; 608*4882a593Smuzhiyun #address-cells = <3>; 609*4882a593Smuzhiyun #size-cells = <2>; 610*4882a593Smuzhiyun #interrupt-cells = <1>; 611*4882a593Smuzhiyun ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0 612*4882a593Smuzhiyun 0x81000000 0 0 0x81000000 0x1 0 1 0>; 613*4882a593Smuzhiyun interrupt-map-mask = <0 0 0 0>; 614*4882a593Smuzhiyun interrupt-map = <0 0 0 0 &gic GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 615*4882a593Smuzhiyun marvell,pcie-port = <0>; 616*4882a593Smuzhiyun marvell,pcie-lane = <0>; 617*4882a593Smuzhiyun clocks = <&gateclk 5>; 618*4882a593Smuzhiyun status = "disabled"; 619*4882a593Smuzhiyun }; 620*4882a593Smuzhiyun 621*4882a593Smuzhiyun pcie@2,0 { 622*4882a593Smuzhiyun device_type = "pci"; 623*4882a593Smuzhiyun assigned-addresses = <0x82000800 0 0x44000 0 0x2000>; 624*4882a593Smuzhiyun reg = <0x1000 0 0 0 0>; 625*4882a593Smuzhiyun #address-cells = <3>; 626*4882a593Smuzhiyun #size-cells = <2>; 627*4882a593Smuzhiyun #interrupt-cells = <1>; 628*4882a593Smuzhiyun ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0 629*4882a593Smuzhiyun 0x81000000 0 0 0x81000000 0x2 0 1 0>; 630*4882a593Smuzhiyun interrupt-map-mask = <0 0 0 0>; 631*4882a593Smuzhiyun interrupt-map = <0 0 0 0 &gic GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; 632*4882a593Smuzhiyun marvell,pcie-port = <0>; 633*4882a593Smuzhiyun marvell,pcie-lane = <1>; 634*4882a593Smuzhiyun clocks = <&gateclk 6>; 635*4882a593Smuzhiyun status = "disabled"; 636*4882a593Smuzhiyun }; 637*4882a593Smuzhiyun 638*4882a593Smuzhiyun }; 639*4882a593Smuzhiyun 640*4882a593Smuzhiyun crypto_sram0: sa-sram0 { 641*4882a593Smuzhiyun compatible = "mmio-sram"; 642*4882a593Smuzhiyun reg = <MBUS_ID(0x09, 0x09) 0 0x800>; 643*4882a593Smuzhiyun clocks = <&gateclk 30>; 644*4882a593Smuzhiyun #address-cells = <1>; 645*4882a593Smuzhiyun #size-cells = <1>; 646*4882a593Smuzhiyun ranges = <0 MBUS_ID(0x09, 0x09) 0 0x800>; 647*4882a593Smuzhiyun }; 648*4882a593Smuzhiyun 649*4882a593Smuzhiyun crypto_sram1: sa-sram1 { 650*4882a593Smuzhiyun compatible = "mmio-sram"; 651*4882a593Smuzhiyun reg = <MBUS_ID(0x09, 0x05) 0 0x800>; 652*4882a593Smuzhiyun clocks = <&gateclk 31>; 653*4882a593Smuzhiyun #address-cells = <1>; 654*4882a593Smuzhiyun #size-cells = <1>; 655*4882a593Smuzhiyun ranges = <0 MBUS_ID(0x09, 0x05) 0 0x800>; 656*4882a593Smuzhiyun }; 657*4882a593Smuzhiyun }; 658*4882a593Smuzhiyun}; 659