1*4f6ad66aSAchin Gupta/* 2*4f6ad66aSAchin Gupta * Copyright (c) 2013, ARM Limited. All rights reserved. 3*4f6ad66aSAchin Gupta * 4*4f6ad66aSAchin Gupta * Redistribution and use in source and binary forms, with or without 5*4f6ad66aSAchin Gupta * modification, are permitted provided that the following conditions are met: 6*4f6ad66aSAchin Gupta * 7*4f6ad66aSAchin Gupta * Redistributions of source code must retain the above copyright notice, this 8*4f6ad66aSAchin Gupta * list of conditions and the following disclaimer. 9*4f6ad66aSAchin Gupta * 10*4f6ad66aSAchin Gupta * Redistributions in binary form must reproduce the above copyright notice, 11*4f6ad66aSAchin Gupta * this list of conditions and the following disclaimer in the documentation 12*4f6ad66aSAchin Gupta * and/or other materials provided with the distribution. 13*4f6ad66aSAchin Gupta * 14*4f6ad66aSAchin Gupta * Neither the name of ARM nor the names of its contributors may be used 15*4f6ad66aSAchin Gupta * to endorse or promote products derived from this software without specific 16*4f6ad66aSAchin Gupta * prior written permission. 17*4f6ad66aSAchin Gupta * 18*4f6ad66aSAchin Gupta * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19*4f6ad66aSAchin Gupta * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20*4f6ad66aSAchin Gupta * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21*4f6ad66aSAchin Gupta * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 22*4f6ad66aSAchin Gupta * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23*4f6ad66aSAchin Gupta * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24*4f6ad66aSAchin Gupta * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25*4f6ad66aSAchin Gupta * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26*4f6ad66aSAchin Gupta * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27*4f6ad66aSAchin Gupta * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28*4f6ad66aSAchin Gupta * POSSIBILITY OF SUCH DAMAGE. 29*4f6ad66aSAchin Gupta */ 30*4f6ad66aSAchin Gupta 31*4f6ad66aSAchin Gupta motherboard { 32*4f6ad66aSAchin Gupta arm,v2m-memory-map = "rs1"; 33*4f6ad66aSAchin Gupta compatible = "arm,vexpress,v2m-p1", "simple-bus"; 34*4f6ad66aSAchin Gupta #address-cells = <2>; /* SMB chipselect number and offset */ 35*4f6ad66aSAchin Gupta #size-cells = <1>; 36*4f6ad66aSAchin Gupta #interrupt-cells = <1>; 37*4f6ad66aSAchin Gupta ranges; 38*4f6ad66aSAchin Gupta 39*4f6ad66aSAchin Gupta flash@0,00000000 { 40*4f6ad66aSAchin Gupta compatible = "arm,vexpress-flash", "cfi-flash"; 41*4f6ad66aSAchin Gupta reg = <0 0x00000000 0x04000000>, 42*4f6ad66aSAchin Gupta <4 0x00000000 0x04000000>; 43*4f6ad66aSAchin Gupta bank-width = <4>; 44*4f6ad66aSAchin Gupta }; 45*4f6ad66aSAchin Gupta 46*4f6ad66aSAchin Gupta vram@2,00000000 { 47*4f6ad66aSAchin Gupta compatible = "arm,vexpress-vram"; 48*4f6ad66aSAchin Gupta reg = <2 0x00000000 0x00800000>; 49*4f6ad66aSAchin Gupta }; 50*4f6ad66aSAchin Gupta 51*4f6ad66aSAchin Gupta ethernet@2,02000000 { 52*4f6ad66aSAchin Gupta compatible = "smsc,lan91c111"; 53*4f6ad66aSAchin Gupta reg = <2 0x02000000 0x10000>; 54*4f6ad66aSAchin Gupta interrupts = <15>; 55*4f6ad66aSAchin Gupta }; 56*4f6ad66aSAchin Gupta 57*4f6ad66aSAchin Gupta v2m_clk24mhz: clk24mhz { 58*4f6ad66aSAchin Gupta compatible = "fixed-clock"; 59*4f6ad66aSAchin Gupta #clock-cells = <0>; 60*4f6ad66aSAchin Gupta clock-frequency = <24000000>; 61*4f6ad66aSAchin Gupta clock-output-names = "v2m:clk24mhz"; 62*4f6ad66aSAchin Gupta }; 63*4f6ad66aSAchin Gupta 64*4f6ad66aSAchin Gupta v2m_refclk1mhz: refclk1mhz { 65*4f6ad66aSAchin Gupta compatible = "fixed-clock"; 66*4f6ad66aSAchin Gupta #clock-cells = <0>; 67*4f6ad66aSAchin Gupta clock-frequency = <1000000>; 68*4f6ad66aSAchin Gupta clock-output-names = "v2m:refclk1mhz"; 69*4f6ad66aSAchin Gupta }; 70*4f6ad66aSAchin Gupta 71*4f6ad66aSAchin Gupta v2m_refclk32khz: refclk32khz { 72*4f6ad66aSAchin Gupta compatible = "fixed-clock"; 73*4f6ad66aSAchin Gupta #clock-cells = <0>; 74*4f6ad66aSAchin Gupta clock-frequency = <32768>; 75*4f6ad66aSAchin Gupta clock-output-names = "v2m:refclk32khz"; 76*4f6ad66aSAchin Gupta }; 77*4f6ad66aSAchin Gupta 78*4f6ad66aSAchin Gupta iofpga@3,00000000 { 79*4f6ad66aSAchin Gupta compatible = "arm,amba-bus", "simple-bus"; 80*4f6ad66aSAchin Gupta #address-cells = <1>; 81*4f6ad66aSAchin Gupta #size-cells = <1>; 82*4f6ad66aSAchin Gupta ranges = <0 3 0 0x200000>; 83*4f6ad66aSAchin Gupta 84*4f6ad66aSAchin Gupta v2m_sysreg: sysreg@010000 { 85*4f6ad66aSAchin Gupta compatible = "arm,vexpress-sysreg"; 86*4f6ad66aSAchin Gupta reg = <0x010000 0x1000>; 87*4f6ad66aSAchin Gupta gpio-controller; 88*4f6ad66aSAchin Gupta #gpio-cells = <2>; 89*4f6ad66aSAchin Gupta }; 90*4f6ad66aSAchin Gupta 91*4f6ad66aSAchin Gupta v2m_sysctl: sysctl@020000 { 92*4f6ad66aSAchin Gupta compatible = "arm,sp810", "arm,primecell"; 93*4f6ad66aSAchin Gupta reg = <0x020000 0x1000>; 94*4f6ad66aSAchin Gupta clocks = <&v2m_refclk32khz>, <&v2m_refclk1mhz>, <&v2m_clk24mhz>; 95*4f6ad66aSAchin Gupta clock-names = "refclk", "timclk", "apb_pclk"; 96*4f6ad66aSAchin Gupta #clock-cells = <1>; 97*4f6ad66aSAchin Gupta clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3"; 98*4f6ad66aSAchin Gupta }; 99*4f6ad66aSAchin Gupta 100*4f6ad66aSAchin Gupta aaci@040000 { 101*4f6ad66aSAchin Gupta compatible = "arm,pl041", "arm,primecell"; 102*4f6ad66aSAchin Gupta reg = <0x040000 0x1000>; 103*4f6ad66aSAchin Gupta interrupts = <11>; 104*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>; 105*4f6ad66aSAchin Gupta clock-names = "apb_pclk"; 106*4f6ad66aSAchin Gupta }; 107*4f6ad66aSAchin Gupta 108*4f6ad66aSAchin Gupta mmci@050000 { 109*4f6ad66aSAchin Gupta compatible = "arm,pl180", "arm,primecell"; 110*4f6ad66aSAchin Gupta reg = <0x050000 0x1000>; 111*4f6ad66aSAchin Gupta interrupts = <9 10>; 112*4f6ad66aSAchin Gupta cd-gpios = <&v2m_sysreg 0 0>; 113*4f6ad66aSAchin Gupta wp-gpios = <&v2m_sysreg 1 0>; 114*4f6ad66aSAchin Gupta max-frequency = <12000000>; 115*4f6ad66aSAchin Gupta vmmc-supply = <&v2m_fixed_3v3>; 116*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>; 117*4f6ad66aSAchin Gupta clock-names = "mclk", "apb_pclk"; 118*4f6ad66aSAchin Gupta }; 119*4f6ad66aSAchin Gupta 120*4f6ad66aSAchin Gupta kmi@060000 { 121*4f6ad66aSAchin Gupta compatible = "arm,pl050", "arm,primecell"; 122*4f6ad66aSAchin Gupta reg = <0x060000 0x1000>; 123*4f6ad66aSAchin Gupta interrupts = <12>; 124*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>; 125*4f6ad66aSAchin Gupta clock-names = "KMIREFCLK", "apb_pclk"; 126*4f6ad66aSAchin Gupta }; 127*4f6ad66aSAchin Gupta 128*4f6ad66aSAchin Gupta kmi@070000 { 129*4f6ad66aSAchin Gupta compatible = "arm,pl050", "arm,primecell"; 130*4f6ad66aSAchin Gupta reg = <0x070000 0x1000>; 131*4f6ad66aSAchin Gupta interrupts = <13>; 132*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>; 133*4f6ad66aSAchin Gupta clock-names = "KMIREFCLK", "apb_pclk"; 134*4f6ad66aSAchin Gupta }; 135*4f6ad66aSAchin Gupta 136*4f6ad66aSAchin Gupta v2m_serial0: uart@090000 { 137*4f6ad66aSAchin Gupta compatible = "arm,pl011", "arm,primecell"; 138*4f6ad66aSAchin Gupta reg = <0x090000 0x1000>; 139*4f6ad66aSAchin Gupta interrupts = <5>; 140*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>; 141*4f6ad66aSAchin Gupta clock-names = "uartclk", "apb_pclk"; 142*4f6ad66aSAchin Gupta }; 143*4f6ad66aSAchin Gupta 144*4f6ad66aSAchin Gupta v2m_serial1: uart@0a0000 { 145*4f6ad66aSAchin Gupta compatible = "arm,pl011", "arm,primecell"; 146*4f6ad66aSAchin Gupta reg = <0x0a0000 0x1000>; 147*4f6ad66aSAchin Gupta interrupts = <6>; 148*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>; 149*4f6ad66aSAchin Gupta clock-names = "uartclk", "apb_pclk"; 150*4f6ad66aSAchin Gupta }; 151*4f6ad66aSAchin Gupta 152*4f6ad66aSAchin Gupta v2m_serial2: uart@0b0000 { 153*4f6ad66aSAchin Gupta compatible = "arm,pl011", "arm,primecell"; 154*4f6ad66aSAchin Gupta reg = <0x0b0000 0x1000>; 155*4f6ad66aSAchin Gupta interrupts = <7>; 156*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>; 157*4f6ad66aSAchin Gupta clock-names = "uartclk", "apb_pclk"; 158*4f6ad66aSAchin Gupta }; 159*4f6ad66aSAchin Gupta 160*4f6ad66aSAchin Gupta v2m_serial3: uart@0c0000 { 161*4f6ad66aSAchin Gupta compatible = "arm,pl011", "arm,primecell"; 162*4f6ad66aSAchin Gupta reg = <0x0c0000 0x1000>; 163*4f6ad66aSAchin Gupta interrupts = <8>; 164*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>; 165*4f6ad66aSAchin Gupta clock-names = "uartclk", "apb_pclk"; 166*4f6ad66aSAchin Gupta }; 167*4f6ad66aSAchin Gupta 168*4f6ad66aSAchin Gupta wdt@0f0000 { 169*4f6ad66aSAchin Gupta compatible = "arm,sp805", "arm,primecell"; 170*4f6ad66aSAchin Gupta reg = <0x0f0000 0x1000>; 171*4f6ad66aSAchin Gupta interrupts = <0>; 172*4f6ad66aSAchin Gupta clocks = <&v2m_refclk32khz>, <&v2m_clk24mhz>; 173*4f6ad66aSAchin Gupta clock-names = "wdogclk", "apb_pclk"; 174*4f6ad66aSAchin Gupta }; 175*4f6ad66aSAchin Gupta 176*4f6ad66aSAchin Gupta v2m_timer01: timer@110000 { 177*4f6ad66aSAchin Gupta compatible = "arm,sp804", "arm,primecell"; 178*4f6ad66aSAchin Gupta reg = <0x110000 0x1000>; 179*4f6ad66aSAchin Gupta interrupts = <2>; 180*4f6ad66aSAchin Gupta clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_clk24mhz>; 181*4f6ad66aSAchin Gupta clock-names = "timclken1", "timclken2", "apb_pclk"; 182*4f6ad66aSAchin Gupta }; 183*4f6ad66aSAchin Gupta 184*4f6ad66aSAchin Gupta v2m_timer23: timer@120000 { 185*4f6ad66aSAchin Gupta compatible = "arm,sp804", "arm,primecell"; 186*4f6ad66aSAchin Gupta reg = <0x120000 0x1000>; 187*4f6ad66aSAchin Gupta interrupts = <3>; 188*4f6ad66aSAchin Gupta clocks = <&v2m_sysctl 2>, <&v2m_sysctl 3>, <&v2m_clk24mhz>; 189*4f6ad66aSAchin Gupta clock-names = "timclken1", "timclken2", "apb_pclk"; 190*4f6ad66aSAchin Gupta }; 191*4f6ad66aSAchin Gupta 192*4f6ad66aSAchin Gupta rtc@170000 { 193*4f6ad66aSAchin Gupta compatible = "arm,pl031", "arm,primecell"; 194*4f6ad66aSAchin Gupta reg = <0x170000 0x1000>; 195*4f6ad66aSAchin Gupta interrupts = <4>; 196*4f6ad66aSAchin Gupta clocks = <&v2m_clk24mhz>; 197*4f6ad66aSAchin Gupta clock-names = "apb_pclk"; 198*4f6ad66aSAchin Gupta }; 199*4f6ad66aSAchin Gupta 200*4f6ad66aSAchin Gupta clcd@1f0000 { 201*4f6ad66aSAchin Gupta compatible = "arm,pl111", "arm,primecell"; 202*4f6ad66aSAchin Gupta reg = <0x1f0000 0x1000>; 203*4f6ad66aSAchin Gupta interrupts = <14>; 204*4f6ad66aSAchin Gupta clocks = <&v2m_oscclk1>, <&v2m_clk24mhz>; 205*4f6ad66aSAchin Gupta clock-names = "clcdclk", "apb_pclk"; 206*4f6ad66aSAchin Gupta mode = "XVGA"; 207*4f6ad66aSAchin Gupta use_dma = <0>; 208*4f6ad66aSAchin Gupta framebuffer = <0x18000000 0x00180000>; 209*4f6ad66aSAchin Gupta }; 210*4f6ad66aSAchin Gupta 211*4f6ad66aSAchin Gupta virtio_block@0130000 { 212*4f6ad66aSAchin Gupta compatible = "virtio,mmio"; 213*4f6ad66aSAchin Gupta reg = <0x130000 0x1000>; 214*4f6ad66aSAchin Gupta interrupts = <0x2a>; 215*4f6ad66aSAchin Gupta }; 216*4f6ad66aSAchin Gupta }; 217*4f6ad66aSAchin Gupta 218*4f6ad66aSAchin Gupta v2m_fixed_3v3: fixedregulator@0 { 219*4f6ad66aSAchin Gupta compatible = "regulator-fixed"; 220*4f6ad66aSAchin Gupta regulator-name = "3V3"; 221*4f6ad66aSAchin Gupta regulator-min-microvolt = <3300000>; 222*4f6ad66aSAchin Gupta regulator-max-microvolt = <3300000>; 223*4f6ad66aSAchin Gupta regulator-always-on; 224*4f6ad66aSAchin Gupta }; 225*4f6ad66aSAchin Gupta 226*4f6ad66aSAchin Gupta mcc { 227*4f6ad66aSAchin Gupta compatible = "arm,vexpress,config-bus", "simple-bus"; 228*4f6ad66aSAchin Gupta arm,vexpress,config-bridge = <&v2m_sysreg>; 229*4f6ad66aSAchin Gupta 230*4f6ad66aSAchin Gupta v2m_oscclk1: osc@1 { 231*4f6ad66aSAchin Gupta /* CLCD clock */ 232*4f6ad66aSAchin Gupta compatible = "arm,vexpress-osc"; 233*4f6ad66aSAchin Gupta arm,vexpress-sysreg,func = <1 1>; 234*4f6ad66aSAchin Gupta freq-range = <23750000 63500000>; 235*4f6ad66aSAchin Gupta #clock-cells = <0>; 236*4f6ad66aSAchin Gupta clock-output-names = "v2m:oscclk1"; 237*4f6ad66aSAchin Gupta }; 238*4f6ad66aSAchin Gupta 239*4f6ad66aSAchin Gupta reset@0 { 240*4f6ad66aSAchin Gupta compatible = "arm,vexpress-reset"; 241*4f6ad66aSAchin Gupta arm,vexpress-sysreg,func = <5 0>; 242*4f6ad66aSAchin Gupta }; 243*4f6ad66aSAchin Gupta 244*4f6ad66aSAchin Gupta muxfpga@0 { 245*4f6ad66aSAchin Gupta compatible = "arm,vexpress-muxfpga"; 246*4f6ad66aSAchin Gupta arm,vexpress-sysreg,func = <7 0>; 247*4f6ad66aSAchin Gupta }; 248*4f6ad66aSAchin Gupta 249*4f6ad66aSAchin Gupta shutdown@0 { 250*4f6ad66aSAchin Gupta compatible = "arm,vexpress-shutdown"; 251*4f6ad66aSAchin Gupta arm,vexpress-sysreg,func = <8 0>; 252*4f6ad66aSAchin Gupta }; 253*4f6ad66aSAchin Gupta 254*4f6ad66aSAchin Gupta reboot@0 { 255*4f6ad66aSAchin Gupta compatible = "arm,vexpress-reboot"; 256*4f6ad66aSAchin Gupta arm,vexpress-sysreg,func = <9 0>; 257*4f6ad66aSAchin Gupta }; 258*4f6ad66aSAchin Gupta 259*4f6ad66aSAchin Gupta dvimode@0 { 260*4f6ad66aSAchin Gupta compatible = "arm,vexpress-dvimode"; 261*4f6ad66aSAchin Gupta arm,vexpress-sysreg,func = <11 0>; 262*4f6ad66aSAchin Gupta }; 263*4f6ad66aSAchin Gupta }; 264*4f6ad66aSAchin Gupta }; 265