Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.2.
   1// SPDX-License-Identifier: GPL-2.0
   2#include "bcm283x.dtsi"
   3
   4#include <dt-bindings/interrupt-controller/arm-gic.h>
   5#include <dt-bindings/soc/bcm2835-pm.h>
   6
   7/ {
   8	compatible = "brcm,bcm2711";
   9
  10	#address-cells = <2>;
  11	#size-cells = <1>;
  12
  13	interrupt-parent = <&gicv2>;
  14
  15	vc4: gpu {
  16		compatible = "brcm,bcm2711-vc5";
  17		status = "disabled";
  18	};
  19
  20	clk_27MHz: clk-27M {
  21		#clock-cells = <0>;
  22		compatible = "fixed-clock";
  23		clock-frequency = <27000000>;
  24		clock-output-names = "27MHz-clock";
  25	};
  26
  27	clk_108MHz: clk-108M {
  28		#clock-cells = <0>;
  29		compatible = "fixed-clock";
  30		clock-frequency = <108000000>;
  31		clock-output-names = "108MHz-clock";
  32	};
  33
  34	soc {
  35		/*
  36		 * Defined ranges:
  37		 *   Common BCM283x peripherals
  38		 *   BCM2711-specific peripherals
  39		 *   ARM-local peripherals
  40		 */
  41		ranges = <0x7e000000  0x0 0xfe000000  0x01800000>,
  42			 <0x7c000000  0x0 0xfc000000  0x02000000>,
  43			 <0x40000000  0x0 0xff800000  0x00800000>;
  44		/* Emulate a contiguous 30-bit address range for DMA */
  45		dma-ranges = <0xc0000000  0x0 0x00000000  0x40000000>;
  46
  47		/*
  48		 * This node is the provider for the enable-method for
  49		 * bringing up secondary cores.
  50		 */
  51		local_intc: interrupt-controller@40000000 {
  52			compatible = "brcm,bcm2836-l1-intc";
  53			reg = <0x40000000 0x100>;
  54		};
  55
  56		gicv2: interrupt-controller@40041000 {
  57			interrupt-controller;
  58			#interrupt-cells = <3>;
  59			compatible = "arm,gic-400";
  60			reg =	<0x40041000 0x1000>,
  61				<0x40042000 0x2000>,
  62				<0x40044000 0x2000>,
  63				<0x40046000 0x2000>;
  64			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
  65						 IRQ_TYPE_LEVEL_HIGH)>;
  66		};
  67
  68		avs_monitor: avs-monitor@7d5d2000 {
  69			compatible = "brcm,bcm2711-avs-monitor",
  70				     "syscon", "simple-mfd";
  71			reg = <0x7d5d2000 0xf00>;
  72
  73			thermal: thermal {
  74				compatible = "brcm,bcm2711-thermal";
  75				#thermal-sensor-cells = <0>;
  76			};
  77		};
  78
  79		dma: dma-controller@7e007000 {
  80			compatible = "brcm,bcm2835-dma";
  81			reg = <0x7e007000 0xb00>;
  82			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
  83				     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
  84				     <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
  85				     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
  86				     <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
  87				     <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
  88				     <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
  89				     /* DMA lite 7 - 10 */
  90				     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
  91				     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
  92				     <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
  93				     <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  94			interrupt-names = "dma0",
  95					  "dma1",
  96					  "dma2",
  97					  "dma3",
  98					  "dma4",
  99					  "dma5",
 100					  "dma6",
 101					  "dma7",
 102					  "dma8",
 103					  "dma9",
 104					  "dma10";
 105			#dma-cells = <1>;
 106			brcm,dma-channel-mask = <0x07f5>;
 107		};
 108
 109		pm: watchdog@7e100000 {
 110			compatible = "brcm,bcm2711-pm", "brcm,bcm2835-pm-wdt";
 111			#power-domain-cells = <1>;
 112			#reset-cells = <1>;
 113			reg = <0x7e100000 0x114>,
 114			      <0x7e00a000 0x24>,
 115			      <0x7ec11000 0x20>;
 116			reg-names = "pm", "asb", "rpivid_asb";
 117			clocks = <&clocks BCM2835_CLOCK_V3D>,
 118				 <&clocks BCM2835_CLOCK_PERI_IMAGE>,
 119				 <&clocks BCM2835_CLOCK_H264>,
 120				 <&clocks BCM2835_CLOCK_ISP>;
 121			clock-names = "v3d", "peri_image", "h264", "isp";
 122			system-power-controller;
 123		};
 124
 125		rng@7e104000 {
 126			compatible = "brcm,bcm2711-rng200";
 127			reg = <0x7e104000 0x28>;
 128		};
 129
 130		uart2: serial@7e201400 {
 131			compatible = "arm,pl011", "arm,primecell";
 132			reg = <0x7e201400 0x200>;
 133			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
 134			clocks = <&clocks BCM2835_CLOCK_UART>,
 135				 <&clocks BCM2835_CLOCK_VPU>;
 136			clock-names = "uartclk", "apb_pclk";
 137			arm,primecell-periphid = <0x00241011>;
 138			status = "disabled";
 139		};
 140
 141		uart3: serial@7e201600 {
 142			compatible = "arm,pl011", "arm,primecell";
 143			reg = <0x7e201600 0x200>;
 144			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
 145			clocks = <&clocks BCM2835_CLOCK_UART>,
 146				 <&clocks BCM2835_CLOCK_VPU>;
 147			clock-names = "uartclk", "apb_pclk";
 148			arm,primecell-periphid = <0x00241011>;
 149			status = "disabled";
 150		};
 151
 152		uart4: serial@7e201800 {
 153			compatible = "arm,pl011", "arm,primecell";
 154			reg = <0x7e201800 0x200>;
 155			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
 156			clocks = <&clocks BCM2835_CLOCK_UART>,
 157				 <&clocks BCM2835_CLOCK_VPU>;
 158			clock-names = "uartclk", "apb_pclk";
 159			arm,primecell-periphid = <0x00241011>;
 160			status = "disabled";
 161		};
 162
 163		uart5: serial@7e201a00 {
 164			compatible = "arm,pl011", "arm,primecell";
 165			reg = <0x7e201a00 0x200>;
 166			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
 167			clocks = <&clocks BCM2835_CLOCK_UART>,
 168				 <&clocks BCM2835_CLOCK_VPU>;
 169			clock-names = "uartclk", "apb_pclk";
 170			arm,primecell-periphid = <0x00241011>;
 171			status = "disabled";
 172		};
 173
 174		spi3: spi@7e204600 {
 175			compatible = "brcm,bcm2835-spi";
 176			reg = <0x7e204600 0x0200>;
 177			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
 178			clocks = <&clocks BCM2835_CLOCK_VPU>;
 179			#address-cells = <1>;
 180			#size-cells = <0>;
 181			status = "disabled";
 182		};
 183
 184		spi4: spi@7e204800 {
 185			compatible = "brcm,bcm2835-spi";
 186			reg = <0x7e204800 0x0200>;
 187			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
 188			clocks = <&clocks BCM2835_CLOCK_VPU>;
 189			#address-cells = <1>;
 190			#size-cells = <0>;
 191			status = "disabled";
 192		};
 193
 194		spi5: spi@7e204a00 {
 195			compatible = "brcm,bcm2835-spi";
 196			reg = <0x7e204a00 0x0200>;
 197			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
 198			clocks = <&clocks BCM2835_CLOCK_VPU>;
 199			#address-cells = <1>;
 200			#size-cells = <0>;
 201			status = "disabled";
 202		};
 203
 204		spi6: spi@7e204c00 {
 205			compatible = "brcm,bcm2835-spi";
 206			reg = <0x7e204c00 0x0200>;
 207			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
 208			clocks = <&clocks BCM2835_CLOCK_VPU>;
 209			#address-cells = <1>;
 210			#size-cells = <0>;
 211			status = "disabled";
 212		};
 213
 214		i2c3: i2c@7e205600 {
 215			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
 216			reg = <0x7e205600 0x200>;
 217			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
 218			clocks = <&clocks BCM2835_CLOCK_VPU>;
 219			#address-cells = <1>;
 220			#size-cells = <0>;
 221			status = "disabled";
 222		};
 223
 224		i2c4: i2c@7e205800 {
 225			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
 226			reg = <0x7e205800 0x200>;
 227			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
 228			clocks = <&clocks BCM2835_CLOCK_VPU>;
 229			#address-cells = <1>;
 230			#size-cells = <0>;
 231			status = "disabled";
 232		};
 233
 234		i2c5: i2c@7e205a00 {
 235			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
 236			reg = <0x7e205a00 0x200>;
 237			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
 238			clocks = <&clocks BCM2835_CLOCK_VPU>;
 239			#address-cells = <1>;
 240			#size-cells = <0>;
 241			status = "disabled";
 242		};
 243
 244		i2c6: i2c@7e205c00 {
 245			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
 246			reg = <0x7e205c00 0x200>;
 247			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
 248			clocks = <&clocks BCM2835_CLOCK_VPU>;
 249			#address-cells = <1>;
 250			#size-cells = <0>;
 251			status = "disabled";
 252		};
 253
 254		pixelvalve0: pixelvalve@7e206000 {
 255			compatible = "brcm,bcm2711-pixelvalve0";
 256			reg = <0x7e206000 0x100>;
 257			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
 258			status = "disabled";
 259		};
 260
 261		pixelvalve1: pixelvalve@7e207000 {
 262			compatible = "brcm,bcm2711-pixelvalve1";
 263			reg = <0x7e207000 0x100>;
 264			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
 265			status = "disabled";
 266		};
 267
 268		pixelvalve2: pixelvalve@7e20a000 {
 269			compatible = "brcm,bcm2711-pixelvalve2";
 270			reg = <0x7e20a000 0x100>;
 271			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
 272			status = "disabled";
 273		};
 274
 275		pwm1: pwm@7e20c800 {
 276			compatible = "brcm,bcm2835-pwm";
 277			reg = <0x7e20c800 0x28>;
 278			clocks = <&clocks BCM2835_CLOCK_PWM>;
 279			assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
 280			assigned-clock-rates = <10000000>;
 281			#pwm-cells = <3>;
 282			status = "disabled";
 283		};
 284
 285		pixelvalve4: pixelvalve@7e216000 {
 286			compatible = "brcm,bcm2711-pixelvalve4";
 287			reg = <0x7e216000 0x100>;
 288			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
 289			status = "disabled";
 290		};
 291
 292		hvs: hvs@7e400000 {
 293			compatible = "brcm,bcm2711-hvs";
 294			reg = <0x7e400000 0x8000>;
 295			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
 296		};
 297
 298		pixelvalve3: pixelvalve@7ec12000 {
 299			compatible = "brcm,bcm2711-pixelvalve3";
 300			reg = <0x7ec12000 0x100>;
 301			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
 302			status = "disabled";
 303		};
 304
 305		vec: vec@7ec13000 {
 306			compatible = "brcm,bcm2711-vec";
 307			reg = <0x7ec13000 0x1000>;
 308			clocks = <&clocks BCM2835_CLOCK_VEC>;
 309			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
 310			status = "disabled";
 311		};
 312
 313		dvp: clock@7ef00000 {
 314			compatible = "brcm,brcm2711-dvp";
 315			reg = <0x7ef00000 0x10>;
 316			clocks = <&clk_108MHz>;
 317			#clock-cells = <1>;
 318			#reset-cells = <1>;
 319		};
 320
 321		aon_intr: interrupt-controller@7ef00100 {
 322			compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
 323			reg = <0x7ef00100 0x30>;
 324			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
 325			interrupt-controller;
 326			#interrupt-cells = <1>;
 327		};
 328
 329		hdmi0: hdmi@7ef00700 {
 330			compatible = "brcm,bcm2711-hdmi0";
 331			reg = <0x7ef00700 0x300>,
 332			      <0x7ef00300 0x200>,
 333			      <0x7ef00f00 0x80>,
 334			      <0x7ef00f80 0x80>,
 335			      <0x7ef01b00 0x200>,
 336			      <0x7ef01f00 0x400>,
 337			      <0x7ef00200 0x80>,
 338			      <0x7ef04300 0x100>,
 339			      <0x7ef20000 0x100>;
 340			reg-names = "hdmi",
 341				    "dvp",
 342				    "phy",
 343				    "rm",
 344				    "packet",
 345				    "metadata",
 346				    "csc",
 347				    "cec",
 348				    "hd";
 349			clock-names = "hdmi", "bvb", "audio", "cec";
 350			resets = <&dvp 0>;
 351			interrupt-parent = <&aon_intr>;
 352			interrupts = <0>, <1>, <2>,
 353				     <3>, <4>, <5>;
 354			interrupt-names = "cec-tx", "cec-rx", "cec-low",
 355					  "wakeup", "hpd-connected", "hpd-removed";
 356			ddc = <&ddc0>;
 357			dmas = <&dma 10>;
 358			dma-names = "audio-rx";
 359			status = "disabled";
 360		};
 361
 362		ddc0: i2c@7ef04500 {
 363			compatible = "brcm,bcm2711-hdmi-i2c";
 364			reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>;
 365			reg-names = "bsc", "auto-i2c";
 366			clock-frequency = <97500>;
 367			status = "disabled";
 368		};
 369
 370		hdmi1: hdmi@7ef05700 {
 371			compatible = "brcm,bcm2711-hdmi1";
 372			reg = <0x7ef05700 0x300>,
 373			      <0x7ef05300 0x200>,
 374			      <0x7ef05f00 0x80>,
 375			      <0x7ef05f80 0x80>,
 376			      <0x7ef06b00 0x200>,
 377			      <0x7ef06f00 0x400>,
 378			      <0x7ef00280 0x80>,
 379			      <0x7ef09300 0x100>,
 380			      <0x7ef20000 0x100>;
 381			reg-names = "hdmi",
 382				    "dvp",
 383				    "phy",
 384				    "rm",
 385				    "packet",
 386				    "metadata",
 387				    "csc",
 388				    "cec",
 389				    "hd";
 390			ddc = <&ddc1>;
 391			clock-names = "hdmi", "bvb", "audio", "cec";
 392			resets = <&dvp 1>;
 393			interrupt-parent = <&aon_intr>;
 394			interrupts = <8>, <7>, <6>,
 395				     <9>, <10>, <11>;
 396			interrupt-names = "cec-tx", "cec-rx", "cec-low",
 397					  "wakeup", "hpd-connected", "hpd-removed";
 398			dmas = <&dma 17>;
 399			dma-names = "audio-rx";
 400			status = "disabled";
 401		};
 402
 403		ddc1: i2c@7ef09500 {
 404			compatible = "brcm,bcm2711-hdmi-i2c";
 405			reg = <0x7ef09500 0x100>, <0x7ef05b00 0x300>;
 406			reg-names = "bsc", "auto-i2c";
 407			clock-frequency = <97500>;
 408			status = "disabled";
 409		};
 410	};
 411
 412	/*
 413	 * emmc2 has different DMA constraints based on SoC revisions. It was
 414	 * moved into its own bus, so as for RPi4's firmware to update them.
 415	 * The firmware will find whether the emmc2bus alias is defined, and if
 416	 * so, it'll edit the dma-ranges property below accordingly.
 417	 */
 418	emmc2bus: emmc2bus {
 419		compatible = "simple-bus";
 420		#address-cells = <2>;
 421		#size-cells = <1>;
 422
 423		ranges = <0x0 0x7e000000  0x0 0xfe000000  0x01800000>;
 424		dma-ranges = <0x0 0xc0000000  0x0 0x00000000  0x40000000>;
 425
 426		emmc2: mmc@7e340000 {
 427			compatible = "brcm,bcm2711-emmc2";
 428			reg = <0x0 0x7e340000 0x100>;
 429			interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
 430			clocks = <&clocks BCM2711_CLOCK_EMMC2>;
 431			status = "disabled";
 432		};
 433	};
 434
 435	arm-pmu {
 436		compatible = "arm,cortex-a72-pmu", "arm,armv8-pmuv3";
 437		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
 438			<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
 439			<GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
 440			<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
 441		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
 442	};
 443
 444	timer {
 445		compatible = "arm,armv8-timer";
 446		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
 447					  IRQ_TYPE_LEVEL_LOW)>,
 448			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
 449					  IRQ_TYPE_LEVEL_LOW)>,
 450			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
 451					  IRQ_TYPE_LEVEL_LOW)>,
 452			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
 453					  IRQ_TYPE_LEVEL_LOW)>;
 454		/* This only applies to the ARMv7 stub */
 455		arm,cpu-registers-not-fw-configured;
 456	};
 457
 458	cpus: cpus {
 459		#address-cells = <1>;
 460		#size-cells = <0>;
 461		enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
 462
 463		/* Source for d/i-cache-line-size and d/i-cache-sets
 464		 * https://developer.arm.com/documentation/100095/0003
 465		 * /Level-1-Memory-System/About-the-L1-memory-system?lang=en
 466		 * Source for d/i-cache-size
 467		 * https://www.raspberrypi.com/documentation/computers
 468		 * /processors.html#bcm2711
 469		 */
 470		cpu0: cpu@0 {
 471			device_type = "cpu";
 472			compatible = "arm,cortex-a72";
 473			reg = <0>;
 474			enable-method = "spin-table";
 475			cpu-release-addr = <0x0 0x000000d8>;
 476			d-cache-size = <0x8000>;
 477			d-cache-line-size = <64>;
 478			d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
 479			i-cache-size = <0xc000>;
 480			i-cache-line-size = <64>;
 481			i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
 482			next-level-cache = <&l2>;
 483		};
 484
 485		cpu1: cpu@1 {
 486			device_type = "cpu";
 487			compatible = "arm,cortex-a72";
 488			reg = <1>;
 489			enable-method = "spin-table";
 490			cpu-release-addr = <0x0 0x000000e0>;
 491			d-cache-size = <0x8000>;
 492			d-cache-line-size = <64>;
 493			d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
 494			i-cache-size = <0xc000>;
 495			i-cache-line-size = <64>;
 496			i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
 497			next-level-cache = <&l2>;
 498		};
 499
 500		cpu2: cpu@2 {
 501			device_type = "cpu";
 502			compatible = "arm,cortex-a72";
 503			reg = <2>;
 504			enable-method = "spin-table";
 505			cpu-release-addr = <0x0 0x000000e8>;
 506			d-cache-size = <0x8000>;
 507			d-cache-line-size = <64>;
 508			d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
 509			i-cache-size = <0xc000>;
 510			i-cache-line-size = <64>;
 511			i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
 512			next-level-cache = <&l2>;
 513		};
 514
 515		cpu3: cpu@3 {
 516			device_type = "cpu";
 517			compatible = "arm,cortex-a72";
 518			reg = <3>;
 519			enable-method = "spin-table";
 520			cpu-release-addr = <0x0 0x000000f0>;
 521			d-cache-size = <0x8000>;
 522			d-cache-line-size = <64>;
 523			d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
 524			i-cache-size = <0xc000>;
 525			i-cache-line-size = <64>;
 526			i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
 527			next-level-cache = <&l2>;
 528		};
 529
 530		/* Source for d/i-cache-line-size and d/i-cache-sets
 531		 *  https://developer.arm.com/documentation/100095/0003
 532		 *  /Level-2-Memory-System/About-the-L2-memory-system?lang=en
 533		 *  Source for d/i-cache-size
 534		 *  https://www.raspberrypi.com/documentation/computers
 535		 *  /processors.html#bcm2711
 536		 */
 537		l2: l2-cache0 {
 538			compatible = "cache";
 539			cache-unified;
 540			cache-size = <0x100000>;
 541			cache-line-size = <64>;
 542			cache-sets = <1024>; // 1MiB(size)/64(line-size)=16384ways/16-way set
 543			cache-level = <2>;
 544		};
 545	};
 546
 547	scb {
 548		compatible = "simple-bus";
 549		#address-cells = <2>;
 550		#size-cells = <1>;
 551
 552		ranges = <0x0 0x7c000000  0x0 0xfc000000  0x03800000>,
 553			 <0x6 0x00000000  0x6 0x00000000  0x40000000>;
 554
 555		pcie0: pcie@7d500000 {
 556			compatible = "brcm,bcm2711-pcie";
 557			reg = <0x0 0x7d500000 0x9310>;
 558			device_type = "pci";
 559			#address-cells = <3>;
 560			#interrupt-cells = <1>;
 561			#size-cells = <2>;
 562			interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
 563				     <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
 564			interrupt-names = "pcie", "msi";
 565			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
 566			interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143
 567							IRQ_TYPE_LEVEL_HIGH>,
 568					<0 0 0 2 &gicv2 GIC_SPI 144
 569							IRQ_TYPE_LEVEL_HIGH>,
 570					<0 0 0 3 &gicv2 GIC_SPI 145
 571							IRQ_TYPE_LEVEL_HIGH>,
 572					<0 0 0 4 &gicv2 GIC_SPI 146
 573							IRQ_TYPE_LEVEL_HIGH>;
 574			msi-controller;
 575			msi-parent = <&pcie0>;
 576
 577			ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000
 578				  0x0 0x04000000>;
 579			/*
 580			 * The wrapper around the PCIe block has a bug
 581			 * preventing it from accessing beyond the first 3GB of
 582			 * memory.
 583			 */
 584			dma-ranges = <0x02000000 0x0 0x00000000 0x0 0x00000000
 585				      0x0 0xc0000000>;
 586			brcm,enable-ssc;
 587		};
 588
 589		genet: ethernet@7d580000 {
 590			compatible = "brcm,bcm2711-genet-v5";
 591			reg = <0x0 0x7d580000 0x10000>;
 592			#address-cells = <0x1>;
 593			#size-cells = <0x1>;
 594			interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
 595				     <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
 596			status = "disabled";
 597
 598			genet_mdio: mdio@e14 {
 599				compatible = "brcm,genet-mdio-v5";
 600				reg = <0xe14 0x8>;
 601				reg-names = "mdio";
 602				#address-cells = <0x1>;
 603				#size-cells = <0x0>;
 604			};
 605		};
 606
 607		xhci: usb@7e9c0000 {
 608			compatible = "brcm,bcm2711-xhci", "brcm,xhci-brcm-v2";
 609			reg = <0x0 0x7e9c0000 0x100000>;
 610			#address-cells = <1>;
 611			#size-cells = <0>;
 612			interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
 613			/* DWC2 and this IP block share the same USB PHY,
 614			 * enabling both at the same time results in lockups.
 615			 * So keep this node disabled and let the bootloader
 616			 * decide which interface should be enabled.
 617			 */
 618			status = "disabled";
 619		};
 620
 621		v3d: gpu@7ec00000 {
 622			compatible = "brcm,2711-v3d";
 623			reg = <0x0 0x7ec00000 0x4000>,
 624			      <0x0 0x7ec04000 0x4000>;
 625			reg-names = "hub", "core0";
 626
 627			power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
 628			resets = <&pm BCM2835_RESET_V3D>;
 629			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
 630		};
 631	};
 632};
 633
 634&clk_osc {
 635	clock-frequency = <54000000>;
 636};
 637
 638&clocks {
 639	compatible = "brcm,bcm2711-cprman";
 640};
 641
 642&cpu_thermal {
 643	coefficients = <(-487) 410040>;
 644	thermal-sensors = <&thermal>;
 645};
 646
 647&dsi0 {
 648	interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
 649};
 650
 651&dsi1 {
 652	interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
 653	compatible = "brcm,bcm2711-dsi1";
 654};
 655
 656&gpio {
 657	compatible = "brcm,bcm2711-gpio";
 658	interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
 659		     <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
 660		     <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
 661		     <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
 662
 663	gpio-ranges = <&gpio 0 0 58>;
 664
 665	gpclk0_gpio49: gpclk0-gpio49 {
 666		pin-gpclk {
 667			pins = "gpio49";
 668			function = "alt1";
 669			bias-disable;
 670		};
 671	};
 672	gpclk1_gpio50: gpclk1-gpio50 {
 673		pin-gpclk {
 674			pins = "gpio50";
 675			function = "alt1";
 676			bias-disable;
 677		};
 678	};
 679	gpclk2_gpio51: gpclk2-gpio51 {
 680		pin-gpclk {
 681			pins = "gpio51";
 682			function = "alt1";
 683			bias-disable;
 684		};
 685	};
 686
 687	i2c0_gpio46: i2c0-gpio46 {
 688		pin-sda {
 689			function = "alt0";
 690			pins = "gpio46";
 691			bias-pull-up;
 692		};
 693		pin-scl {
 694			function = "alt0";
 695			pins = "gpio47";
 696			bias-disable;
 697		};
 698	};
 699	i2c1_gpio46: i2c1-gpio46 {
 700		pin-sda {
 701			function = "alt1";
 702			pins = "gpio46";
 703			bias-pull-up;
 704		};
 705		pin-scl {
 706			function = "alt1";
 707			pins = "gpio47";
 708			bias-disable;
 709		};
 710	};
 711	i2c3_gpio2: i2c3-gpio2 {
 712		pin-sda {
 713			function = "alt5";
 714			pins = "gpio2";
 715			bias-pull-up;
 716		};
 717		pin-scl {
 718			function = "alt5";
 719			pins = "gpio3";
 720			bias-disable;
 721		};
 722	};
 723	i2c3_gpio4: i2c3-gpio4 {
 724		pin-sda {
 725			function = "alt5";
 726			pins = "gpio4";
 727			bias-pull-up;
 728		};
 729		pin-scl {
 730			function = "alt5";
 731			pins = "gpio5";
 732			bias-disable;
 733		};
 734	};
 735	i2c4_gpio6: i2c4-gpio6 {
 736		pin-sda {
 737			function = "alt5";
 738			pins = "gpio6";
 739			bias-pull-up;
 740		};
 741		pin-scl {
 742			function = "alt5";
 743			pins = "gpio7";
 744			bias-disable;
 745		};
 746	};
 747	i2c4_gpio8: i2c4-gpio8 {
 748		pin-sda {
 749			function = "alt5";
 750			pins = "gpio8";
 751			bias-pull-up;
 752		};
 753		pin-scl {
 754			function = "alt5";
 755			pins = "gpio9";
 756			bias-disable;
 757		};
 758	};
 759	i2c5_gpio10: i2c5-gpio10 {
 760		pin-sda {
 761			function = "alt5";
 762			pins = "gpio10";
 763			bias-pull-up;
 764		};
 765		pin-scl {
 766			function = "alt5";
 767			pins = "gpio11";
 768			bias-disable;
 769		};
 770	};
 771	i2c5_gpio12: i2c5-gpio12 {
 772		pin-sda {
 773			function = "alt5";
 774			pins = "gpio12";
 775			bias-pull-up;
 776		};
 777		pin-scl {
 778			function = "alt5";
 779			pins = "gpio13";
 780			bias-disable;
 781		};
 782	};
 783	i2c6_gpio0: i2c6-gpio0 {
 784		pin-sda {
 785			function = "alt5";
 786			pins = "gpio0";
 787			bias-pull-up;
 788		};
 789		pin-scl {
 790			function = "alt5";
 791			pins = "gpio1";
 792			bias-disable;
 793		};
 794	};
 795	i2c6_gpio22: i2c6-gpio22 {
 796		pin-sda {
 797			function = "alt5";
 798			pins = "gpio22";
 799			bias-pull-up;
 800		};
 801		pin-scl {
 802			function = "alt5";
 803			pins = "gpio23";
 804			bias-disable;
 805		};
 806	};
 807	i2c_slave_gpio8: i2c-slave-gpio8 {
 808		pins-i2c-slave {
 809			pins = "gpio8",
 810			       "gpio9",
 811			       "gpio10",
 812			       "gpio11";
 813			function = "alt3";
 814		};
 815	};
 816
 817	jtag_gpio48: jtag-gpio48 {
 818		pins-jtag {
 819			pins = "gpio48",
 820			       "gpio49",
 821			       "gpio50",
 822			       "gpio51",
 823			       "gpio52",
 824			       "gpio53";
 825			function = "alt4";
 826		};
 827	};
 828
 829	mii_gpio28: mii-gpio28 {
 830		pins-mii {
 831			pins = "gpio28",
 832			       "gpio29",
 833			       "gpio30",
 834			       "gpio31";
 835			function = "alt4";
 836		};
 837	};
 838	mii_gpio36: mii-gpio36 {
 839		pins-mii {
 840			pins = "gpio36",
 841			       "gpio37",
 842			       "gpio38",
 843			       "gpio39";
 844			function = "alt5";
 845		};
 846	};
 847
 848	pcm_gpio50: pcm-gpio50 {
 849		pins-pcm {
 850			pins = "gpio50",
 851			       "gpio51",
 852			       "gpio52",
 853			       "gpio53";
 854			function = "alt2";
 855		};
 856	};
 857
 858	pwm0_0_gpio12: pwm0-0-gpio12 {
 859		pin-pwm {
 860			pins = "gpio12";
 861			function = "alt0";
 862			bias-disable;
 863		};
 864	};
 865	pwm0_0_gpio18: pwm0-0-gpio18 {
 866		pin-pwm {
 867			pins = "gpio18";
 868			function = "alt5";
 869			bias-disable;
 870		};
 871	};
 872	pwm1_0_gpio40: pwm1-0-gpio40 {
 873		pin-pwm {
 874			pins = "gpio40";
 875			function = "alt0";
 876			bias-disable;
 877		};
 878	};
 879	pwm0_1_gpio13: pwm0-1-gpio13 {
 880		pin-pwm {
 881			pins = "gpio13";
 882			function = "alt0";
 883			bias-disable;
 884		};
 885	};
 886	pwm0_1_gpio19: pwm0-1-gpio19 {
 887		pin-pwm {
 888			pins = "gpio19";
 889			function = "alt5";
 890			bias-disable;
 891		};
 892	};
 893	pwm1_1_gpio41: pwm1-1-gpio41 {
 894		pin-pwm {
 895			pins = "gpio41";
 896			function = "alt0";
 897			bias-disable;
 898		};
 899	};
 900	pwm0_1_gpio45: pwm0-1-gpio45 {
 901		pin-pwm {
 902			pins = "gpio45";
 903			function = "alt0";
 904			bias-disable;
 905		};
 906	};
 907	pwm0_0_gpio52: pwm0-0-gpio52 {
 908		pin-pwm {
 909			pins = "gpio52";
 910			function = "alt1";
 911			bias-disable;
 912		};
 913	};
 914	pwm0_1_gpio53: pwm0-1-gpio53 {
 915		pin-pwm {
 916			pins = "gpio53";
 917			function = "alt1";
 918			bias-disable;
 919		};
 920	};
 921
 922	rgmii_gpio35: rgmii-gpio35 {
 923		pin-start-stop {
 924			pins = "gpio35";
 925			function = "alt4";
 926		};
 927		pin-rx-ok {
 928			pins = "gpio36";
 929			function = "alt4";
 930		};
 931	};
 932	rgmii_irq_gpio34: rgmii-irq-gpio34 {
 933		pin-irq {
 934			pins = "gpio34";
 935			function = "alt5";
 936		};
 937	};
 938	rgmii_irq_gpio39: rgmii-irq-gpio39 {
 939		pin-irq {
 940			pins = "gpio39";
 941			function = "alt4";
 942		};
 943	};
 944	rgmii_mdio_gpio28: rgmii-mdio-gpio28 {
 945		pins-mdio {
 946			pins = "gpio28",
 947			       "gpio29";
 948			function = "alt5";
 949		};
 950	};
 951	rgmii_mdio_gpio37: rgmii-mdio-gpio37 {
 952		pins-mdio {
 953			pins = "gpio37",
 954			       "gpio38";
 955			function = "alt4";
 956		};
 957	};
 958
 959	spi0_gpio46: spi0-gpio46 {
 960		pins-spi {
 961			pins = "gpio46",
 962			       "gpio47",
 963			       "gpio48",
 964			       "gpio49";
 965			function = "alt2";
 966		};
 967	};
 968	spi2_gpio46: spi2-gpio46 {
 969		pins-spi {
 970			pins = "gpio46",
 971			       "gpio47",
 972			       "gpio48",
 973			       "gpio49",
 974			       "gpio50";
 975			function = "alt5";
 976		};
 977	};
 978	spi3_gpio0: spi3-gpio0 {
 979		pins-spi {
 980			pins = "gpio0",
 981			       "gpio1",
 982			       "gpio2",
 983			       "gpio3";
 984			function = "alt3";
 985		};
 986	};
 987	spi4_gpio4: spi4-gpio4 {
 988		pins-spi {
 989			pins = "gpio4",
 990			       "gpio5",
 991			       "gpio6",
 992			       "gpio7";
 993			function = "alt3";
 994		};
 995	};
 996	spi5_gpio12: spi5-gpio12 {
 997		pins-spi {
 998			pins = "gpio12",
 999			       "gpio13",
1000			       "gpio14",
1001			       "gpio15";
1002			function = "alt3";
1003		};
1004	};
1005	spi6_gpio18: spi6-gpio18 {
1006		pins-spi {
1007			pins = "gpio18",
1008			       "gpio19",
1009			       "gpio20",
1010			       "gpio21";
1011			function = "alt3";
1012		};
1013	};
1014
1015	uart2_gpio0: uart2-gpio0 {
1016		pin-tx {
1017			pins = "gpio0";
1018			function = "alt4";
1019			bias-disable;
1020		};
1021		pin-rx {
1022			pins = "gpio1";
1023			function = "alt4";
1024			bias-pull-up;
1025		};
1026	};
1027	uart2_ctsrts_gpio2: uart2-ctsrts-gpio2 {
1028		pin-cts {
1029			pins = "gpio2";
1030			function = "alt4";
1031			bias-pull-up;
1032		};
1033		pin-rts {
1034			pins = "gpio3";
1035			function = "alt4";
1036			bias-disable;
1037		};
1038	};
1039	uart3_gpio4: uart3-gpio4 {
1040		pin-tx {
1041			pins = "gpio4";
1042			function = "alt4";
1043			bias-disable;
1044		};
1045		pin-rx {
1046			pins = "gpio5";
1047			function = "alt4";
1048			bias-pull-up;
1049		};
1050	};
1051	uart3_ctsrts_gpio6: uart3-ctsrts-gpio6 {
1052		pin-cts {
1053			pins = "gpio6";
1054			function = "alt4";
1055			bias-pull-up;
1056		};
1057		pin-rts {
1058			pins = "gpio7";
1059			function = "alt4";
1060			bias-disable;
1061		};
1062	};
1063	uart4_gpio8: uart4-gpio8 {
1064		pin-tx {
1065			pins = "gpio8";
1066			function = "alt4";
1067			bias-disable;
1068		};
1069		pin-rx {
1070			pins = "gpio9";
1071			function = "alt4";
1072			bias-pull-up;
1073		};
1074	};
1075	uart4_ctsrts_gpio10: uart4-ctsrts-gpio10 {
1076		pin-cts {
1077			pins = "gpio10";
1078			function = "alt4";
1079			bias-pull-up;
1080		};
1081		pin-rts {
1082			pins = "gpio11";
1083			function = "alt4";
1084			bias-disable;
1085		};
1086	};
1087	uart5_gpio12: uart5-gpio12 {
1088		pin-tx {
1089			pins = "gpio12";
1090			function = "alt4";
1091			bias-disable;
1092		};
1093		pin-rx {
1094			pins = "gpio13";
1095			function = "alt4";
1096			bias-pull-up;
1097		};
1098	};
1099	uart5_ctsrts_gpio14: uart5-ctsrts-gpio14 {
1100		pin-cts {
1101			pins = "gpio14";
1102			function = "alt4";
1103			bias-pull-up;
1104		};
1105		pin-rts {
1106			pins = "gpio15";
1107			function = "alt4";
1108			bias-disable;
1109		};
1110	};
1111};
1112
1113&rmem {
1114	#address-cells = <2>;
1115};
1116
1117&cma {
1118	/*
1119	 * arm64 reserves the CMA by default somewhere in ZONE_DMA32,
1120	 * that's not good enough for the BCM2711 as some devices can
1121	 * only address the lower 1G of memory (ZONE_DMA).
1122	 */
1123	alloc-ranges = <0x0 0x00000000 0x40000000>;
1124};
1125
1126&i2c0 {
1127	compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
1128	interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
1129};
1130
1131&i2c1 {
1132	compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
1133	interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
1134};
1135
1136&mailbox {
1137	interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
1138};
1139
1140&sdhci {
1141	interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
1142};
1143
1144&sdhost {
1145	interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
1146};
1147
1148&spi {
1149	interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
1150};
1151
1152&spi1 {
1153	interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1154};
1155
1156&spi2 {
1157	interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1158};
1159
1160&system_timer {
1161	interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
1162		     <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
1163		     <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
1164		     <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
1165};
1166
1167&txp {
1168	interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
1169};
1170
1171&uart0 {
1172	interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
1173};
1174
1175&uart1 {
1176	interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1177};
1178
1179&usb {
1180	interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
1181};
1182
1183&vec {
1184	compatible = "brcm,bcm2711-vec";
1185	interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
1186};