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