1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * ARM Ltd. Versatile Express 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * CoreTile Express A15x2 A7x3 6*4882a593Smuzhiyun * Cortex-A15_A7 MPCore (V2P-CA15_A7) 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * HBI-0249A 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun/dts-v1/; 12*4882a593Smuzhiyun#include "vexpress-v2m-rs1.dtsi" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/ { 15*4882a593Smuzhiyun model = "V2P-CA15_CA7"; 16*4882a593Smuzhiyun arm,hbi = <0x249>; 17*4882a593Smuzhiyun arm,vexpress,site = <0xf>; 18*4882a593Smuzhiyun compatible = "arm,vexpress,v2p-ca15_a7", "arm,vexpress"; 19*4882a593Smuzhiyun interrupt-parent = <&gic>; 20*4882a593Smuzhiyun #address-cells = <2>; 21*4882a593Smuzhiyun #size-cells = <2>; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun chosen { }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun aliases { 26*4882a593Smuzhiyun serial0 = &v2m_serial0; 27*4882a593Smuzhiyun serial1 = &v2m_serial1; 28*4882a593Smuzhiyun serial2 = &v2m_serial2; 29*4882a593Smuzhiyun serial3 = &v2m_serial3; 30*4882a593Smuzhiyun i2c0 = &v2m_i2c_dvi; 31*4882a593Smuzhiyun i2c1 = &v2m_i2c_pcie; 32*4882a593Smuzhiyun }; 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun cpus { 35*4882a593Smuzhiyun #address-cells = <1>; 36*4882a593Smuzhiyun #size-cells = <0>; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun cpu0: cpu@0 { 39*4882a593Smuzhiyun device_type = "cpu"; 40*4882a593Smuzhiyun compatible = "arm,cortex-a15"; 41*4882a593Smuzhiyun reg = <0>; 42*4882a593Smuzhiyun cci-control-port = <&cci_control1>; 43*4882a593Smuzhiyun cpu-idle-states = <&CLUSTER_SLEEP_BIG>; 44*4882a593Smuzhiyun capacity-dmips-mhz = <1024>; 45*4882a593Smuzhiyun dynamic-power-coefficient = <990>; 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun cpu1: cpu@1 { 49*4882a593Smuzhiyun device_type = "cpu"; 50*4882a593Smuzhiyun compatible = "arm,cortex-a15"; 51*4882a593Smuzhiyun reg = <1>; 52*4882a593Smuzhiyun cci-control-port = <&cci_control1>; 53*4882a593Smuzhiyun cpu-idle-states = <&CLUSTER_SLEEP_BIG>; 54*4882a593Smuzhiyun capacity-dmips-mhz = <1024>; 55*4882a593Smuzhiyun dynamic-power-coefficient = <990>; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun cpu2: cpu@2 { 59*4882a593Smuzhiyun device_type = "cpu"; 60*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 61*4882a593Smuzhiyun reg = <0x100>; 62*4882a593Smuzhiyun cci-control-port = <&cci_control2>; 63*4882a593Smuzhiyun cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; 64*4882a593Smuzhiyun capacity-dmips-mhz = <516>; 65*4882a593Smuzhiyun dynamic-power-coefficient = <133>; 66*4882a593Smuzhiyun }; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun cpu3: cpu@3 { 69*4882a593Smuzhiyun device_type = "cpu"; 70*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 71*4882a593Smuzhiyun reg = <0x101>; 72*4882a593Smuzhiyun cci-control-port = <&cci_control2>; 73*4882a593Smuzhiyun cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; 74*4882a593Smuzhiyun capacity-dmips-mhz = <516>; 75*4882a593Smuzhiyun dynamic-power-coefficient = <133>; 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun cpu4: cpu@4 { 79*4882a593Smuzhiyun device_type = "cpu"; 80*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 81*4882a593Smuzhiyun reg = <0x102>; 82*4882a593Smuzhiyun cci-control-port = <&cci_control2>; 83*4882a593Smuzhiyun cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; 84*4882a593Smuzhiyun capacity-dmips-mhz = <516>; 85*4882a593Smuzhiyun dynamic-power-coefficient = <133>; 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun idle-states { 89*4882a593Smuzhiyun CLUSTER_SLEEP_BIG: cluster-sleep-big { 90*4882a593Smuzhiyun compatible = "arm,idle-state"; 91*4882a593Smuzhiyun local-timer-stop; 92*4882a593Smuzhiyun entry-latency-us = <1000>; 93*4882a593Smuzhiyun exit-latency-us = <700>; 94*4882a593Smuzhiyun min-residency-us = <2000>; 95*4882a593Smuzhiyun }; 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun CLUSTER_SLEEP_LITTLE: cluster-sleep-little { 98*4882a593Smuzhiyun compatible = "arm,idle-state"; 99*4882a593Smuzhiyun local-timer-stop; 100*4882a593Smuzhiyun entry-latency-us = <1000>; 101*4882a593Smuzhiyun exit-latency-us = <500>; 102*4882a593Smuzhiyun min-residency-us = <2500>; 103*4882a593Smuzhiyun }; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun memory@80000000 { 108*4882a593Smuzhiyun device_type = "memory"; 109*4882a593Smuzhiyun reg = <0 0x80000000 0 0x40000000>; 110*4882a593Smuzhiyun }; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun reserved-memory { 113*4882a593Smuzhiyun #address-cells = <2>; 114*4882a593Smuzhiyun #size-cells = <2>; 115*4882a593Smuzhiyun ranges; 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* Chipselect 2 is physically at 0x18000000 */ 118*4882a593Smuzhiyun vram: vram@18000000 { 119*4882a593Smuzhiyun /* 8 MB of designated video RAM */ 120*4882a593Smuzhiyun compatible = "shared-dma-pool"; 121*4882a593Smuzhiyun reg = <0 0x18000000 0 0x00800000>; 122*4882a593Smuzhiyun no-map; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun }; 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun wdt@2a490000 { 127*4882a593Smuzhiyun compatible = "arm,sp805", "arm,primecell"; 128*4882a593Smuzhiyun reg = <0 0x2a490000 0 0x1000>; 129*4882a593Smuzhiyun interrupts = <0 98 4>; 130*4882a593Smuzhiyun clocks = <&oscclk6a>, <&oscclk6a>; 131*4882a593Smuzhiyun clock-names = "wdog_clk", "apb_pclk"; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun hdlcd@2b000000 { 135*4882a593Smuzhiyun compatible = "arm,hdlcd"; 136*4882a593Smuzhiyun reg = <0 0x2b000000 0 0x1000>; 137*4882a593Smuzhiyun interrupts = <0 85 4>; 138*4882a593Smuzhiyun clocks = <&hdlcd_clk>; 139*4882a593Smuzhiyun clock-names = "pxlclk"; 140*4882a593Smuzhiyun }; 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun memory-controller@2b0a0000 { 143*4882a593Smuzhiyun compatible = "arm,pl341", "arm,primecell"; 144*4882a593Smuzhiyun reg = <0 0x2b0a0000 0 0x1000>; 145*4882a593Smuzhiyun clocks = <&oscclk6a>; 146*4882a593Smuzhiyun clock-names = "apb_pclk"; 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun gic: interrupt-controller@2c001000 { 150*4882a593Smuzhiyun compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; 151*4882a593Smuzhiyun #interrupt-cells = <3>; 152*4882a593Smuzhiyun #address-cells = <0>; 153*4882a593Smuzhiyun interrupt-controller; 154*4882a593Smuzhiyun reg = <0 0x2c001000 0 0x1000>, 155*4882a593Smuzhiyun <0 0x2c002000 0 0x2000>, 156*4882a593Smuzhiyun <0 0x2c004000 0 0x2000>, 157*4882a593Smuzhiyun <0 0x2c006000 0 0x2000>; 158*4882a593Smuzhiyun interrupts = <1 9 0xf04>; 159*4882a593Smuzhiyun }; 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun cci@2c090000 { 162*4882a593Smuzhiyun compatible = "arm,cci-400"; 163*4882a593Smuzhiyun #address-cells = <1>; 164*4882a593Smuzhiyun #size-cells = <1>; 165*4882a593Smuzhiyun reg = <0 0x2c090000 0 0x1000>; 166*4882a593Smuzhiyun ranges = <0x0 0x0 0x2c090000 0x10000>; 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun cci_control1: slave-if@4000 { 169*4882a593Smuzhiyun compatible = "arm,cci-400-ctrl-if"; 170*4882a593Smuzhiyun interface-type = "ace"; 171*4882a593Smuzhiyun reg = <0x4000 0x1000>; 172*4882a593Smuzhiyun }; 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun cci_control2: slave-if@5000 { 175*4882a593Smuzhiyun compatible = "arm,cci-400-ctrl-if"; 176*4882a593Smuzhiyun interface-type = "ace"; 177*4882a593Smuzhiyun reg = <0x5000 0x1000>; 178*4882a593Smuzhiyun }; 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun pmu@9000 { 181*4882a593Smuzhiyun compatible = "arm,cci-400-pmu,r0"; 182*4882a593Smuzhiyun reg = <0x9000 0x5000>; 183*4882a593Smuzhiyun interrupts = <0 105 4>, 184*4882a593Smuzhiyun <0 101 4>, 185*4882a593Smuzhiyun <0 102 4>, 186*4882a593Smuzhiyun <0 103 4>, 187*4882a593Smuzhiyun <0 104 4>; 188*4882a593Smuzhiyun }; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun memory-controller@7ffd0000 { 192*4882a593Smuzhiyun compatible = "arm,pl354", "arm,primecell"; 193*4882a593Smuzhiyun reg = <0 0x7ffd0000 0 0x1000>; 194*4882a593Smuzhiyun interrupts = <0 86 4>, 195*4882a593Smuzhiyun <0 87 4>; 196*4882a593Smuzhiyun clocks = <&oscclk6a>; 197*4882a593Smuzhiyun clock-names = "apb_pclk"; 198*4882a593Smuzhiyun }; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun dma@7ff00000 { 201*4882a593Smuzhiyun compatible = "arm,pl330", "arm,primecell"; 202*4882a593Smuzhiyun reg = <0 0x7ff00000 0 0x1000>; 203*4882a593Smuzhiyun interrupts = <0 92 4>, 204*4882a593Smuzhiyun <0 88 4>, 205*4882a593Smuzhiyun <0 89 4>, 206*4882a593Smuzhiyun <0 90 4>, 207*4882a593Smuzhiyun <0 91 4>; 208*4882a593Smuzhiyun clocks = <&oscclk6a>; 209*4882a593Smuzhiyun clock-names = "apb_pclk"; 210*4882a593Smuzhiyun }; 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun scc@7fff0000 { 213*4882a593Smuzhiyun compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc"; 214*4882a593Smuzhiyun reg = <0 0x7fff0000 0 0x1000>; 215*4882a593Smuzhiyun interrupts = <0 95 4>; 216*4882a593Smuzhiyun }; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun timer { 219*4882a593Smuzhiyun compatible = "arm,armv7-timer"; 220*4882a593Smuzhiyun interrupts = <1 13 0xf08>, 221*4882a593Smuzhiyun <1 14 0xf08>, 222*4882a593Smuzhiyun <1 11 0xf08>, 223*4882a593Smuzhiyun <1 10 0xf08>; 224*4882a593Smuzhiyun }; 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun pmu-a15 { 227*4882a593Smuzhiyun compatible = "arm,cortex-a15-pmu"; 228*4882a593Smuzhiyun interrupts = <0 68 4>, 229*4882a593Smuzhiyun <0 69 4>; 230*4882a593Smuzhiyun interrupt-affinity = <&cpu0>, 231*4882a593Smuzhiyun <&cpu1>; 232*4882a593Smuzhiyun }; 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun pmu-a7 { 235*4882a593Smuzhiyun compatible = "arm,cortex-a7-pmu"; 236*4882a593Smuzhiyun interrupts = <0 128 4>, 237*4882a593Smuzhiyun <0 129 4>, 238*4882a593Smuzhiyun <0 130 4>; 239*4882a593Smuzhiyun interrupt-affinity = <&cpu2>, 240*4882a593Smuzhiyun <&cpu3>, 241*4882a593Smuzhiyun <&cpu4>; 242*4882a593Smuzhiyun }; 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun oscclk6a: oscclk6a { 245*4882a593Smuzhiyun /* Reference 24MHz clock */ 246*4882a593Smuzhiyun compatible = "fixed-clock"; 247*4882a593Smuzhiyun #clock-cells = <0>; 248*4882a593Smuzhiyun clock-frequency = <24000000>; 249*4882a593Smuzhiyun clock-output-names = "oscclk6a"; 250*4882a593Smuzhiyun }; 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun dcc { 253*4882a593Smuzhiyun compatible = "arm,vexpress,config-bus"; 254*4882a593Smuzhiyun arm,vexpress,config-bridge = <&v2m_sysreg>; 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun oscclk0 { 257*4882a593Smuzhiyun /* A15 PLL 0 reference clock */ 258*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 259*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 0>; 260*4882a593Smuzhiyun freq-range = <17000000 50000000>; 261*4882a593Smuzhiyun #clock-cells = <0>; 262*4882a593Smuzhiyun clock-output-names = "oscclk0"; 263*4882a593Smuzhiyun }; 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun oscclk1 { 266*4882a593Smuzhiyun /* A15 PLL 1 reference clock */ 267*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 268*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 1>; 269*4882a593Smuzhiyun freq-range = <17000000 50000000>; 270*4882a593Smuzhiyun #clock-cells = <0>; 271*4882a593Smuzhiyun clock-output-names = "oscclk1"; 272*4882a593Smuzhiyun }; 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun oscclk2 { 275*4882a593Smuzhiyun /* A7 PLL 0 reference clock */ 276*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 277*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 2>; 278*4882a593Smuzhiyun freq-range = <17000000 50000000>; 279*4882a593Smuzhiyun #clock-cells = <0>; 280*4882a593Smuzhiyun clock-output-names = "oscclk2"; 281*4882a593Smuzhiyun }; 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun oscclk3 { 284*4882a593Smuzhiyun /* A7 PLL 1 reference clock */ 285*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 286*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 3>; 287*4882a593Smuzhiyun freq-range = <17000000 50000000>; 288*4882a593Smuzhiyun #clock-cells = <0>; 289*4882a593Smuzhiyun clock-output-names = "oscclk3"; 290*4882a593Smuzhiyun }; 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun oscclk4 { 293*4882a593Smuzhiyun /* External AXI master clock */ 294*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 295*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 4>; 296*4882a593Smuzhiyun freq-range = <20000000 40000000>; 297*4882a593Smuzhiyun #clock-cells = <0>; 298*4882a593Smuzhiyun clock-output-names = "oscclk4"; 299*4882a593Smuzhiyun }; 300*4882a593Smuzhiyun 301*4882a593Smuzhiyun hdlcd_clk: oscclk5 { 302*4882a593Smuzhiyun /* HDLCD PLL reference clock */ 303*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 304*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 5>; 305*4882a593Smuzhiyun freq-range = <23750000 165000000>; 306*4882a593Smuzhiyun #clock-cells = <0>; 307*4882a593Smuzhiyun clock-output-names = "oscclk5"; 308*4882a593Smuzhiyun }; 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun smbclk: oscclk6 { 311*4882a593Smuzhiyun /* Static memory controller clock */ 312*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 313*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 6>; 314*4882a593Smuzhiyun freq-range = <20000000 40000000>; 315*4882a593Smuzhiyun #clock-cells = <0>; 316*4882a593Smuzhiyun clock-output-names = "oscclk6"; 317*4882a593Smuzhiyun }; 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun oscclk7 { 320*4882a593Smuzhiyun /* SYS PLL reference clock */ 321*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 322*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 7>; 323*4882a593Smuzhiyun freq-range = <17000000 50000000>; 324*4882a593Smuzhiyun #clock-cells = <0>; 325*4882a593Smuzhiyun clock-output-names = "oscclk7"; 326*4882a593Smuzhiyun }; 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun oscclk8 { 329*4882a593Smuzhiyun /* DDR2 PLL reference clock */ 330*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 331*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 8>; 332*4882a593Smuzhiyun freq-range = <20000000 50000000>; 333*4882a593Smuzhiyun #clock-cells = <0>; 334*4882a593Smuzhiyun clock-output-names = "oscclk8"; 335*4882a593Smuzhiyun }; 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun volt-a15 { 338*4882a593Smuzhiyun /* A15 CPU core voltage */ 339*4882a593Smuzhiyun compatible = "arm,vexpress-volt"; 340*4882a593Smuzhiyun arm,vexpress-sysreg,func = <2 0>; 341*4882a593Smuzhiyun regulator-name = "A15 Vcore"; 342*4882a593Smuzhiyun regulator-min-microvolt = <800000>; 343*4882a593Smuzhiyun regulator-max-microvolt = <1050000>; 344*4882a593Smuzhiyun regulator-always-on; 345*4882a593Smuzhiyun label = "A15 Vcore"; 346*4882a593Smuzhiyun }; 347*4882a593Smuzhiyun 348*4882a593Smuzhiyun volt-a7 { 349*4882a593Smuzhiyun /* A7 CPU core voltage */ 350*4882a593Smuzhiyun compatible = "arm,vexpress-volt"; 351*4882a593Smuzhiyun arm,vexpress-sysreg,func = <2 1>; 352*4882a593Smuzhiyun regulator-name = "A7 Vcore"; 353*4882a593Smuzhiyun regulator-min-microvolt = <800000>; 354*4882a593Smuzhiyun regulator-max-microvolt = <1050000>; 355*4882a593Smuzhiyun regulator-always-on; 356*4882a593Smuzhiyun label = "A7 Vcore"; 357*4882a593Smuzhiyun }; 358*4882a593Smuzhiyun 359*4882a593Smuzhiyun amp-a15 { 360*4882a593Smuzhiyun /* Total current for the two A15 cores */ 361*4882a593Smuzhiyun compatible = "arm,vexpress-amp"; 362*4882a593Smuzhiyun arm,vexpress-sysreg,func = <3 0>; 363*4882a593Smuzhiyun label = "A15 Icore"; 364*4882a593Smuzhiyun }; 365*4882a593Smuzhiyun 366*4882a593Smuzhiyun amp-a7 { 367*4882a593Smuzhiyun /* Total current for the three A7 cores */ 368*4882a593Smuzhiyun compatible = "arm,vexpress-amp"; 369*4882a593Smuzhiyun arm,vexpress-sysreg,func = <3 1>; 370*4882a593Smuzhiyun label = "A7 Icore"; 371*4882a593Smuzhiyun }; 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun temp-dcc { 374*4882a593Smuzhiyun /* DCC internal temperature */ 375*4882a593Smuzhiyun compatible = "arm,vexpress-temp"; 376*4882a593Smuzhiyun arm,vexpress-sysreg,func = <4 0>; 377*4882a593Smuzhiyun label = "DCC"; 378*4882a593Smuzhiyun }; 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun power-a15 { 381*4882a593Smuzhiyun /* Total power for the two A15 cores */ 382*4882a593Smuzhiyun compatible = "arm,vexpress-power"; 383*4882a593Smuzhiyun arm,vexpress-sysreg,func = <12 0>; 384*4882a593Smuzhiyun label = "A15 Pcore"; 385*4882a593Smuzhiyun }; 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun power-a7 { 388*4882a593Smuzhiyun /* Total power for the three A7 cores */ 389*4882a593Smuzhiyun compatible = "arm,vexpress-power"; 390*4882a593Smuzhiyun arm,vexpress-sysreg,func = <12 1>; 391*4882a593Smuzhiyun label = "A7 Pcore"; 392*4882a593Smuzhiyun }; 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun energy-a15 { 395*4882a593Smuzhiyun /* Total energy for the two A15 cores */ 396*4882a593Smuzhiyun compatible = "arm,vexpress-energy"; 397*4882a593Smuzhiyun arm,vexpress-sysreg,func = <13 0>, <13 1>; 398*4882a593Smuzhiyun label = "A15 Jcore"; 399*4882a593Smuzhiyun }; 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun energy-a7 { 402*4882a593Smuzhiyun /* Total energy for the three A7 cores */ 403*4882a593Smuzhiyun compatible = "arm,vexpress-energy"; 404*4882a593Smuzhiyun arm,vexpress-sysreg,func = <13 2>, <13 3>; 405*4882a593Smuzhiyun label = "A7 Jcore"; 406*4882a593Smuzhiyun }; 407*4882a593Smuzhiyun }; 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun etb@20010000 { 410*4882a593Smuzhiyun compatible = "arm,coresight-etb10", "arm,primecell"; 411*4882a593Smuzhiyun reg = <0 0x20010000 0 0x1000>; 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun clocks = <&oscclk6a>; 414*4882a593Smuzhiyun clock-names = "apb_pclk"; 415*4882a593Smuzhiyun in-ports { 416*4882a593Smuzhiyun port { 417*4882a593Smuzhiyun etb_in_port: endpoint { 418*4882a593Smuzhiyun remote-endpoint = <&replicator_out_port0>; 419*4882a593Smuzhiyun }; 420*4882a593Smuzhiyun }; 421*4882a593Smuzhiyun }; 422*4882a593Smuzhiyun }; 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun tpiu@20030000 { 425*4882a593Smuzhiyun compatible = "arm,coresight-tpiu", "arm,primecell"; 426*4882a593Smuzhiyun reg = <0 0x20030000 0 0x1000>; 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun clocks = <&oscclk6a>; 429*4882a593Smuzhiyun clock-names = "apb_pclk"; 430*4882a593Smuzhiyun in-ports { 431*4882a593Smuzhiyun port { 432*4882a593Smuzhiyun tpiu_in_port: endpoint { 433*4882a593Smuzhiyun remote-endpoint = <&replicator_out_port1>; 434*4882a593Smuzhiyun }; 435*4882a593Smuzhiyun }; 436*4882a593Smuzhiyun }; 437*4882a593Smuzhiyun }; 438*4882a593Smuzhiyun 439*4882a593Smuzhiyun replicator { 440*4882a593Smuzhiyun /* non-configurable replicators don't show up on the 441*4882a593Smuzhiyun * AMBA bus. As such no need to add "arm,primecell". 442*4882a593Smuzhiyun */ 443*4882a593Smuzhiyun compatible = "arm,coresight-static-replicator"; 444*4882a593Smuzhiyun 445*4882a593Smuzhiyun out-ports { 446*4882a593Smuzhiyun #address-cells = <1>; 447*4882a593Smuzhiyun #size-cells = <0>; 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun port@0 { 450*4882a593Smuzhiyun reg = <0>; 451*4882a593Smuzhiyun replicator_out_port0: endpoint { 452*4882a593Smuzhiyun remote-endpoint = <&etb_in_port>; 453*4882a593Smuzhiyun }; 454*4882a593Smuzhiyun }; 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun port@1 { 457*4882a593Smuzhiyun reg = <1>; 458*4882a593Smuzhiyun replicator_out_port1: endpoint { 459*4882a593Smuzhiyun remote-endpoint = <&tpiu_in_port>; 460*4882a593Smuzhiyun }; 461*4882a593Smuzhiyun }; 462*4882a593Smuzhiyun }; 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun in-ports { 465*4882a593Smuzhiyun port { 466*4882a593Smuzhiyun replicator_in_port0: endpoint { 467*4882a593Smuzhiyun remote-endpoint = <&funnel_out_port0>; 468*4882a593Smuzhiyun }; 469*4882a593Smuzhiyun }; 470*4882a593Smuzhiyun }; 471*4882a593Smuzhiyun }; 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun funnel@20040000 { 474*4882a593Smuzhiyun compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 475*4882a593Smuzhiyun reg = <0 0x20040000 0 0x1000>; 476*4882a593Smuzhiyun 477*4882a593Smuzhiyun clocks = <&oscclk6a>; 478*4882a593Smuzhiyun clock-names = "apb_pclk"; 479*4882a593Smuzhiyun out-ports { 480*4882a593Smuzhiyun port { 481*4882a593Smuzhiyun funnel_out_port0: endpoint { 482*4882a593Smuzhiyun remote-endpoint = 483*4882a593Smuzhiyun <&replicator_in_port0>; 484*4882a593Smuzhiyun }; 485*4882a593Smuzhiyun }; 486*4882a593Smuzhiyun }; 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun in-ports { 489*4882a593Smuzhiyun #address-cells = <1>; 490*4882a593Smuzhiyun #size-cells = <0>; 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun port@0 { 493*4882a593Smuzhiyun reg = <0>; 494*4882a593Smuzhiyun funnel_in_port0: endpoint { 495*4882a593Smuzhiyun remote-endpoint = <&ptm0_out_port>; 496*4882a593Smuzhiyun }; 497*4882a593Smuzhiyun }; 498*4882a593Smuzhiyun 499*4882a593Smuzhiyun port@1 { 500*4882a593Smuzhiyun reg = <1>; 501*4882a593Smuzhiyun funnel_in_port1: endpoint { 502*4882a593Smuzhiyun remote-endpoint = <&ptm1_out_port>; 503*4882a593Smuzhiyun }; 504*4882a593Smuzhiyun }; 505*4882a593Smuzhiyun 506*4882a593Smuzhiyun port@2 { 507*4882a593Smuzhiyun reg = <2>; 508*4882a593Smuzhiyun funnel_in_port2: endpoint { 509*4882a593Smuzhiyun remote-endpoint = <&etm0_out_port>; 510*4882a593Smuzhiyun }; 511*4882a593Smuzhiyun }; 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun /* Input port #3 is for ITM, not supported here */ 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun port@4 { 516*4882a593Smuzhiyun reg = <4>; 517*4882a593Smuzhiyun funnel_in_port4: endpoint { 518*4882a593Smuzhiyun remote-endpoint = <&etm1_out_port>; 519*4882a593Smuzhiyun }; 520*4882a593Smuzhiyun }; 521*4882a593Smuzhiyun 522*4882a593Smuzhiyun port@5 { 523*4882a593Smuzhiyun reg = <5>; 524*4882a593Smuzhiyun funnel_in_port5: endpoint { 525*4882a593Smuzhiyun remote-endpoint = <&etm2_out_port>; 526*4882a593Smuzhiyun }; 527*4882a593Smuzhiyun }; 528*4882a593Smuzhiyun }; 529*4882a593Smuzhiyun }; 530*4882a593Smuzhiyun 531*4882a593Smuzhiyun ptm@2201c000 { 532*4882a593Smuzhiyun compatible = "arm,coresight-etm3x", "arm,primecell"; 533*4882a593Smuzhiyun reg = <0 0x2201c000 0 0x1000>; 534*4882a593Smuzhiyun 535*4882a593Smuzhiyun cpu = <&cpu0>; 536*4882a593Smuzhiyun clocks = <&oscclk6a>; 537*4882a593Smuzhiyun clock-names = "apb_pclk"; 538*4882a593Smuzhiyun out-ports { 539*4882a593Smuzhiyun port { 540*4882a593Smuzhiyun ptm0_out_port: endpoint { 541*4882a593Smuzhiyun remote-endpoint = <&funnel_in_port0>; 542*4882a593Smuzhiyun }; 543*4882a593Smuzhiyun }; 544*4882a593Smuzhiyun }; 545*4882a593Smuzhiyun }; 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun ptm@2201d000 { 548*4882a593Smuzhiyun compatible = "arm,coresight-etm3x", "arm,primecell"; 549*4882a593Smuzhiyun reg = <0 0x2201d000 0 0x1000>; 550*4882a593Smuzhiyun 551*4882a593Smuzhiyun cpu = <&cpu1>; 552*4882a593Smuzhiyun clocks = <&oscclk6a>; 553*4882a593Smuzhiyun clock-names = "apb_pclk"; 554*4882a593Smuzhiyun out-ports { 555*4882a593Smuzhiyun port { 556*4882a593Smuzhiyun ptm1_out_port: endpoint { 557*4882a593Smuzhiyun remote-endpoint = <&funnel_in_port1>; 558*4882a593Smuzhiyun }; 559*4882a593Smuzhiyun }; 560*4882a593Smuzhiyun }; 561*4882a593Smuzhiyun }; 562*4882a593Smuzhiyun 563*4882a593Smuzhiyun etm@2203c000 { 564*4882a593Smuzhiyun compatible = "arm,coresight-etm3x", "arm,primecell"; 565*4882a593Smuzhiyun reg = <0 0x2203c000 0 0x1000>; 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun cpu = <&cpu2>; 568*4882a593Smuzhiyun clocks = <&oscclk6a>; 569*4882a593Smuzhiyun clock-names = "apb_pclk"; 570*4882a593Smuzhiyun out-ports { 571*4882a593Smuzhiyun port { 572*4882a593Smuzhiyun etm0_out_port: endpoint { 573*4882a593Smuzhiyun remote-endpoint = <&funnel_in_port2>; 574*4882a593Smuzhiyun }; 575*4882a593Smuzhiyun }; 576*4882a593Smuzhiyun }; 577*4882a593Smuzhiyun }; 578*4882a593Smuzhiyun 579*4882a593Smuzhiyun etm@2203d000 { 580*4882a593Smuzhiyun compatible = "arm,coresight-etm3x", "arm,primecell"; 581*4882a593Smuzhiyun reg = <0 0x2203d000 0 0x1000>; 582*4882a593Smuzhiyun 583*4882a593Smuzhiyun cpu = <&cpu3>; 584*4882a593Smuzhiyun clocks = <&oscclk6a>; 585*4882a593Smuzhiyun clock-names = "apb_pclk"; 586*4882a593Smuzhiyun out-ports { 587*4882a593Smuzhiyun port { 588*4882a593Smuzhiyun etm1_out_port: endpoint { 589*4882a593Smuzhiyun remote-endpoint = <&funnel_in_port4>; 590*4882a593Smuzhiyun }; 591*4882a593Smuzhiyun }; 592*4882a593Smuzhiyun }; 593*4882a593Smuzhiyun }; 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun etm@2203e000 { 596*4882a593Smuzhiyun compatible = "arm,coresight-etm3x", "arm,primecell"; 597*4882a593Smuzhiyun reg = <0 0x2203e000 0 0x1000>; 598*4882a593Smuzhiyun 599*4882a593Smuzhiyun cpu = <&cpu4>; 600*4882a593Smuzhiyun clocks = <&oscclk6a>; 601*4882a593Smuzhiyun clock-names = "apb_pclk"; 602*4882a593Smuzhiyun out-ports { 603*4882a593Smuzhiyun port { 604*4882a593Smuzhiyun etm2_out_port: endpoint { 605*4882a593Smuzhiyun remote-endpoint = <&funnel_in_port5>; 606*4882a593Smuzhiyun }; 607*4882a593Smuzhiyun }; 608*4882a593Smuzhiyun }; 609*4882a593Smuzhiyun }; 610*4882a593Smuzhiyun 611*4882a593Smuzhiyun smb: bus@8000000 { 612*4882a593Smuzhiyun compatible = "simple-bus"; 613*4882a593Smuzhiyun 614*4882a593Smuzhiyun #address-cells = <2>; 615*4882a593Smuzhiyun #size-cells = <1>; 616*4882a593Smuzhiyun ranges = <0 0 0 0x08000000 0x04000000>, 617*4882a593Smuzhiyun <1 0 0 0x14000000 0x04000000>, 618*4882a593Smuzhiyun <2 0 0 0x18000000 0x04000000>, 619*4882a593Smuzhiyun <3 0 0 0x1c000000 0x04000000>, 620*4882a593Smuzhiyun <4 0 0 0x0c000000 0x04000000>, 621*4882a593Smuzhiyun <5 0 0 0x10000000 0x04000000>; 622*4882a593Smuzhiyun 623*4882a593Smuzhiyun #interrupt-cells = <1>; 624*4882a593Smuzhiyun interrupt-map-mask = <0 0 63>; 625*4882a593Smuzhiyun interrupt-map = <0 0 0 &gic 0 0 4>, 626*4882a593Smuzhiyun <0 0 1 &gic 0 1 4>, 627*4882a593Smuzhiyun <0 0 2 &gic 0 2 4>, 628*4882a593Smuzhiyun <0 0 3 &gic 0 3 4>, 629*4882a593Smuzhiyun <0 0 4 &gic 0 4 4>, 630*4882a593Smuzhiyun <0 0 5 &gic 0 5 4>, 631*4882a593Smuzhiyun <0 0 6 &gic 0 6 4>, 632*4882a593Smuzhiyun <0 0 7 &gic 0 7 4>, 633*4882a593Smuzhiyun <0 0 8 &gic 0 8 4>, 634*4882a593Smuzhiyun <0 0 9 &gic 0 9 4>, 635*4882a593Smuzhiyun <0 0 10 &gic 0 10 4>, 636*4882a593Smuzhiyun <0 0 11 &gic 0 11 4>, 637*4882a593Smuzhiyun <0 0 12 &gic 0 12 4>, 638*4882a593Smuzhiyun <0 0 13 &gic 0 13 4>, 639*4882a593Smuzhiyun <0 0 14 &gic 0 14 4>, 640*4882a593Smuzhiyun <0 0 15 &gic 0 15 4>, 641*4882a593Smuzhiyun <0 0 16 &gic 0 16 4>, 642*4882a593Smuzhiyun <0 0 17 &gic 0 17 4>, 643*4882a593Smuzhiyun <0 0 18 &gic 0 18 4>, 644*4882a593Smuzhiyun <0 0 19 &gic 0 19 4>, 645*4882a593Smuzhiyun <0 0 20 &gic 0 20 4>, 646*4882a593Smuzhiyun <0 0 21 &gic 0 21 4>, 647*4882a593Smuzhiyun <0 0 22 &gic 0 22 4>, 648*4882a593Smuzhiyun <0 0 23 &gic 0 23 4>, 649*4882a593Smuzhiyun <0 0 24 &gic 0 24 4>, 650*4882a593Smuzhiyun <0 0 25 &gic 0 25 4>, 651*4882a593Smuzhiyun <0 0 26 &gic 0 26 4>, 652*4882a593Smuzhiyun <0 0 27 &gic 0 27 4>, 653*4882a593Smuzhiyun <0 0 28 &gic 0 28 4>, 654*4882a593Smuzhiyun <0 0 29 &gic 0 29 4>, 655*4882a593Smuzhiyun <0 0 30 &gic 0 30 4>, 656*4882a593Smuzhiyun <0 0 31 &gic 0 31 4>, 657*4882a593Smuzhiyun <0 0 32 &gic 0 32 4>, 658*4882a593Smuzhiyun <0 0 33 &gic 0 33 4>, 659*4882a593Smuzhiyun <0 0 34 &gic 0 34 4>, 660*4882a593Smuzhiyun <0 0 35 &gic 0 35 4>, 661*4882a593Smuzhiyun <0 0 36 &gic 0 36 4>, 662*4882a593Smuzhiyun <0 0 37 &gic 0 37 4>, 663*4882a593Smuzhiyun <0 0 38 &gic 0 38 4>, 664*4882a593Smuzhiyun <0 0 39 &gic 0 39 4>, 665*4882a593Smuzhiyun <0 0 40 &gic 0 40 4>, 666*4882a593Smuzhiyun <0 0 41 &gic 0 41 4>, 667*4882a593Smuzhiyun <0 0 42 &gic 0 42 4>; 668*4882a593Smuzhiyun }; 669*4882a593Smuzhiyun 670*4882a593Smuzhiyun site2: hsb@40000000 { 671*4882a593Smuzhiyun compatible = "simple-bus"; 672*4882a593Smuzhiyun #address-cells = <1>; 673*4882a593Smuzhiyun #size-cells = <1>; 674*4882a593Smuzhiyun ranges = <0 0 0x40000000 0x3fef0000>; 675*4882a593Smuzhiyun #interrupt-cells = <1>; 676*4882a593Smuzhiyun interrupt-map-mask = <0 3>; 677*4882a593Smuzhiyun interrupt-map = <0 0 &gic 0 36 4>, 678*4882a593Smuzhiyun <0 1 &gic 0 37 4>, 679*4882a593Smuzhiyun <0 2 &gic 0 38 4>, 680*4882a593Smuzhiyun <0 3 &gic 0 39 4>; 681*4882a593Smuzhiyun }; 682*4882a593Smuzhiyun}; 683*4882a593Smuzhiyun 684*4882a593Smuzhiyun&nor_flash { 685*4882a593Smuzhiyun /* 686*4882a593Smuzhiyun * Unfortunately, accessing the flash disturbs the CPU idle states 687*4882a593Smuzhiyun * (suspend) and CPU hotplug of this platform. For this reason, flash 688*4882a593Smuzhiyun * hardware access is disabled by default on this platform alone. 689*4882a593Smuzhiyun */ 690*4882a593Smuzhiyun status = "disabled"; 691*4882a593Smuzhiyun}; 692