bcm2835.dtsi revision 257062
1/* 2 * Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@bluezbox.com> 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SUCH DAMAGE. 24 * 25 * $FreeBSD: head/sys/boot/fdt/dts/bcm2835.dtsi 257062 2013-10-24 16:27:33Z loos $ 26 */ 27 28/ { 29 #address-cells = <1>; 30 #size-cells = <1>; 31 32 cpus { 33 cpu@0 { 34 compatible = "arm,1176jzf-s"; 35 }; 36 }; 37 38 39 SOC: axi { 40 compatible = "simple-bus"; 41 #address-cells = <1>; 42 #size-cells = <1>; 43 reg = <0x20000000 0x01000000>; 44 ranges = <0 0x20000000 0x01000000>; 45 46 intc: interrupt-controller { 47 compatible = "broadcom,bcm2835-armctrl-ic", 48 "broadcom,bcm2708-armctrl-ic"; 49 reg = <0xB200 0x200>; 50 51 interrupt-controller; 52 #interrupt-cells = <1>; 53 54 /* Bank 0 55 * 0: ARM_TIMER 56 * 1: ARM_MAILBOX 57 * 2: ARM_DOORBELL_0 58 * 3: ARM_DOORBELL_1 59 * 4: VPU0_HALTED 60 * 5: VPU1_HALTED 61 * 6: ILLEGAL_TYPE0 62 * 7: ILLEGAL_TYPE1 63 */ 64 65 /* Bank 1 66 * 0: TIMER0 16: DMA0 67 * 1: TIMER1 17: DMA1 68 * 2: TIMER2 18: VC_DMA2 69 * 3: TIMER3 19: VC_DMA3 70 * 4: CODEC0 20: DMA4 71 * 5: CODEC1 21: DMA5 72 * 6: CODEC2 22: DMA6 73 * 7: VC_JPEG 23: DMA7 74 * 8: ISP 24: DMA8 75 * 9: VC_USB 25: DMA9 76 * 10: VC_3D 26: DMA10 77 * 11: TRANSPOSER 27: DMA11 78 * 12: MULTICORESYNC0 28: DMA12 79 * 13: MULTICORESYNC1 29: AUX 80 * 14: MULTICORESYNC2 30: ARM 81 * 15: MULTICORESYNC3 31: VPUDMA 82 */ 83 84 /* Bank 2 85 * 0: HOSTPORT 16: SMI 86 * 1: VIDEOSCALER 17: GPIO0 87 * 2: CCP2TX 18: GPIO1 88 * 3: SDC 19: GPIO2 89 * 4: DSI0 20: GPIO3 90 * 5: AVE 21: VC_I2C 91 * 6: CAM0 22: VC_SPI 92 * 7: CAM1 23: VC_I2SPCM 93 * 8: HDMI0 24: VC_SDIO 94 * 9: HDMI1 25: VC_UART 95 * 10: PIXELVALVE1 26: SLIMBUS 96 * 11: I2CSPISLV 27: VEC 97 * 12: DSI1 28: CPG 98 * 13: PWA0 29: RNG 99 * 14: PWA1 30: VC_ARASANSDIO 100 * 15: CPR 31: AVSPMON 101 */ 102 }; 103 104 timer { 105 compatible = "broadcom,bcm2835-system-timer", 106 "broadcom,bcm2708-system-timer"; 107 reg = <0x3000 0x1000>; 108 interrupts = <8 9 10 11>; 109 interrupt-parent = <&intc>; 110 111 clock-frequency = <1000000>; 112 }; 113 114 armtimer { 115 /* Not AMBA compatible */ 116 compatible = "broadcom,bcm2835-sp804", "arm,sp804"; 117 reg = <0xB400 0x24>; 118 interrupts = <0>; 119 interrupt-parent = <&intc>; 120 }; 121 122 watchdog0 { 123 compatible = "broadcom,bcm2835-wdt", 124 "broadcom,bcm2708-wdt"; 125 reg = <0x10001c 0x0c>; /* 0x1c, 0x20, 0x24 */ 126 }; 127 128 gpio: gpio { 129 compatible = "broadcom,bcm2835-gpio", 130 "broadcom,bcm2708-gpio"; 131 reg = <0x200000 0xb0>; 132 133 /* Unusual arrangement of interrupts 134 * (determined by testing) 135 * 17: Bank 0 (GPIOs 0-31) 136 * 19: Bank 1 (GPIOs 32-53) 137 * 18: Bank 2 138 * 20: All banks (GPIOs 0-53) 139 */ 140 interrupts = <57 59 58 60>; 141 interrupt-parent = <&intc>; 142 143 gpio-controller; 144 #gpio-cells = <2>; 145 146 interrupt-controller; 147 #interrupt-cells = <1>; 148 149 pinctrl-names = "default"; 150 pinctrl-0 = <&pins_reserved>; 151 152 /* Pins that can short 3.3V to GND in output mode: 46-47 153 * Pins used by VideoCore: 48-53 154 */ 155 broadcom,read-only = <46>, <47>, <48>, <49>, <50>, 156 <51>, <52>, <53>; 157 158 /* BSC0 */ 159 pins_bsc0_a: bsc0_a { 160 broadcom,pins = <0>, <1>; 161 }; 162 163 pins_bsc0_b: bsc0_b { 164 broadcom,pins = <28>, <29>; 165 }; 166 167 pins_bsc0_c: bsc0_c { 168 broadcom,pins = <44>, <45>; 169 }; 170 171 /* BSC1 */ 172 pins_bsc1_a: bsc1_a { 173 broadcom,pins = <2>, <3>; 174 }; 175 176 pins_bsc1_b: bsc1_b { 177 broadcom,pins = <44>, <45>; 178 }; 179 180 /* GPCLK0 */ 181 pins_gpclk0_a: gpclk0_a { 182 broadcom,pins = <4>; 183 }; 184 185 pins_gpclk0_b: gpclk0_b { 186 broadcom,pins = <20>; 187 }; 188 189 pins_gpclk0_c: gpclk0_c { 190 broadcom,pins = <32>; 191 }; 192 193 pins_gpclk0_d: gpclk0_d { 194 broadcom,pins = <34>; 195 }; 196 197 /* GPCLK1 */ 198 pins_gpclk1_a: gpclk1_a { 199 broadcom,pins = <5>; 200 }; 201 202 pins_gpclk1_b: gpclk1_b { 203 broadcom,pins = <21>; 204 }; 205 206 pins_gpclk1_c: gpclk1_c { 207 broadcom,pins = <42>; 208 }; 209 210 pins_gpclk1_d: gpclk1_d { 211 broadcom,pins = <44>; 212 }; 213 214 /* GPCLK2 */ 215 pins_gpclk2_a: gpclk2_a { 216 broadcom,pins = <6>; 217 }; 218 219 pins_gpclk2_b: gpclk2_b { 220 broadcom,pins = <43>; 221 }; 222 223 /* SPI0 */ 224 pins_spi0_a: spi0_a { 225 broadcom,pins = <7>, <8>, <9>, <10>, <11>; 226 }; 227 228 pins_spi0_b: spi0_b { 229 broadcom,pins = <35>, <36>, <37>, <38>, <39>; 230 }; 231 232 /* PWM */ 233 pins_pwm0_a: pwm0_a { 234 broadcom,pins = <12>; 235 }; 236 237 pins_pwm0_b: pwm0_b { 238 broadcom,pins = <18>; 239 }; 240 241 pins_pwm0_c: pwm0_c { 242 broadcom,pins = <40>; 243 }; 244 245 pins_pwm1_a: pwm1_a { 246 broadcom,pins = <13>; 247 }; 248 249 pins_pwm1_b: pwm1_b { 250 broadcom,pins = <19>; 251 }; 252 253 pins_pwm1_c: pwm1_c { 254 broadcom,pins = <41>; 255 }; 256 257 pins_pwm1_d: pwm1_d { 258 broadcom,pins = <45>; 259 }; 260 261 /* UART0 */ 262 pins_uart0_a: uart0_a { 263 broadcom,pins = <14>, <15>; 264 }; 265 266 pins_uart0_b: uart0_b { 267 broadcom,pins = <32>, <33>; 268 }; 269 270 pins_uart0_c: uart0_c { 271 broadcom,pins = <36>, <37>; 272 }; 273 274 pins_uart0_fc_a: uart0_fc_a { 275 broadcom,pins = <16>, <17>; 276 }; 277 278 pins_uart0_fc_b: uart0_fc_b { 279 broadcom,pins = <30>, <31>; 280 }; 281 282 pins_uart0_fc_c: uart0_fc_c { 283 broadcom,pins = <39>, <38>; 284 }; 285 286 /* PCM */ 287 pins_pcm_a: pcm_a { 288 broadcom,pins = <18>, <19>, <20>, <21>; 289 }; 290 291 pins_pcm_b: pcm_b { 292 broadcom,pins = <28>, <29>, <30>, <31>; 293 }; 294 295 /* Secondary Address Bus */ 296 pins_sm_addr_a: sm_addr_a { 297 broadcom,pins = <5>, <4>, <3>, <2>, <1>, <0>; 298 }; 299 300 pins_sm_addr_b: sm_addr_b { 301 broadcom,pins = <33>, <32>, <31>, <30>, <29>, 302 <28>; 303 }; 304 305 pins_sm_ctl_a: sm_ctl_a { 306 broadcom,pins = <6>, <7>; 307 }; 308 309 pins_sm_ctl_b: sm_ctl_b { 310 broadcom,pins = <34>, <35>; 311 }; 312 313 pins_sm_data_8bit_a: sm_data_8bit_a { 314 broadcom,pins = <8>, <9>, <10>, <11>, <12>, 315 <13>, <14>, <15>; 316 }; 317 318 pins_sm_data_8bit_b: sm_data_8bit_b { 319 broadcom,pins = <36>, <37>, <38>, <39>, <40>, 320 <41>, <42>, <43>; 321 }; 322 323 pins_sm_data_16bit: sm_data_16bit { 324 broadcom,pins = <16>, <17>, <18>, <19>, <20>, 325 <21>, <22>, <23>; 326 }; 327 328 pins_sm_data_18bit: sm_data_18bit { 329 broadcom,pins = <24>, <25>; 330 }; 331 332 /* BSCSL */ 333 pins_bscsl: bscsl { 334 broadcom,pins = <18>, <19>; 335 }; 336 337 /* SPISL */ 338 pins_spisl: spisl { 339 broadcom,pins = <18>, <19>, <20>, <21>; 340 }; 341 342 /* SPI1 */ 343 pins_spi1: spi1 { 344 broadcom,pins = <16>, <17>, <18>, <19>, <20>, 345 <21>; 346 }; 347 348 /* UART1 */ 349 pins_uart1_a: uart1_a { 350 broadcom,pins = <14>, <15>; 351 }; 352 353 pins_uart1_b: uart1_b { 354 broadcom,pins = <32>, <33>; 355 }; 356 357 pins_uart1_c: uart1_c { 358 broadcom,pins = <40>, <41>; 359 }; 360 361 pins_uart1_fc_a: uart1_fc_a { 362 broadcom,pins = <16>, <17>; 363 }; 364 365 pins_uart1_fc_b: uart1_fc_b { 366 broadcom,pins = <30>, <31>; 367 }; 368 369 pins_uart1_fc_c: uart1_fc_c { 370 broadcom,pins = <43>, <42>; 371 }; 372 373 /* SPI2 */ 374 pins_spi2: spi2 { 375 broadcom,pins = <40>, <41>, <42>, <43>, <44>, 376 <45>; 377 }; 378 379 /* ARM JTAG */ 380 pins_arm_jtag_trst: arm_jtag_trst { 381 broadcom,pins = <22>; 382 }; 383 384 pins_arm_jtag_a: arm_jtag_a { 385 broadcom,pins = <4>, <5>, <6>, <12>, <13>; 386 }; 387 388 pins_arm_jtag_b: arm_jtag_b { 389 broadcom,pins = <23>, <24>, <25>, <26>, <27>; 390 }; 391 392 /* Reserved */ 393 pins_reserved: reserved { 394 broadcom,pins = <48>, <49>, <50>, <51>, <52>, 395 <53>; 396 }; 397 }; 398 399 bsc0 { 400 compatible = "broadcom,bcm2835-bsc", 401 "broadcom,bcm2708-bsc"; 402 reg = <0x205000 0x20>; 403 interrupts = <61>; 404 interrupt-parent = <&intc>; 405 }; 406 407 bsc1 { 408 compatible = "broadcom,bcm2835-bsc", 409 "broadcom,bcm2708-bsc"; 410 reg = <0x804000 0x20>; 411 interrupts = <61>; 412 interrupt-parent = <&intc>; 413 }; 414 415 spi0 { 416 compatible = "broadcom,bcm2835-spi", 417 "broadcom,bcm2708-spi"; 418 reg = <0x204000 0x20>; 419 interrupts = <62>; 420 interrupt-parent = <&intc>; 421 }; 422 423 dma: dma { 424 compatible = "broadcom,bcm2835-dma", 425 "broadcom,bcm2708-dma"; 426 reg = <0x7000 0x1000>, <0xE05000 0x1000>; 427 interrupts = <24 25 26 27 28 29 30 31 32 33 34 35 36>; 428 interrupt-parent = <&intc>; 429 430 broadcom,channels = <0>; /* Set by VideoCore */ 431 }; 432 433 vc_mbox: mbox { 434 compatible = "broadcom,bcm2835-mbox", 435 "broadcom,bcm2708-mbox"; 436 reg = <0xB880 0x40>; 437 interrupts = <1>; 438 interrupt-parent = <&intc>; 439 440 /* Channels 441 * 0: Power 442 * 1: Frame buffer 443 * 2: Virtual UART 444 * 3: VCHIQ 445 * 4: LEDs 446 * 5: Buttons 447 * 6: Touch screen 448 */ 449 }; 450 451 sdhci { 452 compatible = "broadcom,bcm2835-sdhci", 453 "broadcom,bcm2708-sdhci"; 454 reg = <0x300000 0x100>; 455 interrupts = <70>; 456 interrupt-parent = <&intc>; 457 458 clock-frequency = <50000000>; /* Set by VideoCore */ 459 }; 460 461 uart0: uart0 { 462 compatible = "broadcom,bcm2835-uart", 463 "broadcom,bcm2708-uart", "arm,pl011", 464 "arm,primecell"; 465 reg = <0x201000 0x1000>; 466 interrupts = <65>; 467 interrupt-parent = <&intc>; 468 469 clock-frequency = <3000000>; /* Set by VideoCore */ 470 reg-shift = <2>; 471 }; 472 473 vchiq { 474 compatible = "broadcom,bcm2835-vchiq"; 475 reg = <0xB800 0x50>; 476 interrupts = <2>; 477 interrupt-parent = <&intc>; 478 }; 479 480 usb { 481 compatible = "broadcom,bcm2835-usb", 482 "broadcom,bcm2708-usb", 483 "synopsys,designware-hs-otg2"; 484 reg = <0x980000 0x20000>; 485 interrupts = <17>; 486 interrupt-parent = <&intc>; 487 #address-cells = <1>; 488 #size-cells = <0>; 489 }; 490 491 }; 492}; 493