1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * ARM Ltd. Versatile Express 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * CoreTile Express A5x2 6*4882a593Smuzhiyun * Cortex-A5 MPCore (V2P-CA5s) 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * HBI-0225B 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun/dts-v1/; 12*4882a593Smuzhiyun#include "vexpress-v2m-rs1.dtsi" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/ { 15*4882a593Smuzhiyun model = "V2P-CA5s"; 16*4882a593Smuzhiyun arm,hbi = <0x225>; 17*4882a593Smuzhiyun arm,vexpress,site = <0xf>; 18*4882a593Smuzhiyun compatible = "arm,vexpress,v2p-ca5s", "arm,vexpress"; 19*4882a593Smuzhiyun interrupt-parent = <&gic>; 20*4882a593Smuzhiyun #address-cells = <1>; 21*4882a593Smuzhiyun #size-cells = <1>; 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 cpu@0 { 39*4882a593Smuzhiyun device_type = "cpu"; 40*4882a593Smuzhiyun compatible = "arm,cortex-a5"; 41*4882a593Smuzhiyun reg = <0>; 42*4882a593Smuzhiyun next-level-cache = <&L2>; 43*4882a593Smuzhiyun }; 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun cpu@1 { 46*4882a593Smuzhiyun device_type = "cpu"; 47*4882a593Smuzhiyun compatible = "arm,cortex-a5"; 48*4882a593Smuzhiyun reg = <1>; 49*4882a593Smuzhiyun next-level-cache = <&L2>; 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun }; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun memory@80000000 { 54*4882a593Smuzhiyun device_type = "memory"; 55*4882a593Smuzhiyun reg = <0x80000000 0x40000000>; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun reserved-memory { 59*4882a593Smuzhiyun #address-cells = <1>; 60*4882a593Smuzhiyun #size-cells = <1>; 61*4882a593Smuzhiyun ranges; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /* Chipselect 2 is physically at 0x18000000 */ 64*4882a593Smuzhiyun vram: vram@18000000 { 65*4882a593Smuzhiyun /* 8 MB of designated video RAM */ 66*4882a593Smuzhiyun compatible = "shared-dma-pool"; 67*4882a593Smuzhiyun reg = <0x18000000 0x00800000>; 68*4882a593Smuzhiyun no-map; 69*4882a593Smuzhiyun }; 70*4882a593Smuzhiyun }; 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun hdlcd@2a110000 { 73*4882a593Smuzhiyun compatible = "arm,hdlcd"; 74*4882a593Smuzhiyun reg = <0x2a110000 0x1000>; 75*4882a593Smuzhiyun interrupts = <0 85 4>; 76*4882a593Smuzhiyun clocks = <&hdlcd_clk>; 77*4882a593Smuzhiyun clock-names = "pxlclk"; 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun memory-controller@2a150000 { 81*4882a593Smuzhiyun compatible = "arm,pl341", "arm,primecell"; 82*4882a593Smuzhiyun reg = <0x2a150000 0x1000>; 83*4882a593Smuzhiyun clocks = <&axi_clk>; 84*4882a593Smuzhiyun clock-names = "apb_pclk"; 85*4882a593Smuzhiyun }; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun memory-controller@2a190000 { 88*4882a593Smuzhiyun compatible = "arm,pl354", "arm,primecell"; 89*4882a593Smuzhiyun reg = <0x2a190000 0x1000>; 90*4882a593Smuzhiyun interrupts = <0 86 4>, 91*4882a593Smuzhiyun <0 87 4>; 92*4882a593Smuzhiyun clocks = <&axi_clk>; 93*4882a593Smuzhiyun clock-names = "apb_pclk"; 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun scu@2c000000 { 97*4882a593Smuzhiyun compatible = "arm,cortex-a5-scu"; 98*4882a593Smuzhiyun reg = <0x2c000000 0x58>; 99*4882a593Smuzhiyun }; 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun timer@2c000600 { 102*4882a593Smuzhiyun compatible = "arm,cortex-a5-twd-timer"; 103*4882a593Smuzhiyun reg = <0x2c000600 0x20>; 104*4882a593Smuzhiyun interrupts = <1 13 0x304>; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun timer@2c000200 { 108*4882a593Smuzhiyun compatible = "arm,cortex-a5-global-timer", 109*4882a593Smuzhiyun "arm,cortex-a9-global-timer"; 110*4882a593Smuzhiyun reg = <0x2c000200 0x20>; 111*4882a593Smuzhiyun interrupts = <1 11 0x304>; 112*4882a593Smuzhiyun clocks = <&cpu_clk>; 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun watchdog@2c000620 { 116*4882a593Smuzhiyun compatible = "arm,cortex-a5-twd-wdt"; 117*4882a593Smuzhiyun reg = <0x2c000620 0x20>; 118*4882a593Smuzhiyun interrupts = <1 14 0x304>; 119*4882a593Smuzhiyun }; 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun gic: interrupt-controller@2c001000 { 122*4882a593Smuzhiyun compatible = "arm,cortex-a5-gic", "arm,cortex-a9-gic"; 123*4882a593Smuzhiyun #interrupt-cells = <3>; 124*4882a593Smuzhiyun #address-cells = <0>; 125*4882a593Smuzhiyun interrupt-controller; 126*4882a593Smuzhiyun reg = <0x2c001000 0x1000>, 127*4882a593Smuzhiyun <0x2c000100 0x100>; 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun L2: cache-controller@2c0f0000 { 131*4882a593Smuzhiyun compatible = "arm,pl310-cache"; 132*4882a593Smuzhiyun reg = <0x2c0f0000 0x1000>; 133*4882a593Smuzhiyun interrupts = <0 84 4>; 134*4882a593Smuzhiyun cache-level = <2>; 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun pmu { 138*4882a593Smuzhiyun compatible = "arm,cortex-a5-pmu"; 139*4882a593Smuzhiyun interrupts = <0 68 4>, 140*4882a593Smuzhiyun <0 69 4>; 141*4882a593Smuzhiyun }; 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun dcc { 144*4882a593Smuzhiyun compatible = "arm,vexpress,config-bus"; 145*4882a593Smuzhiyun arm,vexpress,config-bridge = <&v2m_sysreg>; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun cpu_clk: oscclk0 { 148*4882a593Smuzhiyun /* CPU and internal AXI reference clock */ 149*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 150*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 0>; 151*4882a593Smuzhiyun freq-range = <50000000 100000000>; 152*4882a593Smuzhiyun #clock-cells = <0>; 153*4882a593Smuzhiyun clock-output-names = "oscclk0"; 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun axi_clk: oscclk1 { 157*4882a593Smuzhiyun /* Multiplexed AXI master clock */ 158*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 159*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 1>; 160*4882a593Smuzhiyun freq-range = <5000000 50000000>; 161*4882a593Smuzhiyun #clock-cells = <0>; 162*4882a593Smuzhiyun clock-output-names = "oscclk1"; 163*4882a593Smuzhiyun }; 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun oscclk2 { 166*4882a593Smuzhiyun /* DDR2 */ 167*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 168*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 2>; 169*4882a593Smuzhiyun freq-range = <80000000 120000000>; 170*4882a593Smuzhiyun #clock-cells = <0>; 171*4882a593Smuzhiyun clock-output-names = "oscclk2"; 172*4882a593Smuzhiyun }; 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun hdlcd_clk: oscclk3 { 175*4882a593Smuzhiyun /* HDLCD */ 176*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 177*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 3>; 178*4882a593Smuzhiyun freq-range = <23750000 165000000>; 179*4882a593Smuzhiyun #clock-cells = <0>; 180*4882a593Smuzhiyun clock-output-names = "oscclk3"; 181*4882a593Smuzhiyun }; 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun oscclk4 { 184*4882a593Smuzhiyun /* Test chip gate configuration */ 185*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 186*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 4>; 187*4882a593Smuzhiyun freq-range = <80000000 80000000>; 188*4882a593Smuzhiyun #clock-cells = <0>; 189*4882a593Smuzhiyun clock-output-names = "oscclk4"; 190*4882a593Smuzhiyun }; 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun smbclk: oscclk5 { 193*4882a593Smuzhiyun /* SMB clock */ 194*4882a593Smuzhiyun compatible = "arm,vexpress-osc"; 195*4882a593Smuzhiyun arm,vexpress-sysreg,func = <1 5>; 196*4882a593Smuzhiyun freq-range = <25000000 60000000>; 197*4882a593Smuzhiyun #clock-cells = <0>; 198*4882a593Smuzhiyun clock-output-names = "oscclk5"; 199*4882a593Smuzhiyun }; 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun temp-dcc { 202*4882a593Smuzhiyun /* DCC internal operating temperature */ 203*4882a593Smuzhiyun compatible = "arm,vexpress-temp"; 204*4882a593Smuzhiyun arm,vexpress-sysreg,func = <4 0>; 205*4882a593Smuzhiyun label = "DCC"; 206*4882a593Smuzhiyun }; 207*4882a593Smuzhiyun }; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun smb: bus@8000000 { 210*4882a593Smuzhiyun compatible = "simple-bus"; 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun #address-cells = <2>; 213*4882a593Smuzhiyun #size-cells = <1>; 214*4882a593Smuzhiyun ranges = <0 0 0x08000000 0x04000000>, 215*4882a593Smuzhiyun <1 0 0x14000000 0x04000000>, 216*4882a593Smuzhiyun <2 0 0x18000000 0x04000000>, 217*4882a593Smuzhiyun <3 0 0x1c000000 0x04000000>, 218*4882a593Smuzhiyun <4 0 0x0c000000 0x04000000>, 219*4882a593Smuzhiyun <5 0 0x10000000 0x04000000>; 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun #interrupt-cells = <1>; 222*4882a593Smuzhiyun interrupt-map-mask = <0 0 63>; 223*4882a593Smuzhiyun interrupt-map = <0 0 0 &gic 0 0 4>, 224*4882a593Smuzhiyun <0 0 1 &gic 0 1 4>, 225*4882a593Smuzhiyun <0 0 2 &gic 0 2 4>, 226*4882a593Smuzhiyun <0 0 3 &gic 0 3 4>, 227*4882a593Smuzhiyun <0 0 4 &gic 0 4 4>, 228*4882a593Smuzhiyun <0 0 5 &gic 0 5 4>, 229*4882a593Smuzhiyun <0 0 6 &gic 0 6 4>, 230*4882a593Smuzhiyun <0 0 7 &gic 0 7 4>, 231*4882a593Smuzhiyun <0 0 8 &gic 0 8 4>, 232*4882a593Smuzhiyun <0 0 9 &gic 0 9 4>, 233*4882a593Smuzhiyun <0 0 10 &gic 0 10 4>, 234*4882a593Smuzhiyun <0 0 11 &gic 0 11 4>, 235*4882a593Smuzhiyun <0 0 12 &gic 0 12 4>, 236*4882a593Smuzhiyun <0 0 13 &gic 0 13 4>, 237*4882a593Smuzhiyun <0 0 14 &gic 0 14 4>, 238*4882a593Smuzhiyun <0 0 15 &gic 0 15 4>, 239*4882a593Smuzhiyun <0 0 16 &gic 0 16 4>, 240*4882a593Smuzhiyun <0 0 17 &gic 0 17 4>, 241*4882a593Smuzhiyun <0 0 18 &gic 0 18 4>, 242*4882a593Smuzhiyun <0 0 19 &gic 0 19 4>, 243*4882a593Smuzhiyun <0 0 20 &gic 0 20 4>, 244*4882a593Smuzhiyun <0 0 21 &gic 0 21 4>, 245*4882a593Smuzhiyun <0 0 22 &gic 0 22 4>, 246*4882a593Smuzhiyun <0 0 23 &gic 0 23 4>, 247*4882a593Smuzhiyun <0 0 24 &gic 0 24 4>, 248*4882a593Smuzhiyun <0 0 25 &gic 0 25 4>, 249*4882a593Smuzhiyun <0 0 26 &gic 0 26 4>, 250*4882a593Smuzhiyun <0 0 27 &gic 0 27 4>, 251*4882a593Smuzhiyun <0 0 28 &gic 0 28 4>, 252*4882a593Smuzhiyun <0 0 29 &gic 0 29 4>, 253*4882a593Smuzhiyun <0 0 30 &gic 0 30 4>, 254*4882a593Smuzhiyun <0 0 31 &gic 0 31 4>, 255*4882a593Smuzhiyun <0 0 32 &gic 0 32 4>, 256*4882a593Smuzhiyun <0 0 33 &gic 0 33 4>, 257*4882a593Smuzhiyun <0 0 34 &gic 0 34 4>, 258*4882a593Smuzhiyun <0 0 35 &gic 0 35 4>, 259*4882a593Smuzhiyun <0 0 36 &gic 0 36 4>, 260*4882a593Smuzhiyun <0 0 37 &gic 0 37 4>, 261*4882a593Smuzhiyun <0 0 38 &gic 0 38 4>, 262*4882a593Smuzhiyun <0 0 39 &gic 0 39 4>, 263*4882a593Smuzhiyun <0 0 40 &gic 0 40 4>, 264*4882a593Smuzhiyun <0 0 41 &gic 0 41 4>, 265*4882a593Smuzhiyun <0 0 42 &gic 0 42 4>; 266*4882a593Smuzhiyun }; 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun site2: hsb@40000000 { 269*4882a593Smuzhiyun compatible = "simple-bus"; 270*4882a593Smuzhiyun #address-cells = <1>; 271*4882a593Smuzhiyun #size-cells = <1>; 272*4882a593Smuzhiyun ranges = <0 0x40000000 0x40000000>; 273*4882a593Smuzhiyun #interrupt-cells = <1>; 274*4882a593Smuzhiyun interrupt-map-mask = <0 3>; 275*4882a593Smuzhiyun interrupt-map = <0 0 &gic 0 36 4>, 276*4882a593Smuzhiyun <0 1 &gic 0 37 4>, 277*4882a593Smuzhiyun <0 2 &gic 0 38 4>, 278*4882a593Smuzhiyun <0 3 &gic 0 39 4>; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun}; 281