1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (C) 2015 Marvell Technology Group Ltd. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Author: Jisheng Zhang <jszhang@marvell.com> 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun/ { 11*4882a593Smuzhiyun compatible = "marvell,berlin4ct", "marvell,berlin"; 12*4882a593Smuzhiyun interrupt-parent = <&gic>; 13*4882a593Smuzhiyun #address-cells = <2>; 14*4882a593Smuzhiyun #size-cells = <2>; 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun aliases { 17*4882a593Smuzhiyun serial0 = &uart0; 18*4882a593Smuzhiyun }; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun psci { 21*4882a593Smuzhiyun compatible = "arm,psci-1.0", "arm,psci-0.2"; 22*4882a593Smuzhiyun method = "smc"; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun cpus { 26*4882a593Smuzhiyun #address-cells = <1>; 27*4882a593Smuzhiyun #size-cells = <0>; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun cpu0: cpu@0 { 30*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 31*4882a593Smuzhiyun device_type = "cpu"; 32*4882a593Smuzhiyun reg = <0x0>; 33*4882a593Smuzhiyun enable-method = "psci"; 34*4882a593Smuzhiyun next-level-cache = <&l2>; 35*4882a593Smuzhiyun cpu-idle-states = <&CPU_SLEEP_0>; 36*4882a593Smuzhiyun }; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun cpu1: cpu@1 { 39*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 40*4882a593Smuzhiyun device_type = "cpu"; 41*4882a593Smuzhiyun reg = <0x1>; 42*4882a593Smuzhiyun enable-method = "psci"; 43*4882a593Smuzhiyun next-level-cache = <&l2>; 44*4882a593Smuzhiyun cpu-idle-states = <&CPU_SLEEP_0>; 45*4882a593Smuzhiyun }; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun cpu2: cpu@2 { 48*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 49*4882a593Smuzhiyun device_type = "cpu"; 50*4882a593Smuzhiyun reg = <0x2>; 51*4882a593Smuzhiyun enable-method = "psci"; 52*4882a593Smuzhiyun next-level-cache = <&l2>; 53*4882a593Smuzhiyun cpu-idle-states = <&CPU_SLEEP_0>; 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun cpu3: cpu@3 { 57*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 58*4882a593Smuzhiyun device_type = "cpu"; 59*4882a593Smuzhiyun reg = <0x3>; 60*4882a593Smuzhiyun enable-method = "psci"; 61*4882a593Smuzhiyun next-level-cache = <&l2>; 62*4882a593Smuzhiyun cpu-idle-states = <&CPU_SLEEP_0>; 63*4882a593Smuzhiyun }; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun l2: cache { 66*4882a593Smuzhiyun compatible = "cache"; 67*4882a593Smuzhiyun }; 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun idle-states { 70*4882a593Smuzhiyun entry-method = "psci"; 71*4882a593Smuzhiyun CPU_SLEEP_0: cpu-sleep-0 { 72*4882a593Smuzhiyun compatible = "arm,idle-state"; 73*4882a593Smuzhiyun local-timer-stop; 74*4882a593Smuzhiyun arm,psci-suspend-param = <0x0010000>; 75*4882a593Smuzhiyun entry-latency-us = <75>; 76*4882a593Smuzhiyun exit-latency-us = <155>; 77*4882a593Smuzhiyun min-residency-us = <1000>; 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun }; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun osc: osc { 83*4882a593Smuzhiyun compatible = "fixed-clock"; 84*4882a593Smuzhiyun #clock-cells = <0>; 85*4882a593Smuzhiyun clock-frequency = <25000000>; 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun pmu { 89*4882a593Smuzhiyun compatible = "arm,cortex-a53-pmu", "arm,armv8-pmuv3"; 90*4882a593Smuzhiyun interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>, 91*4882a593Smuzhiyun <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>, 92*4882a593Smuzhiyun <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>, 93*4882a593Smuzhiyun <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; 94*4882a593Smuzhiyun interrupt-affinity = <&cpu0>, 95*4882a593Smuzhiyun <&cpu1>, 96*4882a593Smuzhiyun <&cpu2>, 97*4882a593Smuzhiyun <&cpu3>; 98*4882a593Smuzhiyun }; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun timer { 101*4882a593Smuzhiyun compatible = "arm,armv8-timer"; 102*4882a593Smuzhiyun interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 103*4882a593Smuzhiyun <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 104*4882a593Smuzhiyun <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 105*4882a593Smuzhiyun <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 106*4882a593Smuzhiyun }; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun soc@f7000000 { 109*4882a593Smuzhiyun compatible = "simple-bus"; 110*4882a593Smuzhiyun #address-cells = <1>; 111*4882a593Smuzhiyun #size-cells = <1>; 112*4882a593Smuzhiyun ranges = <0 0 0xf7000000 0x1000000>; 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun gic: interrupt-controller@901000 { 115*4882a593Smuzhiyun compatible = "arm,gic-400"; 116*4882a593Smuzhiyun #interrupt-cells = <3>; 117*4882a593Smuzhiyun interrupt-controller; 118*4882a593Smuzhiyun reg = <0x901000 0x1000>, 119*4882a593Smuzhiyun <0x902000 0x2000>, 120*4882a593Smuzhiyun <0x904000 0x2000>, 121*4882a593Smuzhiyun <0x906000 0x2000>; 122*4882a593Smuzhiyun interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun apb@e80000 { 126*4882a593Smuzhiyun compatible = "simple-bus"; 127*4882a593Smuzhiyun #address-cells = <1>; 128*4882a593Smuzhiyun #size-cells = <1>; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun ranges = <0 0xe80000 0x10000>; 131*4882a593Smuzhiyun interrupt-parent = <&aic>; 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun gpio0: gpio@400 { 134*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 135*4882a593Smuzhiyun reg = <0x0400 0x400>; 136*4882a593Smuzhiyun #address-cells = <1>; 137*4882a593Smuzhiyun #size-cells = <0>; 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun porta: gpio-port@0 { 140*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 141*4882a593Smuzhiyun gpio-controller; 142*4882a593Smuzhiyun #gpio-cells = <2>; 143*4882a593Smuzhiyun snps,nr-gpios = <32>; 144*4882a593Smuzhiyun reg = <0>; 145*4882a593Smuzhiyun interrupt-controller; 146*4882a593Smuzhiyun #interrupt-cells = <2>; 147*4882a593Smuzhiyun interrupts = <0>; 148*4882a593Smuzhiyun }; 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun gpio1: gpio@800 { 152*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 153*4882a593Smuzhiyun reg = <0x0800 0x400>; 154*4882a593Smuzhiyun #address-cells = <1>; 155*4882a593Smuzhiyun #size-cells = <0>; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun portb: gpio-port@1 { 158*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 159*4882a593Smuzhiyun gpio-controller; 160*4882a593Smuzhiyun #gpio-cells = <2>; 161*4882a593Smuzhiyun snps,nr-gpios = <32>; 162*4882a593Smuzhiyun reg = <0>; 163*4882a593Smuzhiyun interrupt-controller; 164*4882a593Smuzhiyun #interrupt-cells = <2>; 165*4882a593Smuzhiyun interrupts = <1>; 166*4882a593Smuzhiyun }; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun gpio2: gpio@c00 { 170*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 171*4882a593Smuzhiyun reg = <0x0c00 0x400>; 172*4882a593Smuzhiyun #address-cells = <1>; 173*4882a593Smuzhiyun #size-cells = <0>; 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun portc: gpio-port@2 { 176*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 177*4882a593Smuzhiyun gpio-controller; 178*4882a593Smuzhiyun #gpio-cells = <2>; 179*4882a593Smuzhiyun snps,nr-gpios = <32>; 180*4882a593Smuzhiyun reg = <0>; 181*4882a593Smuzhiyun interrupt-controller; 182*4882a593Smuzhiyun #interrupt-cells = <2>; 183*4882a593Smuzhiyun interrupts = <2>; 184*4882a593Smuzhiyun }; 185*4882a593Smuzhiyun }; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun gpio3: gpio@1000 { 188*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 189*4882a593Smuzhiyun reg = <0x1000 0x400>; 190*4882a593Smuzhiyun #address-cells = <1>; 191*4882a593Smuzhiyun #size-cells = <0>; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun portd: gpio-port@3 { 194*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 195*4882a593Smuzhiyun gpio-controller; 196*4882a593Smuzhiyun #gpio-cells = <2>; 197*4882a593Smuzhiyun snps,nr-gpios = <32>; 198*4882a593Smuzhiyun reg = <0>; 199*4882a593Smuzhiyun interrupt-controller; 200*4882a593Smuzhiyun #interrupt-cells = <2>; 201*4882a593Smuzhiyun interrupts = <3>; 202*4882a593Smuzhiyun }; 203*4882a593Smuzhiyun }; 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun aic: interrupt-controller@3800 { 206*4882a593Smuzhiyun compatible = "snps,dw-apb-ictl"; 207*4882a593Smuzhiyun reg = <0x3800 0x30>; 208*4882a593Smuzhiyun interrupt-controller; 209*4882a593Smuzhiyun #interrupt-cells = <1>; 210*4882a593Smuzhiyun interrupt-parent = <&gic>; 211*4882a593Smuzhiyun interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 212*4882a593Smuzhiyun }; 213*4882a593Smuzhiyun }; 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun soc_pinctrl: pin-controller@ea8000 { 216*4882a593Smuzhiyun compatible = "marvell,berlin4ct-soc-pinctrl"; 217*4882a593Smuzhiyun reg = <0xea8000 0x14>; 218*4882a593Smuzhiyun }; 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun avio_pinctrl: pin-controller@ea8400 { 221*4882a593Smuzhiyun compatible = "marvell,berlin4ct-avio-pinctrl"; 222*4882a593Smuzhiyun reg = <0xea8400 0x8>; 223*4882a593Smuzhiyun }; 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun apb@fc0000 { 226*4882a593Smuzhiyun compatible = "simple-bus"; 227*4882a593Smuzhiyun #address-cells = <1>; 228*4882a593Smuzhiyun #size-cells = <1>; 229*4882a593Smuzhiyun ranges = <0 0xfc0000 0x10000>; 230*4882a593Smuzhiyun interrupt-parent = <&sic>; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun sic: interrupt-controller@1000 { 233*4882a593Smuzhiyun compatible = "snps,dw-apb-ictl"; 234*4882a593Smuzhiyun reg = <0x1000 0x30>; 235*4882a593Smuzhiyun interrupt-controller; 236*4882a593Smuzhiyun #interrupt-cells = <1>; 237*4882a593Smuzhiyun interrupt-parent = <&gic>; 238*4882a593Smuzhiyun interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 239*4882a593Smuzhiyun }; 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun wdt0: watchdog@3000 { 242*4882a593Smuzhiyun compatible = "snps,dw-wdt"; 243*4882a593Smuzhiyun reg = <0x3000 0x100>; 244*4882a593Smuzhiyun clocks = <&osc>; 245*4882a593Smuzhiyun interrupts = <0>; 246*4882a593Smuzhiyun }; 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun wdt1: watchdog@4000 { 249*4882a593Smuzhiyun compatible = "snps,dw-wdt"; 250*4882a593Smuzhiyun reg = <0x4000 0x100>; 251*4882a593Smuzhiyun clocks = <&osc>; 252*4882a593Smuzhiyun interrupts = <1>; 253*4882a593Smuzhiyun }; 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun wdt2: watchdog@5000 { 256*4882a593Smuzhiyun compatible = "snps,dw-wdt"; 257*4882a593Smuzhiyun reg = <0x5000 0x100>; 258*4882a593Smuzhiyun clocks = <&osc>; 259*4882a593Smuzhiyun interrupts = <2>; 260*4882a593Smuzhiyun }; 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun sm_gpio0: gpio@8000 { 263*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 264*4882a593Smuzhiyun reg = <0x8000 0x400>; 265*4882a593Smuzhiyun #address-cells = <1>; 266*4882a593Smuzhiyun #size-cells = <0>; 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun porte: gpio-port@4 { 269*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 270*4882a593Smuzhiyun gpio-controller; 271*4882a593Smuzhiyun #gpio-cells = <2>; 272*4882a593Smuzhiyun snps,nr-gpios = <32>; 273*4882a593Smuzhiyun reg = <0>; 274*4882a593Smuzhiyun }; 275*4882a593Smuzhiyun }; 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun sm_gpio1: gpio@9000 { 278*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 279*4882a593Smuzhiyun reg = <0x9000 0x400>; 280*4882a593Smuzhiyun #address-cells = <1>; 281*4882a593Smuzhiyun #size-cells = <0>; 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun portf: gpio-port@5 { 284*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 285*4882a593Smuzhiyun gpio-controller; 286*4882a593Smuzhiyun #gpio-cells = <2>; 287*4882a593Smuzhiyun snps,nr-gpios = <32>; 288*4882a593Smuzhiyun reg = <0>; 289*4882a593Smuzhiyun }; 290*4882a593Smuzhiyun }; 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun uart0: uart@d000 { 293*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 294*4882a593Smuzhiyun reg = <0xd000 0x100>; 295*4882a593Smuzhiyun interrupts = <8>; 296*4882a593Smuzhiyun clocks = <&osc>; 297*4882a593Smuzhiyun reg-shift = <2>; 298*4882a593Smuzhiyun status = "disabled"; 299*4882a593Smuzhiyun pinctrl-0 = <&uart0_pmux>; 300*4882a593Smuzhiyun pinctrl-names = "default"; 301*4882a593Smuzhiyun }; 302*4882a593Smuzhiyun }; 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun system_pinctrl: pin-controller@fe2200 { 305*4882a593Smuzhiyun compatible = "marvell,berlin4ct-system-pinctrl"; 306*4882a593Smuzhiyun reg = <0xfe2200 0xc>; 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun uart0_pmux: uart0-pmux { 309*4882a593Smuzhiyun groups = "SM_URT0_TXD", "SM_URT0_RXD"; 310*4882a593Smuzhiyun function = "uart0"; 311*4882a593Smuzhiyun }; 312*4882a593Smuzhiyun }; 313*4882a593Smuzhiyun }; 314*4882a593Smuzhiyun}; 315