1*4882a593Smuzhiyun#include <dt-bindings/pinctrl/bcm2835.h> 2*4882a593Smuzhiyun#include <dt-bindings/clock/bcm2835.h> 3*4882a593Smuzhiyun#include <dt-bindings/clock/bcm2835-aux.h> 4*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 5*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h> 6*4882a593Smuzhiyun#include <dt-bindings/soc/bcm2835-pm.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun/* firmware-provided startup stubs live here, where the secondary CPUs are 9*4882a593Smuzhiyun * spinning. 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun/memreserve/ 0x00000000 0x00001000; 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun/* This include file covers the common peripherals and configuration between 14*4882a593Smuzhiyun * bcm2835 and bcm2836 implementations, leaving the CPU configuration to 15*4882a593Smuzhiyun * bcm2835.dtsi and bcm2836.dtsi. 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun/ { 19*4882a593Smuzhiyun compatible = "brcm,bcm2835"; 20*4882a593Smuzhiyun model = "BCM2835"; 21*4882a593Smuzhiyun #address-cells = <1>; 22*4882a593Smuzhiyun #size-cells = <1>; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun aliases { 25*4882a593Smuzhiyun serial0 = &uart0; 26*4882a593Smuzhiyun serial1 = &uart1; 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun chosen { 30*4882a593Smuzhiyun stdout-path = "serial0:115200n8"; 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun rmem: reserved-memory { 34*4882a593Smuzhiyun #address-cells = <1>; 35*4882a593Smuzhiyun #size-cells = <1>; 36*4882a593Smuzhiyun ranges; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun cma: linux,cma { 39*4882a593Smuzhiyun compatible = "shared-dma-pool"; 40*4882a593Smuzhiyun size = <0x4000000>; /* 64MB */ 41*4882a593Smuzhiyun reusable; 42*4882a593Smuzhiyun linux,cma-default; 43*4882a593Smuzhiyun }; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun thermal-zones { 47*4882a593Smuzhiyun cpu_thermal: cpu-thermal { 48*4882a593Smuzhiyun polling-delay-passive = <0>; 49*4882a593Smuzhiyun polling-delay = <1000>; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun trips { 52*4882a593Smuzhiyun cpu-crit { 53*4882a593Smuzhiyun temperature = <90000>; 54*4882a593Smuzhiyun hysteresis = <0>; 55*4882a593Smuzhiyun type = "critical"; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun }; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun cooling-maps { 60*4882a593Smuzhiyun }; 61*4882a593Smuzhiyun }; 62*4882a593Smuzhiyun }; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun soc { 65*4882a593Smuzhiyun compatible = "simple-bus"; 66*4882a593Smuzhiyun #address-cells = <1>; 67*4882a593Smuzhiyun #size-cells = <1>; 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun system_timer: timer@7e003000 { 70*4882a593Smuzhiyun compatible = "brcm,bcm2835-system-timer"; 71*4882a593Smuzhiyun reg = <0x7e003000 0x1000>; 72*4882a593Smuzhiyun interrupts = <1 0>, <1 1>, <1 2>, <1 3>; 73*4882a593Smuzhiyun /* This could be a reference to BCM2835_CLOCK_TIMER, 74*4882a593Smuzhiyun * but we don't have the driver using the common clock 75*4882a593Smuzhiyun * support yet. 76*4882a593Smuzhiyun */ 77*4882a593Smuzhiyun clock-frequency = <1000000>; 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun txp: txp@7e004000 { 81*4882a593Smuzhiyun compatible = "brcm,bcm2835-txp"; 82*4882a593Smuzhiyun reg = <0x7e004000 0x20>; 83*4882a593Smuzhiyun interrupts = <1 11>; 84*4882a593Smuzhiyun }; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun clocks: cprman@7e101000 { 87*4882a593Smuzhiyun compatible = "brcm,bcm2835-cprman"; 88*4882a593Smuzhiyun #clock-cells = <1>; 89*4882a593Smuzhiyun reg = <0x7e101000 0x2000>; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun /* CPRMAN derives almost everything from the 92*4882a593Smuzhiyun * platform's oscillator. However, the DSI 93*4882a593Smuzhiyun * pixel clocks come from the DSI analog PHY. 94*4882a593Smuzhiyun */ 95*4882a593Smuzhiyun clocks = <&clk_osc>, 96*4882a593Smuzhiyun <&dsi0 0>, <&dsi0 1>, <&dsi0 2>, 97*4882a593Smuzhiyun <&dsi1 0>, <&dsi1 1>, <&dsi1 2>; 98*4882a593Smuzhiyun }; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun mailbox: mailbox@7e00b880 { 101*4882a593Smuzhiyun compatible = "brcm,bcm2835-mbox"; 102*4882a593Smuzhiyun reg = <0x7e00b880 0x40>; 103*4882a593Smuzhiyun interrupts = <0 1>; 104*4882a593Smuzhiyun #mbox-cells = <0>; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun gpio: gpio@7e200000 { 108*4882a593Smuzhiyun compatible = "brcm,bcm2835-gpio"; 109*4882a593Smuzhiyun reg = <0x7e200000 0xb4>; 110*4882a593Smuzhiyun /* 111*4882a593Smuzhiyun * The GPIO IP block is designed for 3 banks of GPIOs. 112*4882a593Smuzhiyun * Each bank has a GPIO interrupt for itself. 113*4882a593Smuzhiyun * There is an overall "any bank" interrupt. 114*4882a593Smuzhiyun * In order, these are GIC interrupts 17, 18, 19, 20. 115*4882a593Smuzhiyun * Since the BCM2835 only has 2 banks, the 2nd bank 116*4882a593Smuzhiyun * interrupt output appears to be mirrored onto the 117*4882a593Smuzhiyun * 3rd bank's interrupt signal. 118*4882a593Smuzhiyun * So, a bank0 interrupt shows up on 17, 20, and 119*4882a593Smuzhiyun * a bank1 interrupt shows up on 18, 19, 20! 120*4882a593Smuzhiyun */ 121*4882a593Smuzhiyun interrupts = <2 17>, <2 18>, <2 19>, <2 20>; 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun gpio-controller; 124*4882a593Smuzhiyun #gpio-cells = <2>; 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun interrupt-controller; 127*4882a593Smuzhiyun #interrupt-cells = <2>; 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun gpio-ranges = <&gpio 0 0 54>; 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun /* Defines common pin muxing groups 132*4882a593Smuzhiyun * 133*4882a593Smuzhiyun * While each pin can have its mux selected 134*4882a593Smuzhiyun * for various functions individually, some 135*4882a593Smuzhiyun * groups only make sense to switch to a 136*4882a593Smuzhiyun * particular function together. 137*4882a593Smuzhiyun */ 138*4882a593Smuzhiyun dpi_gpio0: dpi_gpio0 { 139*4882a593Smuzhiyun brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 140*4882a593Smuzhiyun 12 13 14 15 16 17 18 19 141*4882a593Smuzhiyun 20 21 22 23 24 25 26 27>; 142*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT2>; 143*4882a593Smuzhiyun }; 144*4882a593Smuzhiyun emmc_gpio22: emmc_gpio22 { 145*4882a593Smuzhiyun brcm,pins = <22 23 24 25 26 27>; 146*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT3>; 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun emmc_gpio34: emmc_gpio34 { 149*4882a593Smuzhiyun brcm,pins = <34 35 36 37 38 39>; 150*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT3>; 151*4882a593Smuzhiyun brcm,pull = <BCM2835_PUD_OFF 152*4882a593Smuzhiyun BCM2835_PUD_UP 153*4882a593Smuzhiyun BCM2835_PUD_UP 154*4882a593Smuzhiyun BCM2835_PUD_UP 155*4882a593Smuzhiyun BCM2835_PUD_UP 156*4882a593Smuzhiyun BCM2835_PUD_UP>; 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun emmc_gpio48: emmc_gpio48 { 159*4882a593Smuzhiyun brcm,pins = <48 49 50 51 52 53>; 160*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT3>; 161*4882a593Smuzhiyun }; 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun gpclk0_gpio4: gpclk0_gpio4 { 164*4882a593Smuzhiyun brcm,pins = <4>; 165*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 166*4882a593Smuzhiyun }; 167*4882a593Smuzhiyun gpclk1_gpio5: gpclk1_gpio5 { 168*4882a593Smuzhiyun brcm,pins = <5>; 169*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 170*4882a593Smuzhiyun }; 171*4882a593Smuzhiyun gpclk1_gpio42: gpclk1_gpio42 { 172*4882a593Smuzhiyun brcm,pins = <42>; 173*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun gpclk1_gpio44: gpclk1_gpio44 { 176*4882a593Smuzhiyun brcm,pins = <44>; 177*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 178*4882a593Smuzhiyun }; 179*4882a593Smuzhiyun gpclk2_gpio6: gpclk2_gpio6 { 180*4882a593Smuzhiyun brcm,pins = <6>; 181*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 182*4882a593Smuzhiyun }; 183*4882a593Smuzhiyun gpclk2_gpio43: gpclk2_gpio43 { 184*4882a593Smuzhiyun brcm,pins = <43>; 185*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 186*4882a593Smuzhiyun brcm,pull = <BCM2835_PUD_OFF>; 187*4882a593Smuzhiyun }; 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun i2c0_gpio0: i2c0_gpio0 { 190*4882a593Smuzhiyun brcm,pins = <0 1>; 191*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun i2c0_gpio28: i2c0_gpio28 { 194*4882a593Smuzhiyun brcm,pins = <28 29>; 195*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 196*4882a593Smuzhiyun }; 197*4882a593Smuzhiyun i2c0_gpio44: i2c0_gpio44 { 198*4882a593Smuzhiyun brcm,pins = <44 45>; 199*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT1>; 200*4882a593Smuzhiyun }; 201*4882a593Smuzhiyun i2c1_gpio2: i2c1_gpio2 { 202*4882a593Smuzhiyun brcm,pins = <2 3>; 203*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 204*4882a593Smuzhiyun }; 205*4882a593Smuzhiyun i2c1_gpio44: i2c1_gpio44 { 206*4882a593Smuzhiyun brcm,pins = <44 45>; 207*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT2>; 208*4882a593Smuzhiyun }; 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun jtag_gpio22: jtag_gpio22 { 211*4882a593Smuzhiyun brcm,pins = <22 23 24 25 26 27>; 212*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT4>; 213*4882a593Smuzhiyun }; 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun pcm_gpio18: pcm_gpio18 { 216*4882a593Smuzhiyun brcm,pins = <18 19 20 21>; 217*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 218*4882a593Smuzhiyun }; 219*4882a593Smuzhiyun pcm_gpio28: pcm_gpio28 { 220*4882a593Smuzhiyun brcm,pins = <28 29 30 31>; 221*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT2>; 222*4882a593Smuzhiyun }; 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun sdhost_gpio48: sdhost_gpio48 { 225*4882a593Smuzhiyun brcm,pins = <48 49 50 51 52 53>; 226*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 227*4882a593Smuzhiyun }; 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun spi0_gpio7: spi0_gpio7 { 230*4882a593Smuzhiyun brcm,pins = <7 8 9 10 11>; 231*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 232*4882a593Smuzhiyun }; 233*4882a593Smuzhiyun spi0_gpio35: spi0_gpio35 { 234*4882a593Smuzhiyun brcm,pins = <35 36 37 38 39>; 235*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 236*4882a593Smuzhiyun }; 237*4882a593Smuzhiyun spi1_gpio16: spi1_gpio16 { 238*4882a593Smuzhiyun brcm,pins = <16 17 18 19 20 21>; 239*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT4>; 240*4882a593Smuzhiyun }; 241*4882a593Smuzhiyun spi2_gpio40: spi2_gpio40 { 242*4882a593Smuzhiyun brcm,pins = <40 41 42 43 44 45>; 243*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT4>; 244*4882a593Smuzhiyun }; 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun uart0_gpio14: uart0_gpio14 { 247*4882a593Smuzhiyun brcm,pins = <14 15>; 248*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT0>; 249*4882a593Smuzhiyun }; 250*4882a593Smuzhiyun /* Separate from the uart0_gpio14 group 251*4882a593Smuzhiyun * because it conflicts with spi1_gpio16, and 252*4882a593Smuzhiyun * people often run uart0 on the two pins 253*4882a593Smuzhiyun * without flow control. 254*4882a593Smuzhiyun */ 255*4882a593Smuzhiyun uart0_ctsrts_gpio16: uart0_ctsrts_gpio16 { 256*4882a593Smuzhiyun brcm,pins = <16 17>; 257*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT3>; 258*4882a593Smuzhiyun }; 259*4882a593Smuzhiyun uart0_ctsrts_gpio30: uart0_ctsrts_gpio30 { 260*4882a593Smuzhiyun brcm,pins = <30 31>; 261*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT3>; 262*4882a593Smuzhiyun brcm,pull = <BCM2835_PUD_UP BCM2835_PUD_OFF>; 263*4882a593Smuzhiyun }; 264*4882a593Smuzhiyun uart0_gpio32: uart0_gpio32 { 265*4882a593Smuzhiyun brcm,pins = <32 33>; 266*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT3>; 267*4882a593Smuzhiyun brcm,pull = <BCM2835_PUD_OFF BCM2835_PUD_UP>; 268*4882a593Smuzhiyun }; 269*4882a593Smuzhiyun uart0_gpio36: uart0_gpio36 { 270*4882a593Smuzhiyun brcm,pins = <36 37>; 271*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT2>; 272*4882a593Smuzhiyun }; 273*4882a593Smuzhiyun uart0_ctsrts_gpio38: uart0_ctsrts_gpio38 { 274*4882a593Smuzhiyun brcm,pins = <38 39>; 275*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT2>; 276*4882a593Smuzhiyun }; 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun uart1_gpio14: uart1_gpio14 { 279*4882a593Smuzhiyun brcm,pins = <14 15>; 280*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT5>; 281*4882a593Smuzhiyun }; 282*4882a593Smuzhiyun uart1_ctsrts_gpio16: uart1_ctsrts_gpio16 { 283*4882a593Smuzhiyun brcm,pins = <16 17>; 284*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT5>; 285*4882a593Smuzhiyun }; 286*4882a593Smuzhiyun uart1_gpio32: uart1_gpio32 { 287*4882a593Smuzhiyun brcm,pins = <32 33>; 288*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT5>; 289*4882a593Smuzhiyun }; 290*4882a593Smuzhiyun uart1_ctsrts_gpio30: uart1_ctsrts_gpio30 { 291*4882a593Smuzhiyun brcm,pins = <30 31>; 292*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT5>; 293*4882a593Smuzhiyun }; 294*4882a593Smuzhiyun uart1_gpio40: uart1_gpio40 { 295*4882a593Smuzhiyun brcm,pins = <40 41>; 296*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT5>; 297*4882a593Smuzhiyun }; 298*4882a593Smuzhiyun uart1_ctsrts_gpio42: uart1_ctsrts_gpio42 { 299*4882a593Smuzhiyun brcm,pins = <42 43>; 300*4882a593Smuzhiyun brcm,function = <BCM2835_FSEL_ALT5>; 301*4882a593Smuzhiyun }; 302*4882a593Smuzhiyun }; 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun uart0: serial@7e201000 { 305*4882a593Smuzhiyun compatible = "arm,pl011", "arm,primecell"; 306*4882a593Smuzhiyun reg = <0x7e201000 0x200>; 307*4882a593Smuzhiyun interrupts = <2 25>; 308*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_UART>, 309*4882a593Smuzhiyun <&clocks BCM2835_CLOCK_VPU>; 310*4882a593Smuzhiyun clock-names = "uartclk", "apb_pclk"; 311*4882a593Smuzhiyun arm,primecell-periphid = <0x00241011>; 312*4882a593Smuzhiyun }; 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun sdhost: mmc@7e202000 { 315*4882a593Smuzhiyun compatible = "brcm,bcm2835-sdhost"; 316*4882a593Smuzhiyun reg = <0x7e202000 0x100>; 317*4882a593Smuzhiyun interrupts = <2 24>; 318*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_VPU>; 319*4882a593Smuzhiyun status = "disabled"; 320*4882a593Smuzhiyun }; 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun i2s: i2s@7e203000 { 323*4882a593Smuzhiyun compatible = "brcm,bcm2835-i2s"; 324*4882a593Smuzhiyun reg = <0x7e203000 0x24>; 325*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_PCM>; 326*4882a593Smuzhiyun status = "disabled"; 327*4882a593Smuzhiyun }; 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun spi: spi@7e204000 { 330*4882a593Smuzhiyun compatible = "brcm,bcm2835-spi"; 331*4882a593Smuzhiyun reg = <0x7e204000 0x200>; 332*4882a593Smuzhiyun interrupts = <2 22>; 333*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_VPU>; 334*4882a593Smuzhiyun #address-cells = <1>; 335*4882a593Smuzhiyun #size-cells = <0>; 336*4882a593Smuzhiyun status = "disabled"; 337*4882a593Smuzhiyun }; 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun i2c0: i2c@7e205000 { 340*4882a593Smuzhiyun compatible = "brcm,bcm2835-i2c"; 341*4882a593Smuzhiyun reg = <0x7e205000 0x200>; 342*4882a593Smuzhiyun interrupts = <2 21>; 343*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_VPU>; 344*4882a593Smuzhiyun #address-cells = <1>; 345*4882a593Smuzhiyun #size-cells = <0>; 346*4882a593Smuzhiyun status = "disabled"; 347*4882a593Smuzhiyun }; 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun dpi: dpi@7e208000 { 350*4882a593Smuzhiyun compatible = "brcm,bcm2835-dpi"; 351*4882a593Smuzhiyun reg = <0x7e208000 0x8c>; 352*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_VPU>, 353*4882a593Smuzhiyun <&clocks BCM2835_CLOCK_DPI>; 354*4882a593Smuzhiyun clock-names = "core", "pixel"; 355*4882a593Smuzhiyun #address-cells = <1>; 356*4882a593Smuzhiyun #size-cells = <0>; 357*4882a593Smuzhiyun status = "disabled"; 358*4882a593Smuzhiyun }; 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun dsi0: dsi@7e209000 { 361*4882a593Smuzhiyun compatible = "brcm,bcm2835-dsi0"; 362*4882a593Smuzhiyun reg = <0x7e209000 0x78>; 363*4882a593Smuzhiyun interrupts = <2 4>; 364*4882a593Smuzhiyun #address-cells = <1>; 365*4882a593Smuzhiyun #size-cells = <0>; 366*4882a593Smuzhiyun #clock-cells = <1>; 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun clocks = <&clocks BCM2835_PLLA_DSI0>, 369*4882a593Smuzhiyun <&clocks BCM2835_CLOCK_DSI0E>, 370*4882a593Smuzhiyun <&clocks BCM2835_CLOCK_DSI0P>; 371*4882a593Smuzhiyun clock-names = "phy", "escape", "pixel"; 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun clock-output-names = "dsi0_byte", 374*4882a593Smuzhiyun "dsi0_ddr2", 375*4882a593Smuzhiyun "dsi0_ddr"; 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun status = "disabled"; 378*4882a593Smuzhiyun }; 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun aux: aux@7e215000 { 381*4882a593Smuzhiyun compatible = "brcm,bcm2835-aux"; 382*4882a593Smuzhiyun #clock-cells = <1>; 383*4882a593Smuzhiyun reg = <0x7e215000 0x8>; 384*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_VPU>; 385*4882a593Smuzhiyun }; 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun uart1: serial@7e215040 { 388*4882a593Smuzhiyun compatible = "brcm,bcm2835-aux-uart"; 389*4882a593Smuzhiyun reg = <0x7e215040 0x40>; 390*4882a593Smuzhiyun interrupts = <1 29>; 391*4882a593Smuzhiyun clocks = <&aux BCM2835_AUX_CLOCK_UART>; 392*4882a593Smuzhiyun status = "disabled"; 393*4882a593Smuzhiyun }; 394*4882a593Smuzhiyun 395*4882a593Smuzhiyun spi1: spi@7e215080 { 396*4882a593Smuzhiyun compatible = "brcm,bcm2835-aux-spi"; 397*4882a593Smuzhiyun reg = <0x7e215080 0x40>; 398*4882a593Smuzhiyun interrupts = <1 29>; 399*4882a593Smuzhiyun clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; 400*4882a593Smuzhiyun #address-cells = <1>; 401*4882a593Smuzhiyun #size-cells = <0>; 402*4882a593Smuzhiyun status = "disabled"; 403*4882a593Smuzhiyun }; 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun spi2: spi@7e2150c0 { 406*4882a593Smuzhiyun compatible = "brcm,bcm2835-aux-spi"; 407*4882a593Smuzhiyun reg = <0x7e2150c0 0x40>; 408*4882a593Smuzhiyun interrupts = <1 29>; 409*4882a593Smuzhiyun clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; 410*4882a593Smuzhiyun #address-cells = <1>; 411*4882a593Smuzhiyun #size-cells = <0>; 412*4882a593Smuzhiyun status = "disabled"; 413*4882a593Smuzhiyun }; 414*4882a593Smuzhiyun 415*4882a593Smuzhiyun pwm: pwm@7e20c000 { 416*4882a593Smuzhiyun compatible = "brcm,bcm2835-pwm"; 417*4882a593Smuzhiyun reg = <0x7e20c000 0x28>; 418*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_PWM>; 419*4882a593Smuzhiyun assigned-clocks = <&clocks BCM2835_CLOCK_PWM>; 420*4882a593Smuzhiyun assigned-clock-rates = <10000000>; 421*4882a593Smuzhiyun #pwm-cells = <2>; 422*4882a593Smuzhiyun status = "disabled"; 423*4882a593Smuzhiyun }; 424*4882a593Smuzhiyun 425*4882a593Smuzhiyun sdhci: mmc@7e300000 { 426*4882a593Smuzhiyun compatible = "brcm,bcm2835-sdhci"; 427*4882a593Smuzhiyun reg = <0x7e300000 0x100>; 428*4882a593Smuzhiyun interrupts = <2 30>; 429*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_EMMC>; 430*4882a593Smuzhiyun status = "disabled"; 431*4882a593Smuzhiyun }; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun hvs@7e400000 { 434*4882a593Smuzhiyun compatible = "brcm,bcm2835-hvs"; 435*4882a593Smuzhiyun reg = <0x7e400000 0x6000>; 436*4882a593Smuzhiyun interrupts = <2 1>; 437*4882a593Smuzhiyun }; 438*4882a593Smuzhiyun 439*4882a593Smuzhiyun dsi1: dsi@7e700000 { 440*4882a593Smuzhiyun compatible = "brcm,bcm2835-dsi1"; 441*4882a593Smuzhiyun reg = <0x7e700000 0x8c>; 442*4882a593Smuzhiyun interrupts = <2 12>; 443*4882a593Smuzhiyun #address-cells = <1>; 444*4882a593Smuzhiyun #size-cells = <0>; 445*4882a593Smuzhiyun #clock-cells = <1>; 446*4882a593Smuzhiyun 447*4882a593Smuzhiyun clocks = <&clocks BCM2835_PLLD_DSI1>, 448*4882a593Smuzhiyun <&clocks BCM2835_CLOCK_DSI1E>, 449*4882a593Smuzhiyun <&clocks BCM2835_CLOCK_DSI1P>; 450*4882a593Smuzhiyun clock-names = "phy", "escape", "pixel"; 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun clock-output-names = "dsi1_byte", 453*4882a593Smuzhiyun "dsi1_ddr2", 454*4882a593Smuzhiyun "dsi1_ddr"; 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun status = "disabled"; 457*4882a593Smuzhiyun }; 458*4882a593Smuzhiyun 459*4882a593Smuzhiyun i2c1: i2c@7e804000 { 460*4882a593Smuzhiyun compatible = "brcm,bcm2835-i2c"; 461*4882a593Smuzhiyun reg = <0x7e804000 0x1000>; 462*4882a593Smuzhiyun interrupts = <2 21>; 463*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_VPU>; 464*4882a593Smuzhiyun #address-cells = <1>; 465*4882a593Smuzhiyun #size-cells = <0>; 466*4882a593Smuzhiyun status = "disabled"; 467*4882a593Smuzhiyun }; 468*4882a593Smuzhiyun 469*4882a593Smuzhiyun vec: vec@7e806000 { 470*4882a593Smuzhiyun compatible = "brcm,bcm2835-vec"; 471*4882a593Smuzhiyun reg = <0x7e806000 0x1000>; 472*4882a593Smuzhiyun clocks = <&clocks BCM2835_CLOCK_VEC>; 473*4882a593Smuzhiyun interrupts = <2 27>; 474*4882a593Smuzhiyun status = "disabled"; 475*4882a593Smuzhiyun }; 476*4882a593Smuzhiyun 477*4882a593Smuzhiyun usb: usb@7e980000 { 478*4882a593Smuzhiyun compatible = "brcm,bcm2835-usb"; 479*4882a593Smuzhiyun reg = <0x7e980000 0x10000>; 480*4882a593Smuzhiyun interrupts = <1 9>; 481*4882a593Smuzhiyun #address-cells = <1>; 482*4882a593Smuzhiyun #size-cells = <0>; 483*4882a593Smuzhiyun clocks = <&clk_usb>; 484*4882a593Smuzhiyun clock-names = "otg"; 485*4882a593Smuzhiyun phys = <&usbphy>; 486*4882a593Smuzhiyun phy-names = "usb2-phy"; 487*4882a593Smuzhiyun }; 488*4882a593Smuzhiyun }; 489*4882a593Smuzhiyun 490*4882a593Smuzhiyun clocks { 491*4882a593Smuzhiyun /* The oscillator is the root of the clock tree. */ 492*4882a593Smuzhiyun clk_osc: clk-osc { 493*4882a593Smuzhiyun compatible = "fixed-clock"; 494*4882a593Smuzhiyun #clock-cells = <0>; 495*4882a593Smuzhiyun clock-output-names = "osc"; 496*4882a593Smuzhiyun clock-frequency = <19200000>; 497*4882a593Smuzhiyun }; 498*4882a593Smuzhiyun 499*4882a593Smuzhiyun clk_usb: clk-usb { 500*4882a593Smuzhiyun compatible = "fixed-clock"; 501*4882a593Smuzhiyun #clock-cells = <0>; 502*4882a593Smuzhiyun clock-output-names = "otg"; 503*4882a593Smuzhiyun clock-frequency = <480000000>; 504*4882a593Smuzhiyun }; 505*4882a593Smuzhiyun }; 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun usbphy: phy { 508*4882a593Smuzhiyun compatible = "usb-nop-xceiv"; 509*4882a593Smuzhiyun #phy-cells = <0>; 510*4882a593Smuzhiyun }; 511*4882a593Smuzhiyun}; 512