1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com> 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun#include <dt-bindings/clock/berlin2q.h> 7*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun/ { 10*4882a593Smuzhiyun model = "Marvell Armada 1500 pro (BG2-Q) SoC"; 11*4882a593Smuzhiyun compatible = "marvell,berlin2q", "marvell,berlin"; 12*4882a593Smuzhiyun #address-cells = <1>; 13*4882a593Smuzhiyun #size-cells = <1>; 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun aliases { 16*4882a593Smuzhiyun serial0 = &uart0; 17*4882a593Smuzhiyun serial1 = &uart1; 18*4882a593Smuzhiyun }; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun cpus { 21*4882a593Smuzhiyun #address-cells = <1>; 22*4882a593Smuzhiyun #size-cells = <0>; 23*4882a593Smuzhiyun enable-method = "marvell,berlin-smp"; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun cpu0: cpu@0 { 26*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 27*4882a593Smuzhiyun device_type = "cpu"; 28*4882a593Smuzhiyun next-level-cache = <&l2>; 29*4882a593Smuzhiyun reg = <0>; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CPU>; 32*4882a593Smuzhiyun clock-latency = <100000>; 33*4882a593Smuzhiyun /* Can be modified by the bootloader */ 34*4882a593Smuzhiyun operating-points = < 35*4882a593Smuzhiyun /* kHz uV */ 36*4882a593Smuzhiyun 1200000 1200000 37*4882a593Smuzhiyun 1000000 1200000 38*4882a593Smuzhiyun 800000 1200000 39*4882a593Smuzhiyun 600000 1200000 40*4882a593Smuzhiyun >; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun cpu1: cpu@1 { 44*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 45*4882a593Smuzhiyun device_type = "cpu"; 46*4882a593Smuzhiyun next-level-cache = <&l2>; 47*4882a593Smuzhiyun reg = <1>; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CPU>; 50*4882a593Smuzhiyun clock-latency = <100000>; 51*4882a593Smuzhiyun /* Can be modified by the bootloader */ 52*4882a593Smuzhiyun operating-points = < 53*4882a593Smuzhiyun /* kHz uV */ 54*4882a593Smuzhiyun 1200000 1200000 55*4882a593Smuzhiyun 1000000 1200000 56*4882a593Smuzhiyun 800000 1200000 57*4882a593Smuzhiyun 600000 1200000 58*4882a593Smuzhiyun >; 59*4882a593Smuzhiyun }; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun cpu2: cpu@2 { 62*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 63*4882a593Smuzhiyun device_type = "cpu"; 64*4882a593Smuzhiyun next-level-cache = <&l2>; 65*4882a593Smuzhiyun reg = <2>; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CPU>; 68*4882a593Smuzhiyun clock-latency = <100000>; 69*4882a593Smuzhiyun /* Can be modified by the bootloader */ 70*4882a593Smuzhiyun operating-points = < 71*4882a593Smuzhiyun /* kHz uV */ 72*4882a593Smuzhiyun 1200000 1200000 73*4882a593Smuzhiyun 1000000 1200000 74*4882a593Smuzhiyun 800000 1200000 75*4882a593Smuzhiyun 600000 1200000 76*4882a593Smuzhiyun >; 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun cpu3: cpu@3 { 80*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 81*4882a593Smuzhiyun device_type = "cpu"; 82*4882a593Smuzhiyun next-level-cache = <&l2>; 83*4882a593Smuzhiyun reg = <3>; 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CPU>; 86*4882a593Smuzhiyun clock-latency = <100000>; 87*4882a593Smuzhiyun /* Can be modified by the bootloader */ 88*4882a593Smuzhiyun operating-points = < 89*4882a593Smuzhiyun /* kHz uV */ 90*4882a593Smuzhiyun 1200000 1200000 91*4882a593Smuzhiyun 1000000 1200000 92*4882a593Smuzhiyun 800000 1200000 93*4882a593Smuzhiyun 600000 1200000 94*4882a593Smuzhiyun >; 95*4882a593Smuzhiyun }; 96*4882a593Smuzhiyun }; 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun pmu { 99*4882a593Smuzhiyun compatible = "arm,cortex-a9-pmu"; 100*4882a593Smuzhiyun interrupt-parent = <&gic>; 101*4882a593Smuzhiyun interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>, 102*4882a593Smuzhiyun <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>, 103*4882a593Smuzhiyun <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>, 104*4882a593Smuzhiyun <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 105*4882a593Smuzhiyun interrupt-affinity = <&cpu0>, 106*4882a593Smuzhiyun <&cpu1>, 107*4882a593Smuzhiyun <&cpu2>, 108*4882a593Smuzhiyun <&cpu3>; 109*4882a593Smuzhiyun }; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun refclk: oscillator { 112*4882a593Smuzhiyun compatible = "fixed-clock"; 113*4882a593Smuzhiyun #clock-cells = <0>; 114*4882a593Smuzhiyun clock-frequency = <25000000>; 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun soc@f7000000 { 118*4882a593Smuzhiyun compatible = "simple-bus"; 119*4882a593Smuzhiyun #address-cells = <1>; 120*4882a593Smuzhiyun #size-cells = <1>; 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun ranges = <0 0xf7000000 0x1000000>; 123*4882a593Smuzhiyun interrupt-parent = <&gic>; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun sdhci0: mmc@ab0000 { 126*4882a593Smuzhiyun compatible = "mrvl,pxav3-mmc"; 127*4882a593Smuzhiyun reg = <0xab0000 0x200>; 128*4882a593Smuzhiyun clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>; 129*4882a593Smuzhiyun clock-names = "io", "core"; 130*4882a593Smuzhiyun interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 131*4882a593Smuzhiyun status = "disabled"; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun sdhci1: mmc@ab0800 { 135*4882a593Smuzhiyun compatible = "mrvl,pxav3-mmc"; 136*4882a593Smuzhiyun reg = <0xab0800 0x200>; 137*4882a593Smuzhiyun clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>; 138*4882a593Smuzhiyun clock-names = "io", "core"; 139*4882a593Smuzhiyun interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 140*4882a593Smuzhiyun status = "disabled"; 141*4882a593Smuzhiyun }; 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun sdhci2: mmc@ab1000 { 144*4882a593Smuzhiyun compatible = "mrvl,pxav3-mmc"; 145*4882a593Smuzhiyun reg = <0xab1000 0x200>; 146*4882a593Smuzhiyun interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 147*4882a593Smuzhiyun clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>; 148*4882a593Smuzhiyun clock-names = "io", "core"; 149*4882a593Smuzhiyun status = "disabled"; 150*4882a593Smuzhiyun }; 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun l2: cache-controller@ac0000 { 153*4882a593Smuzhiyun compatible = "arm,pl310-cache"; 154*4882a593Smuzhiyun reg = <0xac0000 0x1000>; 155*4882a593Smuzhiyun cache-unified; 156*4882a593Smuzhiyun cache-level = <2>; 157*4882a593Smuzhiyun arm,data-latency = <2 2 2>; 158*4882a593Smuzhiyun arm,tag-latency = <2 2 2>; 159*4882a593Smuzhiyun }; 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun scu: snoop-control-unit@ad0000 { 162*4882a593Smuzhiyun compatible = "arm,cortex-a9-scu"; 163*4882a593Smuzhiyun reg = <0xad0000 0x58>; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun local-timer@ad0600 { 167*4882a593Smuzhiyun compatible = "arm,cortex-a9-twd-timer"; 168*4882a593Smuzhiyun reg = <0xad0600 0x20>; 169*4882a593Smuzhiyun clocks = <&chip_clk CLKID_TWD>; 170*4882a593Smuzhiyun interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; 171*4882a593Smuzhiyun }; 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun gic: interrupt-controller@ad1000 { 174*4882a593Smuzhiyun compatible = "arm,cortex-a9-gic"; 175*4882a593Smuzhiyun reg = <0xad1000 0x1000>, <0xad0100 0x100>; 176*4882a593Smuzhiyun interrupt-controller; 177*4882a593Smuzhiyun #interrupt-cells = <3>; 178*4882a593Smuzhiyun }; 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun usb_phy2: phy@a2f400 { 181*4882a593Smuzhiyun compatible = "marvell,berlin2cd-usb-phy"; 182*4882a593Smuzhiyun reg = <0xa2f400 0x128>; 183*4882a593Smuzhiyun #phy-cells = <0>; 184*4882a593Smuzhiyun resets = <&chip_rst 0x104 14>; 185*4882a593Smuzhiyun status = "disabled"; 186*4882a593Smuzhiyun }; 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun usb2: usb@a30000 { 189*4882a593Smuzhiyun compatible = "chipidea,usb2"; 190*4882a593Smuzhiyun reg = <0xa30000 0x10000>; 191*4882a593Smuzhiyun interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 192*4882a593Smuzhiyun clocks = <&chip_clk CLKID_USB2>; 193*4882a593Smuzhiyun phys = <&usb_phy2>; 194*4882a593Smuzhiyun phy-names = "usb-phy"; 195*4882a593Smuzhiyun status = "disabled"; 196*4882a593Smuzhiyun }; 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun usb_phy0: phy@b74000 { 199*4882a593Smuzhiyun compatible = "marvell,berlin2cd-usb-phy"; 200*4882a593Smuzhiyun reg = <0xb74000 0x128>; 201*4882a593Smuzhiyun #phy-cells = <0>; 202*4882a593Smuzhiyun resets = <&chip_rst 0x104 12>; 203*4882a593Smuzhiyun status = "disabled"; 204*4882a593Smuzhiyun }; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun usb_phy1: phy@b78000 { 207*4882a593Smuzhiyun compatible = "marvell,berlin2cd-usb-phy"; 208*4882a593Smuzhiyun reg = <0xb78000 0x128>; 209*4882a593Smuzhiyun #phy-cells = <0>; 210*4882a593Smuzhiyun resets = <&chip_rst 0x104 13>; 211*4882a593Smuzhiyun status = "disabled"; 212*4882a593Smuzhiyun }; 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun eth0: ethernet@b90000 { 215*4882a593Smuzhiyun compatible = "marvell,pxa168-eth"; 216*4882a593Smuzhiyun reg = <0xb90000 0x10000>; 217*4882a593Smuzhiyun clocks = <&chip_clk CLKID_GETH0>; 218*4882a593Smuzhiyun interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; 219*4882a593Smuzhiyun /* set by bootloader */ 220*4882a593Smuzhiyun local-mac-address = [00 00 00 00 00 00]; 221*4882a593Smuzhiyun #address-cells = <1>; 222*4882a593Smuzhiyun #size-cells = <0>; 223*4882a593Smuzhiyun phy-connection-type = "mii"; 224*4882a593Smuzhiyun phy-handle = <ðphy0>; 225*4882a593Smuzhiyun status = "disabled"; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun ethphy0: ethernet-phy@0 { 228*4882a593Smuzhiyun reg = <0>; 229*4882a593Smuzhiyun }; 230*4882a593Smuzhiyun }; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun cpu-ctrl@dd0000 { 233*4882a593Smuzhiyun compatible = "marvell,berlin-cpu-ctrl"; 234*4882a593Smuzhiyun reg = <0xdd0000 0x10000>; 235*4882a593Smuzhiyun }; 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun apb@e80000 { 238*4882a593Smuzhiyun compatible = "simple-bus"; 239*4882a593Smuzhiyun #address-cells = <1>; 240*4882a593Smuzhiyun #size-cells = <1>; 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun ranges = <0 0xe80000 0x10000>; 243*4882a593Smuzhiyun interrupt-parent = <&aic>; 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun gpio0: gpio@400 { 246*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 247*4882a593Smuzhiyun reg = <0x0400 0x400>; 248*4882a593Smuzhiyun #address-cells = <1>; 249*4882a593Smuzhiyun #size-cells = <0>; 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun porta: gpio-port@0 { 252*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 253*4882a593Smuzhiyun gpio-controller; 254*4882a593Smuzhiyun #gpio-cells = <2>; 255*4882a593Smuzhiyun snps,nr-gpios = <32>; 256*4882a593Smuzhiyun reg = <0>; 257*4882a593Smuzhiyun interrupt-controller; 258*4882a593Smuzhiyun #interrupt-cells = <2>; 259*4882a593Smuzhiyun interrupts = <0>; 260*4882a593Smuzhiyun }; 261*4882a593Smuzhiyun }; 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun gpio1: gpio@800 { 264*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 265*4882a593Smuzhiyun reg = <0x0800 0x400>; 266*4882a593Smuzhiyun #address-cells = <1>; 267*4882a593Smuzhiyun #size-cells = <0>; 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun portb: gpio-port@1 { 270*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 271*4882a593Smuzhiyun gpio-controller; 272*4882a593Smuzhiyun #gpio-cells = <2>; 273*4882a593Smuzhiyun snps,nr-gpios = <32>; 274*4882a593Smuzhiyun reg = <0>; 275*4882a593Smuzhiyun interrupt-controller; 276*4882a593Smuzhiyun #interrupt-cells = <2>; 277*4882a593Smuzhiyun interrupts = <1>; 278*4882a593Smuzhiyun }; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun gpio2: gpio@c00 { 282*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 283*4882a593Smuzhiyun reg = <0x0c00 0x400>; 284*4882a593Smuzhiyun #address-cells = <1>; 285*4882a593Smuzhiyun #size-cells = <0>; 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun portc: gpio-port@2 { 288*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 289*4882a593Smuzhiyun gpio-controller; 290*4882a593Smuzhiyun #gpio-cells = <2>; 291*4882a593Smuzhiyun snps,nr-gpios = <32>; 292*4882a593Smuzhiyun reg = <0>; 293*4882a593Smuzhiyun interrupt-controller; 294*4882a593Smuzhiyun #interrupt-cells = <2>; 295*4882a593Smuzhiyun interrupts = <2>; 296*4882a593Smuzhiyun }; 297*4882a593Smuzhiyun }; 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun gpio3: gpio@1000 { 300*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 301*4882a593Smuzhiyun reg = <0x1000 0x400>; 302*4882a593Smuzhiyun #address-cells = <1>; 303*4882a593Smuzhiyun #size-cells = <0>; 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun portd: gpio-port@3 { 306*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 307*4882a593Smuzhiyun gpio-controller; 308*4882a593Smuzhiyun #gpio-cells = <2>; 309*4882a593Smuzhiyun snps,nr-gpios = <32>; 310*4882a593Smuzhiyun reg = <0>; 311*4882a593Smuzhiyun interrupt-controller; 312*4882a593Smuzhiyun #interrupt-cells = <2>; 313*4882a593Smuzhiyun interrupts = <3>; 314*4882a593Smuzhiyun }; 315*4882a593Smuzhiyun }; 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun i2c0: i2c@1400 { 318*4882a593Smuzhiyun compatible = "snps,designware-i2c"; 319*4882a593Smuzhiyun #address-cells = <1>; 320*4882a593Smuzhiyun #size-cells = <0>; 321*4882a593Smuzhiyun reg = <0x1400 0x100>; 322*4882a593Smuzhiyun interrupts = <4>; 323*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 324*4882a593Smuzhiyun pinctrl-0 = <&twsi0_pmux>; 325*4882a593Smuzhiyun pinctrl-names = "default"; 326*4882a593Smuzhiyun status = "disabled"; 327*4882a593Smuzhiyun }; 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun i2c1: i2c@1800 { 330*4882a593Smuzhiyun compatible = "snps,designware-i2c"; 331*4882a593Smuzhiyun #address-cells = <1>; 332*4882a593Smuzhiyun #size-cells = <0>; 333*4882a593Smuzhiyun reg = <0x1800 0x100>; 334*4882a593Smuzhiyun interrupts = <5>; 335*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 336*4882a593Smuzhiyun pinctrl-0 = <&twsi1_pmux>; 337*4882a593Smuzhiyun pinctrl-names = "default"; 338*4882a593Smuzhiyun status = "disabled"; 339*4882a593Smuzhiyun }; 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun timer0: timer@2c00 { 342*4882a593Smuzhiyun compatible = "snps,dw-apb-timer"; 343*4882a593Smuzhiyun reg = <0x2c00 0x14>; 344*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 345*4882a593Smuzhiyun clock-names = "timer"; 346*4882a593Smuzhiyun interrupts = <8>; 347*4882a593Smuzhiyun }; 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun timer1: timer@2c14 { 350*4882a593Smuzhiyun compatible = "snps,dw-apb-timer"; 351*4882a593Smuzhiyun reg = <0x2c14 0x14>; 352*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 353*4882a593Smuzhiyun clock-names = "timer"; 354*4882a593Smuzhiyun }; 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun timer2: timer@2c28 { 357*4882a593Smuzhiyun compatible = "snps,dw-apb-timer"; 358*4882a593Smuzhiyun reg = <0x2c28 0x14>; 359*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 360*4882a593Smuzhiyun clock-names = "timer"; 361*4882a593Smuzhiyun status = "disabled"; 362*4882a593Smuzhiyun }; 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun timer3: timer@2c3c { 365*4882a593Smuzhiyun compatible = "snps,dw-apb-timer"; 366*4882a593Smuzhiyun reg = <0x2c3c 0x14>; 367*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 368*4882a593Smuzhiyun clock-names = "timer"; 369*4882a593Smuzhiyun status = "disabled"; 370*4882a593Smuzhiyun }; 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun timer4: timer@2c50 { 373*4882a593Smuzhiyun compatible = "snps,dw-apb-timer"; 374*4882a593Smuzhiyun reg = <0x2c50 0x14>; 375*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 376*4882a593Smuzhiyun clock-names = "timer"; 377*4882a593Smuzhiyun status = "disabled"; 378*4882a593Smuzhiyun }; 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun timer5: timer@2c64 { 381*4882a593Smuzhiyun compatible = "snps,dw-apb-timer"; 382*4882a593Smuzhiyun reg = <0x2c64 0x14>; 383*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 384*4882a593Smuzhiyun clock-names = "timer"; 385*4882a593Smuzhiyun status = "disabled"; 386*4882a593Smuzhiyun }; 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun timer6: timer@2c78 { 389*4882a593Smuzhiyun compatible = "snps,dw-apb-timer"; 390*4882a593Smuzhiyun reg = <0x2c78 0x14>; 391*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 392*4882a593Smuzhiyun clock-names = "timer"; 393*4882a593Smuzhiyun status = "disabled"; 394*4882a593Smuzhiyun }; 395*4882a593Smuzhiyun 396*4882a593Smuzhiyun timer7: timer@2c8c { 397*4882a593Smuzhiyun compatible = "snps,dw-apb-timer"; 398*4882a593Smuzhiyun reg = <0x2c8c 0x14>; 399*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 400*4882a593Smuzhiyun clock-names = "timer"; 401*4882a593Smuzhiyun status = "disabled"; 402*4882a593Smuzhiyun }; 403*4882a593Smuzhiyun 404*4882a593Smuzhiyun aic: interrupt-controller@3800 { 405*4882a593Smuzhiyun compatible = "snps,dw-apb-ictl"; 406*4882a593Smuzhiyun reg = <0x3800 0x30>; 407*4882a593Smuzhiyun interrupt-controller; 408*4882a593Smuzhiyun #interrupt-cells = <1>; 409*4882a593Smuzhiyun interrupt-parent = <&gic>; 410*4882a593Smuzhiyun interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 411*4882a593Smuzhiyun }; 412*4882a593Smuzhiyun }; 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun chip: chip-control@ea0000 { 415*4882a593Smuzhiyun compatible = "simple-mfd", "syscon"; 416*4882a593Smuzhiyun reg = <0xea0000 0x400>, <0xdd0170 0x10>; 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun chip_clk: clock { 419*4882a593Smuzhiyun compatible = "marvell,berlin2q-clk"; 420*4882a593Smuzhiyun #clock-cells = <1>; 421*4882a593Smuzhiyun clocks = <&refclk>; 422*4882a593Smuzhiyun clock-names = "refclk"; 423*4882a593Smuzhiyun }; 424*4882a593Smuzhiyun 425*4882a593Smuzhiyun soc_pinctrl: pin-controller { 426*4882a593Smuzhiyun compatible = "marvell,berlin2q-soc-pinctrl"; 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun sd1_pmux: sd1-pmux { 429*4882a593Smuzhiyun groups = "G31"; 430*4882a593Smuzhiyun function = "sd1"; 431*4882a593Smuzhiyun }; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun twsi0_pmux: twsi0-pmux { 434*4882a593Smuzhiyun groups = "G6"; 435*4882a593Smuzhiyun function = "twsi0"; 436*4882a593Smuzhiyun }; 437*4882a593Smuzhiyun 438*4882a593Smuzhiyun twsi1_pmux: twsi1-pmux { 439*4882a593Smuzhiyun groups = "G7"; 440*4882a593Smuzhiyun function = "twsi1"; 441*4882a593Smuzhiyun }; 442*4882a593Smuzhiyun }; 443*4882a593Smuzhiyun 444*4882a593Smuzhiyun chip_rst: reset { 445*4882a593Smuzhiyun compatible = "marvell,berlin2-reset"; 446*4882a593Smuzhiyun #reset-cells = <2>; 447*4882a593Smuzhiyun }; 448*4882a593Smuzhiyun }; 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun ahci: sata@e90000 { 451*4882a593Smuzhiyun compatible = "marvell,berlin2q-ahci", "generic-ahci"; 452*4882a593Smuzhiyun reg = <0xe90000 0x1000>; 453*4882a593Smuzhiyun interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 454*4882a593Smuzhiyun clocks = <&chip_clk CLKID_SATA>; 455*4882a593Smuzhiyun #address-cells = <1>; 456*4882a593Smuzhiyun #size-cells = <0>; 457*4882a593Smuzhiyun 458*4882a593Smuzhiyun sata0: sata-port@0 { 459*4882a593Smuzhiyun reg = <0>; 460*4882a593Smuzhiyun phys = <&sata_phy 0>; 461*4882a593Smuzhiyun status = "disabled"; 462*4882a593Smuzhiyun }; 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun sata1: sata-port@1 { 465*4882a593Smuzhiyun reg = <1>; 466*4882a593Smuzhiyun phys = <&sata_phy 1>; 467*4882a593Smuzhiyun status = "disabled"; 468*4882a593Smuzhiyun }; 469*4882a593Smuzhiyun }; 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun sata_phy: phy@e900a0 { 472*4882a593Smuzhiyun compatible = "marvell,berlin2q-sata-phy"; 473*4882a593Smuzhiyun reg = <0xe900a0 0x200>; 474*4882a593Smuzhiyun clocks = <&chip_clk CLKID_SATA>; 475*4882a593Smuzhiyun #address-cells = <1>; 476*4882a593Smuzhiyun #size-cells = <0>; 477*4882a593Smuzhiyun #phy-cells = <1>; 478*4882a593Smuzhiyun status = "disabled"; 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun sata-phy@0 { 481*4882a593Smuzhiyun reg = <0>; 482*4882a593Smuzhiyun }; 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun sata-phy@1 { 485*4882a593Smuzhiyun reg = <1>; 486*4882a593Smuzhiyun }; 487*4882a593Smuzhiyun }; 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun usb0: usb@ed0000 { 490*4882a593Smuzhiyun compatible = "chipidea,usb2"; 491*4882a593Smuzhiyun reg = <0xed0000 0x10000>; 492*4882a593Smuzhiyun interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 493*4882a593Smuzhiyun clocks = <&chip_clk CLKID_USB0>; 494*4882a593Smuzhiyun phys = <&usb_phy0>; 495*4882a593Smuzhiyun phy-names = "usb-phy"; 496*4882a593Smuzhiyun status = "disabled"; 497*4882a593Smuzhiyun }; 498*4882a593Smuzhiyun 499*4882a593Smuzhiyun usb1: usb@ee0000 { 500*4882a593Smuzhiyun compatible = "chipidea,usb2"; 501*4882a593Smuzhiyun reg = <0xee0000 0x10000>; 502*4882a593Smuzhiyun interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 503*4882a593Smuzhiyun clocks = <&chip_clk CLKID_USB1>; 504*4882a593Smuzhiyun phys = <&usb_phy1>; 505*4882a593Smuzhiyun phy-names = "usb-phy"; 506*4882a593Smuzhiyun status = "disabled"; 507*4882a593Smuzhiyun }; 508*4882a593Smuzhiyun 509*4882a593Smuzhiyun pwm: pwm@f20000 { 510*4882a593Smuzhiyun compatible = "marvell,berlin-pwm"; 511*4882a593Smuzhiyun reg = <0xf20000 0x40>; 512*4882a593Smuzhiyun clocks = <&chip_clk CLKID_CFG>; 513*4882a593Smuzhiyun #pwm-cells = <3>; 514*4882a593Smuzhiyun }; 515*4882a593Smuzhiyun 516*4882a593Smuzhiyun apb@fc0000 { 517*4882a593Smuzhiyun compatible = "simple-bus"; 518*4882a593Smuzhiyun #address-cells = <1>; 519*4882a593Smuzhiyun #size-cells = <1>; 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun ranges = <0 0xfc0000 0x10000>; 522*4882a593Smuzhiyun interrupt-parent = <&sic>; 523*4882a593Smuzhiyun 524*4882a593Smuzhiyun wdt0: watchdog@1000 { 525*4882a593Smuzhiyun compatible = "snps,dw-wdt"; 526*4882a593Smuzhiyun reg = <0x1000 0x100>; 527*4882a593Smuzhiyun clocks = <&refclk>; 528*4882a593Smuzhiyun interrupts = <0>; 529*4882a593Smuzhiyun }; 530*4882a593Smuzhiyun 531*4882a593Smuzhiyun wdt1: watchdog@2000 { 532*4882a593Smuzhiyun compatible = "snps,dw-wdt"; 533*4882a593Smuzhiyun reg = <0x2000 0x100>; 534*4882a593Smuzhiyun clocks = <&refclk>; 535*4882a593Smuzhiyun interrupts = <1>; 536*4882a593Smuzhiyun }; 537*4882a593Smuzhiyun 538*4882a593Smuzhiyun wdt2: watchdog@3000 { 539*4882a593Smuzhiyun compatible = "snps,dw-wdt"; 540*4882a593Smuzhiyun reg = <0x3000 0x100>; 541*4882a593Smuzhiyun clocks = <&refclk>; 542*4882a593Smuzhiyun interrupts = <2>; 543*4882a593Smuzhiyun }; 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun sm_gpio1: gpio@5000 { 546*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 547*4882a593Smuzhiyun reg = <0x5000 0x400>; 548*4882a593Smuzhiyun #address-cells = <1>; 549*4882a593Smuzhiyun #size-cells = <0>; 550*4882a593Smuzhiyun 551*4882a593Smuzhiyun portf: gpio-port@5 { 552*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 553*4882a593Smuzhiyun gpio-controller; 554*4882a593Smuzhiyun #gpio-cells = <2>; 555*4882a593Smuzhiyun snps,nr-gpios = <32>; 556*4882a593Smuzhiyun reg = <0>; 557*4882a593Smuzhiyun }; 558*4882a593Smuzhiyun }; 559*4882a593Smuzhiyun 560*4882a593Smuzhiyun i2c2: i2c@7000 { 561*4882a593Smuzhiyun compatible = "snps,designware-i2c"; 562*4882a593Smuzhiyun #address-cells = <1>; 563*4882a593Smuzhiyun #size-cells = <0>; 564*4882a593Smuzhiyun reg = <0x7000 0x100>; 565*4882a593Smuzhiyun interrupts = <6>; 566*4882a593Smuzhiyun clocks = <&refclk>; 567*4882a593Smuzhiyun pinctrl-0 = <&twsi2_pmux>; 568*4882a593Smuzhiyun pinctrl-names = "default"; 569*4882a593Smuzhiyun status = "disabled"; 570*4882a593Smuzhiyun }; 571*4882a593Smuzhiyun 572*4882a593Smuzhiyun i2c3: i2c@8000 { 573*4882a593Smuzhiyun compatible = "snps,designware-i2c"; 574*4882a593Smuzhiyun #address-cells = <1>; 575*4882a593Smuzhiyun #size-cells = <0>; 576*4882a593Smuzhiyun reg = <0x8000 0x100>; 577*4882a593Smuzhiyun interrupts = <7>; 578*4882a593Smuzhiyun clocks = <&refclk>; 579*4882a593Smuzhiyun pinctrl-0 = <&twsi3_pmux>; 580*4882a593Smuzhiyun pinctrl-names = "default"; 581*4882a593Smuzhiyun status = "disabled"; 582*4882a593Smuzhiyun }; 583*4882a593Smuzhiyun 584*4882a593Smuzhiyun uart0: uart@9000 { 585*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 586*4882a593Smuzhiyun reg = <0x9000 0x100>; 587*4882a593Smuzhiyun interrupts = <8>; 588*4882a593Smuzhiyun clocks = <&refclk>; 589*4882a593Smuzhiyun reg-shift = <2>; 590*4882a593Smuzhiyun pinctrl-0 = <&uart0_pmux>; 591*4882a593Smuzhiyun pinctrl-names = "default"; 592*4882a593Smuzhiyun status = "disabled"; 593*4882a593Smuzhiyun }; 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun uart1: uart@a000 { 596*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 597*4882a593Smuzhiyun reg = <0xa000 0x100>; 598*4882a593Smuzhiyun interrupts = <9>; 599*4882a593Smuzhiyun clocks = <&refclk>; 600*4882a593Smuzhiyun reg-shift = <2>; 601*4882a593Smuzhiyun pinctrl-0 = <&uart1_pmux>; 602*4882a593Smuzhiyun pinctrl-names = "default"; 603*4882a593Smuzhiyun status = "disabled"; 604*4882a593Smuzhiyun }; 605*4882a593Smuzhiyun 606*4882a593Smuzhiyun sm_gpio0: gpio@c000 { 607*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 608*4882a593Smuzhiyun reg = <0xc000 0x400>; 609*4882a593Smuzhiyun #address-cells = <1>; 610*4882a593Smuzhiyun #size-cells = <0>; 611*4882a593Smuzhiyun 612*4882a593Smuzhiyun porte: gpio-port@4 { 613*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 614*4882a593Smuzhiyun gpio-controller; 615*4882a593Smuzhiyun #gpio-cells = <2>; 616*4882a593Smuzhiyun snps,nr-gpios = <32>; 617*4882a593Smuzhiyun reg = <0>; 618*4882a593Smuzhiyun }; 619*4882a593Smuzhiyun }; 620*4882a593Smuzhiyun 621*4882a593Smuzhiyun sysctrl: pin-controller@d000 { 622*4882a593Smuzhiyun compatible = "simple-mfd", "syscon"; 623*4882a593Smuzhiyun reg = <0xd000 0x100>; 624*4882a593Smuzhiyun 625*4882a593Smuzhiyun sys_pinctrl: pin-controller { 626*4882a593Smuzhiyun compatible = "marvell,berlin2q-system-pinctrl"; 627*4882a593Smuzhiyun 628*4882a593Smuzhiyun uart0_pmux: uart0-pmux { 629*4882a593Smuzhiyun groups = "GSM12"; 630*4882a593Smuzhiyun function = "uart0"; 631*4882a593Smuzhiyun }; 632*4882a593Smuzhiyun 633*4882a593Smuzhiyun uart1_pmux: uart1-pmux { 634*4882a593Smuzhiyun groups = "GSM14"; 635*4882a593Smuzhiyun function = "uart1"; 636*4882a593Smuzhiyun }; 637*4882a593Smuzhiyun 638*4882a593Smuzhiyun twsi2_pmux: twsi2-pmux { 639*4882a593Smuzhiyun groups = "GSM13"; 640*4882a593Smuzhiyun function = "twsi2"; 641*4882a593Smuzhiyun }; 642*4882a593Smuzhiyun 643*4882a593Smuzhiyun twsi3_pmux: twsi3-pmux { 644*4882a593Smuzhiyun groups = "GSM14"; 645*4882a593Smuzhiyun function = "twsi3"; 646*4882a593Smuzhiyun }; 647*4882a593Smuzhiyun }; 648*4882a593Smuzhiyun 649*4882a593Smuzhiyun adc: adc { 650*4882a593Smuzhiyun compatible = "marvell,berlin2-adc"; 651*4882a593Smuzhiyun interrupts = <12>, <14>; 652*4882a593Smuzhiyun interrupt-names = "adc", "tsen"; 653*4882a593Smuzhiyun }; 654*4882a593Smuzhiyun }; 655*4882a593Smuzhiyun 656*4882a593Smuzhiyun sic: interrupt-controller@e000 { 657*4882a593Smuzhiyun compatible = "snps,dw-apb-ictl"; 658*4882a593Smuzhiyun reg = <0xe000 0x30>; 659*4882a593Smuzhiyun interrupt-controller; 660*4882a593Smuzhiyun #interrupt-cells = <1>; 661*4882a593Smuzhiyun interrupt-parent = <&gic>; 662*4882a593Smuzhiyun interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; 663*4882a593Smuzhiyun }; 664*4882a593Smuzhiyun }; 665*4882a593Smuzhiyun }; 666*4882a593Smuzhiyun}; 667