1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2#include <dt-bindings/interrupt-controller/arm-gic.h> 3 4/ { 5 compatible = "brcm,bcm2712"; 6 7 #address-cells = <2>; 8 #size-cells = <2>; 9 10 interrupt-parent = <&gicv2>; 11 12 clocks { 13 /* The oscillator is the root of the clock tree. */ 14 clk_osc: clk-osc { 15 compatible = "fixed-clock"; 16 #clock-cells = <0>; 17 clock-output-names = "osc"; 18 clock-frequency = <54000000>; 19 }; 20 21 clk_vpu: clk-vpu { 22 compatible = "fixed-clock"; 23 #clock-cells = <0>; 24 clock-frequency = <750000000>; 25 clock-output-names = "vpu-clock"; 26 }; 27 28 clk_uart: clk-uart { 29 compatible = "fixed-clock"; 30 #clock-cells = <0>; 31 clock-frequency = <9216000>; 32 clock-output-names = "uart-clock"; 33 }; 34 35 clk_emmc2: clk-emmc2 { 36 compatible = "fixed-clock"; 37 #clock-cells = <0>; 38 clock-frequency = <200000000>; 39 clock-output-names = "emmc2-clock"; 40 }; 41 42 clk_sw_baud: clk-sw-baud { 43 compatible = "fixed-clock"; 44 #clock-cells = <0>; 45 clock-frequency = <96000000>; 46 clock-output-names = "sw-baud"; 47 }; 48 }; 49 50 cpus: cpus { 51 #address-cells = <1>; 52 #size-cells = <0>; 53 54 /* Source for L1 d/i cache-line-size, cache-sets, cache-size 55 * https://developer.arm.com/documentation/100798/0401/L1-memory-system/About-the-L1-memory-system?lang=en 56 * Source for L2 cache-line-size and cache-sets: 57 * https://developer.arm.com/documentation/100798/0401/L2-memory-system/About-the-L2-memory-system?lang=en 58 * and for cache-size: 59 * https://www.raspberrypi.com/documentation/computers/processors.html#bcm2712 60 */ 61 cpu0: cpu@0 { 62 device_type = "cpu"; 63 compatible = "arm,cortex-a76"; 64 reg = <0x000>; 65 enable-method = "psci"; 66 d-cache-size = <0x10000>; 67 d-cache-line-size = <64>; 68 d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set 69 i-cache-size = <0x10000>; 70 i-cache-line-size = <64>; 71 i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set 72 next-level-cache = <&l2_cache_l0>; 73 74 l2_cache_l0: l2-cache { 75 compatible = "cache"; 76 cache-size = <0x80000>; 77 cache-line-size = <64>; 78 cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set 79 cache-level = <2>; 80 cache-unified; 81 next-level-cache = <&l3_cache>; 82 }; 83 }; 84 85 cpu1: cpu@1 { 86 device_type = "cpu"; 87 compatible = "arm,cortex-a76"; 88 reg = <0x100>; 89 enable-method = "psci"; 90 d-cache-size = <0x10000>; 91 d-cache-line-size = <64>; 92 d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set 93 i-cache-size = <0x10000>; 94 i-cache-line-size = <64>; 95 i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set 96 next-level-cache = <&l2_cache_l1>; 97 98 l2_cache_l1: l2-cache { 99 compatible = "cache"; 100 cache-size = <0x80000>; 101 cache-line-size = <64>; 102 cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set 103 cache-level = <2>; 104 cache-unified; 105 next-level-cache = <&l3_cache>; 106 }; 107 }; 108 109 cpu2: cpu@2 { 110 device_type = "cpu"; 111 compatible = "arm,cortex-a76"; 112 reg = <0x200>; 113 enable-method = "psci"; 114 d-cache-size = <0x10000>; 115 d-cache-line-size = <64>; 116 d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set 117 i-cache-size = <0x10000>; 118 i-cache-line-size = <64>; 119 i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set 120 next-level-cache = <&l2_cache_l2>; 121 122 l2_cache_l2: l2-cache { 123 compatible = "cache"; 124 cache-size = <0x80000>; 125 cache-line-size = <64>; 126 cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set 127 cache-level = <2>; 128 cache-unified; 129 next-level-cache = <&l3_cache>; 130 }; 131 }; 132 133 cpu3: cpu@3 { 134 device_type = "cpu"; 135 compatible = "arm,cortex-a76"; 136 reg = <0x300>; 137 enable-method = "psci"; 138 d-cache-size = <0x10000>; 139 d-cache-line-size = <64>; 140 d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set 141 i-cache-size = <0x10000>; 142 i-cache-line-size = <64>; 143 i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set 144 next-level-cache = <&l2_cache_l3>; 145 146 l2_cache_l3: l2-cache { 147 compatible = "cache"; 148 cache-size = <0x80000>; 149 cache-line-size = <64>; 150 cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set 151 cache-level = <2>; 152 cache-unified; 153 next-level-cache = <&l3_cache>; 154 }; 155 }; 156 157 /* Source for cache-line-size and cache-sets: 158 * https://developer.arm.com/documentation/100453/0401/L3-cache?lang=en 159 * Source for cache-size: 160 * https://www.raspberrypi.com/documentation/computers/processors.html#bcm2712 161 */ 162 l3_cache: l3-cache { 163 compatible = "cache"; 164 cache-size = <0x200000>; 165 cache-line-size = <64>; 166 cache-sets = <2048>; // 2MiB(size)/64(line-size)=32768ways/16-way set 167 cache-level = <3>; 168 cache-unified; 169 }; 170 }; 171 172 psci { 173 method = "smc"; 174 compatible = "arm,psci-1.0", "arm,psci-0.2"; 175 }; 176 177 rmem: reserved-memory { 178 ranges; 179 #address-cells = <2>; 180 #size-cells = <2>; 181 182 atf@0 { 183 reg = <0x0 0x0 0x0 0x80000>; 184 no-map; 185 }; 186 187 cma: linux,cma { 188 compatible = "shared-dma-pool"; 189 size = <0x0 0x4000000>; /* 64MB */ 190 reusable; 191 linux,cma-default; 192 alloc-ranges = <0x0 0x00000000 0x0 0x40000000>; 193 }; 194 }; 195 196 soc: soc@107c000000 { 197 compatible = "simple-bus"; 198 ranges = <0x00000000 0x10 0x00000000 0x80000000>; 199 #address-cells = <1>; 200 #size-cells = <1>; 201 202 pcie_rescal: reset-controller@119500 { 203 compatible = "brcm,bcm7216-pcie-sata-rescal"; 204 reg = <0x00119500 0x10>; 205 #reset-cells = <0>; 206 }; 207 208 sdio1: mmc@fff000 { 209 compatible = "brcm,bcm2712-sdhci", 210 "brcm,sdhci-brcmstb"; 211 reg = <0x00fff000 0x260>, 212 <0x00fff400 0x200>; 213 reg-names = "host", "cfg"; 214 interrupts = <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>; 215 clocks = <&clk_emmc2>; 216 clock-names = "sw_sdio"; 217 mmc-ddr-3_3v; 218 }; 219 220 bcm_reset: reset-controller@1504318 { 221 compatible = "brcm,brcmstb-reset"; 222 reg = <0x01504318 0x30>; 223 #reset-cells = <1>; 224 }; 225 226 system_timer: timer@7c003000 { 227 compatible = "brcm,bcm2835-system-timer"; 228 reg = <0x7c003000 0x1000>; 229 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>, 230 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, 231 <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>, 232 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; 233 clock-frequency = <1000000>; 234 }; 235 236 mailbox: mailbox@7c013880 { 237 compatible = "brcm,bcm2835-mbox"; 238 reg = <0x7c013880 0x40>; 239 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; 240 #mbox-cells = <0>; 241 }; 242 243 uart10: serial@7d001000 { 244 compatible = "arm,pl011", "arm,primecell"; 245 reg = <0x7d001000 0x200>; 246 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; 247 clocks = <&clk_uart>, <&clk_vpu>; 248 clock-names = "uartclk", "apb_pclk"; 249 arm,primecell-periphid = <0x00341011>; 250 status = "disabled"; 251 }; 252 253 pinctrl: pinctrl@7d504100 { 254 compatible = "brcm,bcm2712c0-pinctrl"; 255 reg = <0x7d504100 0x30>; 256 }; 257 258 gio: gpio@7d508500 { 259 compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio"; 260 reg = <0x7d508500 0x40>; 261 interrupt-parent = <&main_irq>; 262 interrupts = <0>; 263 gpio-controller; 264 #gpio-cells = <2>; 265 interrupt-controller; 266 #interrupt-cells = <2>; 267 brcm,gpio-bank-widths = <32 22>; 268 }; 269 270 uarta: serial@7d50c000 { 271 compatible = "brcm,bcm7271-uart"; 272 reg = <0x7d50c000 0x20>; 273 reg-names = "uart"; 274 clocks = <&clk_sw_baud>; 275 clock-names = "sw_baud"; 276 interrupts = <GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>; 277 interrupt-names = "uart"; 278 status = "disabled"; 279 }; 280 281 pinctrl_aon: pinctrl@7d510700 { 282 compatible = "brcm,bcm2712c0-aon-pinctrl"; 283 reg = <0x7d510700 0x20>; 284 }; 285 286 interrupt-controller@7d517000 { 287 compatible = "brcm,bcm7271-l2-intc"; 288 reg = <0x7d517000 0x10>; 289 interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>; 290 interrupt-controller; 291 #interrupt-cells = <1>; 292 }; 293 294 gio_aon: gpio@7d517c00 { 295 compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio"; 296 reg = <0x7d517c00 0x40>; 297 gpio-controller; 298 #gpio-cells = <2>; 299 brcm,gpio-bank-widths = <17 6>; 300 /* The lack of 'interrupt-controller' property here is intended: 301 * don't use GIO_AON as an interrupt controller because it will 302 * clash with the firmware monitoring the PMIC interrupt via the VPU. 303 */ 304 }; 305 306 sdio2: mmc@1100000 { 307 compatible = "brcm,bcm2712-sdhci", 308 "brcm,sdhci-brcmstb"; 309 reg = <0x01100000 0x260>, 310 <0x01100400 0x200>; 311 reg-names = "host", "cfg"; 312 interrupts = <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>; 313 clocks = <&clk_emmc2>; 314 clock-names = "sw_sdio"; 315 sdhci-caps-mask = <0x0000C000 0x0>; 316 sdhci-caps = <0x0 0x0>; 317 mmc-ddr-3_3v; 318 status = "disabled"; 319 }; 320 321 gicv2: interrupt-controller@7fff9000 { 322 compatible = "arm,gic-400"; 323 reg = <0x7fff9000 0x1000>, 324 <0x7fffa000 0x2000>, 325 <0x7fffc000 0x2000>, 326 <0x7fffe000 0x2000>; 327 interrupt-controller; 328 #address-cells = <0>; 329 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | 330 IRQ_TYPE_LEVEL_HIGH)>; 331 #interrupt-cells = <3>; 332 }; 333 334 aon_intr: interrupt-controller@7d510600 { 335 compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc"; 336 reg = <0x7d510600 0x30>; 337 interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>; 338 interrupt-controller; 339 #interrupt-cells = <1>; 340 }; 341 342 pixelvalve0: pixelvalve@7c410000 { 343 compatible = "brcm,bcm2712-pixelvalve0"; 344 reg = <0x7c410000 0x100>; 345 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; 346 }; 347 348 pixelvalve1: pixelvalve@7c411000 { 349 compatible = "brcm,bcm2712-pixelvalve1"; 350 reg = <0x7c411000 0x100>; 351 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; 352 }; 353 354 mop: mop@7c500000 { 355 compatible = "brcm,bcm2712-mop"; 356 reg = <0x7c500000 0x28>; 357 interrupt-parent = <&disp_intr>; 358 interrupts = <1>; 359 }; 360 361 moplet: moplet@7c501000 { 362 compatible = "brcm,bcm2712-moplet"; 363 reg = <0x7c501000 0x20>; 364 interrupt-parent = <&disp_intr>; 365 interrupts = <0>; 366 }; 367 368 disp_intr: interrupt-controller@7c502000 { 369 compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc"; 370 reg = <0x7c502000 0x30>; 371 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; 372 interrupt-controller; 373 #interrupt-cells = <1>; 374 }; 375 376 dvp: clock@7c700000 { 377 compatible = "brcm,brcm2711-dvp"; 378 reg = <0x7c700000 0x10>; 379 clocks = <&clk_108MHz>; 380 #clock-cells = <1>; 381 #reset-cells = <1>; 382 }; 383 384 ddc0: i2c@7d508200 { 385 compatible = "brcm,brcmstb-i2c"; 386 reg = <0x7d508200 0x58>; 387 interrupt-parent = <&bsc_irq>; 388 interrupts = <1>; 389 clock-frequency = <97500>; 390 #address-cells = <1>; 391 #size-cells = <0>; 392 }; 393 394 ddc1: i2c@7d508280 { 395 compatible = "brcm,brcmstb-i2c"; 396 reg = <0x7d508280 0x58>; 397 interrupt-parent = <&bsc_irq>; 398 interrupts = <2>; 399 clock-frequency = <97500>; 400 #address-cells = <1>; 401 #size-cells = <0>; 402 }; 403 404 bsc_irq: interrupt-controller@7d508380 { 405 compatible = "brcm,bcm7271-l2-intc"; 406 reg = <0x7d508380 0x10>; 407 interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>; 408 interrupt-controller; 409 #interrupt-cells = <1>; 410 }; 411 412 main_irq: interrupt-controller@7d508400 { 413 compatible = "brcm,bcm7271-l2-intc"; 414 reg = <0x7d508400 0x10>; 415 interrupts = <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>; 416 interrupt-controller; 417 #interrupt-cells = <1>; 418 }; 419 420 hdmi0: hdmi@7c701400 { 421 compatible = "brcm,bcm2712-hdmi0"; 422 reg = <0x7c701400 0x300>, 423 <0x7c701000 0x200>, 424 <0x7c701d00 0x300>, 425 <0x7c702000 0x80>, 426 <0x7c703800 0x200>, 427 <0x7c704000 0x800>, 428 <0x7c700100 0x80>, 429 <0x7d510800 0x100>, 430 <0x7c720000 0x100>; 431 reg-names = "hdmi", 432 "dvp", 433 "phy", 434 "rm", 435 "packet", 436 "metadata", 437 "csc", 438 "cec", 439 "hd"; 440 resets = <&dvp 1>; 441 interrupt-parent = <&aon_intr>; 442 interrupts = <1>, <2>, <3>, 443 <7>, <8>; 444 interrupt-names = "cec-tx", "cec-rx", "cec-low", 445 "hpd-connected", "hpd-removed"; 446 ddc = <&ddc0>; 447 }; 448 449 hdmi1: hdmi@7c706400 { 450 compatible = "brcm,bcm2712-hdmi1"; 451 reg = <0x7c706400 0x300>, 452 <0x7c706000 0x200>, 453 <0x7c706d00 0x300>, 454 <0x7c707000 0x80>, 455 <0x7c708800 0x200>, 456 <0x7c709000 0x800>, 457 <0x7c700180 0x80>, 458 <0x7d511000 0x100>, 459 <0x7c720000 0x100>; 460 reg-names = "hdmi", 461 "dvp", 462 "phy", 463 "rm", 464 "packet", 465 "metadata", 466 "csc", 467 "cec", 468 "hd"; 469 resets = <&dvp 2>; 470 interrupt-parent = <&aon_intr>; 471 interrupts = <11>, <12>, <13>, 472 <14>, <15>; 473 interrupt-names = "cec-tx", "cec-rx", "cec-low", 474 "hpd-connected", "hpd-removed"; 475 ddc = <&ddc1>; 476 }; 477 }; 478 479 axi: axi { 480 compatible = "simple-bus"; 481 #address-cells = <2>; 482 #size-cells = <2>; 483 484 ranges = <0x00 0x00000000 0x00 0x00000000 0x10 0x00000000>, 485 <0x10 0x00000000 0x10 0x00000000 0x01 0x00000000>, 486 <0x14 0x00000000 0x14 0x00000000 0x04 0x00000000>, 487 <0x18 0x00000000 0x18 0x00000000 0x04 0x00000000>, 488 <0x1c 0x00000000 0x1c 0x00000000 0x04 0x00000000>; 489 490 dma-ranges = <0x00 0x00000000 0x00 0x00000000 0x10 0x00000000>, 491 <0x10 0x00000000 0x10 0x00000000 0x01 0x00000000>, 492 <0x14 0x00000000 0x14 0x00000000 0x04 0x00000000>, 493 <0x18 0x00000000 0x18 0x00000000 0x04 0x00000000>, 494 <0x1c 0x00000000 0x1c 0x00000000 0x04 0x00000000>; 495 496 vc4: gpu { 497 compatible = "brcm,bcm2712-vc6"; 498 }; 499 500 pcie0: pcie@1000100000 { 501 compatible = "brcm,bcm2712-pcie"; 502 reg = <0x10 0x00100000 0x00 0x9310>; 503 device_type = "pci"; 504 linux,pci-domain = <0>; 505 max-link-speed = <2>; 506 num-lanes = <1>; 507 #address-cells = <3>; 508 #interrupt-cells = <1>; 509 #size-cells = <2>; 510 interrupt-parent = <&gicv2>; 511 interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>, 512 <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>; 513 interrupt-names = "pcie", "msi"; 514 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 515 interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>, 516 <0 0 0 2 &gicv2 GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>, 517 <0 0 0 3 &gicv2 GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>, 518 <0 0 0 4 &gicv2 GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>; 519 resets = <&pcie_rescal>, <&bcm_reset 42>; 520 reset-names = "rescal", "bridge"; 521 msi-controller; 522 msi-parent = <&pcie0>; 523 524 ranges = 525 /* ~4GiB, 32-bit, non-prefetchable at PCIe 00_0000_0000 */ 526 <0x02000000 0x00 0x00000000 0x17 0x00000000 0x00 0xfffffffc>, 527 /* 12GiB, 64-bit, prefetchable at PCIe 04_0000_0000 */ 528 <0x43000000 0x04 0x00000000 0x14 0x00000000 0x03 0x00000000>; 529 530 dma-ranges = 531 /* 64GiB, 64-bit, prefetchable at PCIe 10_0000_0000 */ 532 <0x43000000 0x10 0x00000000 0x00 0x00000000 0x10 0x00000000>; 533 534 status = "disabled"; 535 }; 536 537 pcie1: pcie@1000110000 { 538 compatible = "brcm,bcm2712-pcie"; 539 reg = <0x10 0x00110000 0x00 0x9310>; 540 device_type = "pci"; 541 linux,pci-domain = <1>; 542 max-link-speed = <2>; 543 num-lanes = <1>; 544 #address-cells = <3>; 545 #interrupt-cells = <1>; 546 #size-cells = <2>; 547 interrupt-parent = <&gicv2>; 548 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>, 549 <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>; 550 interrupt-names = "pcie", "msi"; 551 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 552 interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>, 553 <0 0 0 2 &gicv2 GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>, 554 <0 0 0 3 &gicv2 GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>, 555 <0 0 0 4 &gicv2 GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>; 556 resets = <&pcie_rescal>, <&bcm_reset 43>; 557 reset-names = "rescal", "bridge"; 558 msi-controller; 559 msi-parent = <&mip1>; 560 561 ranges = 562 /* ~4GiB, 32-bit, non-prefetchable at PCIe 00_0000_0000 */ 563 <0x02000000 0x00 0x00000000 0x1b 0x00000000 0x00 0xfffffffc>, 564 /* 12GiB, 64-bit, prefetchable at PCIe 04_0000_0000 */ 565 <0x43000000 0x04 0x00000000 0x18 0x00000000 0x03 0x00000000>; 566 567 dma-ranges = 568 /* 64GiB, 64-bit, non-prefetchable at PCIe 10_0000_0000 */ 569 <0x03000000 0x10 0x00000000 0x00 0x00000000 0x10 0x00000000>, 570 /* 4KiB, 64-bit, non-prefetchable at PCIe ff_ffff_f000 MIP1 */ 571 <0x03000000 0xff 0xfffff000 0x10 0x00131000 0x00 0x00001000>; 572 573 status = "disabled"; 574 }; 575 576 pcie2: pcie@1000120000 { 577 compatible = "brcm,bcm2712-pcie"; 578 reg = <0x10 0x00120000 0x00 0x9310>; 579 device_type = "pci"; 580 linux,pci-domain = <2>; 581 max-link-speed = <2>; 582 num-lanes = <4>; 583 #address-cells = <3>; 584 #interrupt-cells = <1>; 585 #size-cells = <2>; 586 interrupt-parent = <&gicv2>; 587 interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>, 588 <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>; 589 interrupt-names = "pcie", "msi"; 590 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 591 interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>, 592 <0 0 0 2 &gicv2 GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>, 593 <0 0 0 3 &gicv2 GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>, 594 <0 0 0 4 &gicv2 GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>; 595 resets = <&pcie_rescal>, <&bcm_reset 44>; 596 reset-names = "rescal", "bridge"; 597 msi-controller; 598 msi-parent = <&mip0>; 599 600 ranges = 601 /* ~4GiB, 32-bit, non-prefetchable at PCIe 00_0000_0000 */ 602 <0x02000000 0x00 0x00000000 0x1f 0x00000000 0x00 0xfffffffc>, 603 /* 12GiB, 64-bit, prefetchable at PCIe 04_0000_0000 */ 604 <0x43000000 0x04 0x00000000 0x1c 0x00000000 0x03 0x00000000>; 605 606 dma-ranges = 607 /* 4MiB, 32-bit, non-prefetchable at PCIe 00_0000_0000 */ 608 <0x02000000 0x00 0x00000000 0x1f 0x00000000 0x00 0x00400000>, 609 /* 64GiB, 64-bit, prefetchable at PCIe 10_0000_0000 */ 610 <0x43000000 0x10 0x00000000 0x00 0x00000000 0x10 0x00000000>, 611 /* 4KiB, 64-bit, non-prefetchable at PCIe ff_ffff_f000 MIP0 */ 612 <0x03000000 0xff 0xfffff000 0x10 0x00130000 0x00 0x00001000>; 613 614 status = "disabled"; 615 }; 616 617 mip0: msi-controller@1000130000 { 618 compatible = "brcm,bcm2712-mip"; 619 reg = <0x10 0x00130000 0x00 0xc0>, 620 <0xff 0xfffff000 0x00 0x1000>; 621 msi-controller; 622 msi-ranges = <&gicv2 GIC_SPI 128 IRQ_TYPE_EDGE_RISING 64>; 623 brcm,msi-offset = <0>; 624 }; 625 626 mip1: msi-controller@1000131000 { 627 compatible = "brcm,bcm2712-mip"; 628 reg = <0x10 0x00131000 0x00 0xc0>, 629 <0xff 0xfffff000 0x00 0x1000>; 630 msi-controller; 631 msi-ranges = <&gicv2 GIC_SPI 247 IRQ_TYPE_EDGE_RISING 8>; 632 brcm,msi-offset = <8>; 633 }; 634 }; 635 636 timer { 637 compatible = "arm,armv8-timer"; 638 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | 639 IRQ_TYPE_LEVEL_LOW)>, 640 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | 641 IRQ_TYPE_LEVEL_LOW)>, 642 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | 643 IRQ_TYPE_LEVEL_LOW)>, 644 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | 645 IRQ_TYPE_LEVEL_LOW)>, 646 <GIC_PPI 12 (GIC_CPU_MASK_SIMPLE(4) | 647 IRQ_TYPE_LEVEL_LOW)>; 648 }; 649 650 clk_27MHz: clk-27M { 651 #clock-cells = <0>; 652 compatible = "fixed-clock"; 653 clock-frequency = <27000000>; 654 clock-output-names = "27MHz-clock"; 655 }; 656 657 clk_108MHz: clk-108M { 658 #clock-cells = <0>; 659 compatible = "fixed-clock"; 660 clock-frequency = <108000000>; 661 clock-output-names = "108MHz-clock"; 662 }; 663 664 hvs: hvs@107c580000 { 665 compatible = "brcm,bcm2712-hvs"; 666 reg = <0x10 0x7c580000 0x0 0x1a000>; 667 interrupt-parent = <&disp_intr>; 668 interrupts = <2>, <9>, <16>; 669 interrupt-names = "ch0-eof", "ch1-eof", "ch2-eof"; 670 }; 671}; 672