Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 #include "bcm283x.dtsi"
0003 
0004 #include <dt-bindings/interrupt-controller/arm-gic.h>
0005 #include <dt-bindings/soc/bcm2835-pm.h>
0006 
0007 / {
0008         compatible = "brcm,bcm2711";
0009 
0010         #address-cells = <2>;
0011         #size-cells = <1>;
0012 
0013         interrupt-parent = <&gicv2>;
0014 
0015         vc4: gpu {
0016                 compatible = "brcm,bcm2711-vc5";
0017                 status = "disabled";
0018         };
0019 
0020         clk_27MHz: clk-27M {
0021                 #clock-cells = <0>;
0022                 compatible = "fixed-clock";
0023                 clock-frequency = <27000000>;
0024                 clock-output-names = "27MHz-clock";
0025         };
0026 
0027         clk_108MHz: clk-108M {
0028                 #clock-cells = <0>;
0029                 compatible = "fixed-clock";
0030                 clock-frequency = <108000000>;
0031                 clock-output-names = "108MHz-clock";
0032         };
0033 
0034         soc {
0035                 /*
0036                  * Defined ranges:
0037                  *   Common BCM283x peripherals
0038                  *   BCM2711-specific peripherals
0039                  *   ARM-local peripherals
0040                  */
0041                 ranges = <0x7e000000  0x0 0xfe000000  0x01800000>,
0042                          <0x7c000000  0x0 0xfc000000  0x02000000>,
0043                          <0x40000000  0x0 0xff800000  0x00800000>;
0044                 /* Emulate a contiguous 30-bit address range for DMA */
0045                 dma-ranges = <0xc0000000  0x0 0x00000000  0x40000000>;
0046 
0047                 /*
0048                  * This node is the provider for the enable-method for
0049                  * bringing up secondary cores.
0050                  */
0051                 local_intc: local_intc@40000000 {
0052                         compatible = "brcm,bcm2836-l1-intc";
0053                         reg = <0x40000000 0x100>;
0054                 };
0055 
0056                 gicv2: interrupt-controller@40041000 {
0057                         interrupt-controller;
0058                         #interrupt-cells = <3>;
0059                         compatible = "arm,gic-400";
0060                         reg =   <0x40041000 0x1000>,
0061                                 <0x40042000 0x2000>,
0062                                 <0x40044000 0x2000>,
0063                                 <0x40046000 0x2000>;
0064                         interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
0065                                                  IRQ_TYPE_LEVEL_HIGH)>;
0066                 };
0067 
0068                 avs_monitor: avs-monitor@7d5d2000 {
0069                         compatible = "brcm,bcm2711-avs-monitor",
0070                                      "syscon", "simple-mfd";
0071                         reg = <0x7d5d2000 0xf00>;
0072 
0073                         thermal: thermal {
0074                                 compatible = "brcm,bcm2711-thermal";
0075                                 #thermal-sensor-cells = <0>;
0076                         };
0077                 };
0078 
0079                 dma: dma@7e007000 {
0080                         compatible = "brcm,bcm2835-dma";
0081                         reg = <0x7e007000 0xb00>;
0082                         interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
0083                                      <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
0084                                      <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
0085                                      <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
0086                                      <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
0087                                      <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
0088                                      <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
0089                                      /* DMA lite 7 - 10 */
0090                                      <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
0091                                      <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
0092                                      <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
0093                                      <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
0094                         interrupt-names = "dma0",
0095                                           "dma1",
0096                                           "dma2",
0097                                           "dma3",
0098                                           "dma4",
0099                                           "dma5",
0100                                           "dma6",
0101                                           "dma7",
0102                                           "dma8",
0103                                           "dma9",
0104                                           "dma10";
0105                         #dma-cells = <1>;
0106                         brcm,dma-channel-mask = <0x07f5>;
0107                 };
0108 
0109                 pm: watchdog@7e100000 {
0110                         compatible = "brcm,bcm2711-pm", "brcm,bcm2835-pm-wdt";
0111                         #power-domain-cells = <1>;
0112                         #reset-cells = <1>;
0113                         reg = <0x7e100000 0x114>,
0114                               <0x7e00a000 0x24>,
0115                               <0x7ec11000 0x20>;
0116                         reg-names = "pm", "asb", "rpivid_asb";
0117                         clocks = <&clocks BCM2835_CLOCK_V3D>,
0118                                  <&clocks BCM2835_CLOCK_PERI_IMAGE>,
0119                                  <&clocks BCM2835_CLOCK_H264>,
0120                                  <&clocks BCM2835_CLOCK_ISP>;
0121                         clock-names = "v3d", "peri_image", "h264", "isp";
0122                         system-power-controller;
0123                 };
0124 
0125                 rng@7e104000 {
0126                         compatible = "brcm,bcm2711-rng200";
0127                         reg = <0x7e104000 0x28>;
0128                 };
0129 
0130                 uart2: serial@7e201400 {
0131                         compatible = "arm,pl011", "arm,primecell";
0132                         reg = <0x7e201400 0x200>;
0133                         interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
0134                         clocks = <&clocks BCM2835_CLOCK_UART>,
0135                                  <&clocks BCM2835_CLOCK_VPU>;
0136                         clock-names = "uartclk", "apb_pclk";
0137                         arm,primecell-periphid = <0x00241011>;
0138                         status = "disabled";
0139                 };
0140 
0141                 uart3: serial@7e201600 {
0142                         compatible = "arm,pl011", "arm,primecell";
0143                         reg = <0x7e201600 0x200>;
0144                         interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
0145                         clocks = <&clocks BCM2835_CLOCK_UART>,
0146                                  <&clocks BCM2835_CLOCK_VPU>;
0147                         clock-names = "uartclk", "apb_pclk";
0148                         arm,primecell-periphid = <0x00241011>;
0149                         status = "disabled";
0150                 };
0151 
0152                 uart4: serial@7e201800 {
0153                         compatible = "arm,pl011", "arm,primecell";
0154                         reg = <0x7e201800 0x200>;
0155                         interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
0156                         clocks = <&clocks BCM2835_CLOCK_UART>,
0157                                  <&clocks BCM2835_CLOCK_VPU>;
0158                         clock-names = "uartclk", "apb_pclk";
0159                         arm,primecell-periphid = <0x00241011>;
0160                         status = "disabled";
0161                 };
0162 
0163                 uart5: serial@7e201a00 {
0164                         compatible = "arm,pl011", "arm,primecell";
0165                         reg = <0x7e201a00 0x200>;
0166                         interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
0167                         clocks = <&clocks BCM2835_CLOCK_UART>,
0168                                  <&clocks BCM2835_CLOCK_VPU>;
0169                         clock-names = "uartclk", "apb_pclk";
0170                         arm,primecell-periphid = <0x00241011>;
0171                         status = "disabled";
0172                 };
0173 
0174                 spi3: spi@7e204600 {
0175                         compatible = "brcm,bcm2835-spi";
0176                         reg = <0x7e204600 0x0200>;
0177                         interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
0178                         clocks = <&clocks BCM2835_CLOCK_VPU>;
0179                         #address-cells = <1>;
0180                         #size-cells = <0>;
0181                         status = "disabled";
0182                 };
0183 
0184                 spi4: spi@7e204800 {
0185                         compatible = "brcm,bcm2835-spi";
0186                         reg = <0x7e204800 0x0200>;
0187                         interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
0188                         clocks = <&clocks BCM2835_CLOCK_VPU>;
0189                         #address-cells = <1>;
0190                         #size-cells = <0>;
0191                         status = "disabled";
0192                 };
0193 
0194                 spi5: spi@7e204a00 {
0195                         compatible = "brcm,bcm2835-spi";
0196                         reg = <0x7e204a00 0x0200>;
0197                         interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
0198                         clocks = <&clocks BCM2835_CLOCK_VPU>;
0199                         #address-cells = <1>;
0200                         #size-cells = <0>;
0201                         status = "disabled";
0202                 };
0203 
0204                 spi6: spi@7e204c00 {
0205                         compatible = "brcm,bcm2835-spi";
0206                         reg = <0x7e204c00 0x0200>;
0207                         interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
0208                         clocks = <&clocks BCM2835_CLOCK_VPU>;
0209                         #address-cells = <1>;
0210                         #size-cells = <0>;
0211                         status = "disabled";
0212                 };
0213 
0214                 i2c3: i2c@7e205600 {
0215                         compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
0216                         reg = <0x7e205600 0x200>;
0217                         interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
0218                         clocks = <&clocks BCM2835_CLOCK_VPU>;
0219                         #address-cells = <1>;
0220                         #size-cells = <0>;
0221                         status = "disabled";
0222                 };
0223 
0224                 i2c4: i2c@7e205800 {
0225                         compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
0226                         reg = <0x7e205800 0x200>;
0227                         interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
0228                         clocks = <&clocks BCM2835_CLOCK_VPU>;
0229                         #address-cells = <1>;
0230                         #size-cells = <0>;
0231                         status = "disabled";
0232                 };
0233 
0234                 i2c5: i2c@7e205a00 {
0235                         compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
0236                         reg = <0x7e205a00 0x200>;
0237                         interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
0238                         clocks = <&clocks BCM2835_CLOCK_VPU>;
0239                         #address-cells = <1>;
0240                         #size-cells = <0>;
0241                         status = "disabled";
0242                 };
0243 
0244                 i2c6: i2c@7e205c00 {
0245                         compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
0246                         reg = <0x7e205c00 0x200>;
0247                         interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
0248                         clocks = <&clocks BCM2835_CLOCK_VPU>;
0249                         #address-cells = <1>;
0250                         #size-cells = <0>;
0251                         status = "disabled";
0252                 };
0253 
0254                 pixelvalve0: pixelvalve@7e206000 {
0255                         compatible = "brcm,bcm2711-pixelvalve0";
0256                         reg = <0x7e206000 0x100>;
0257                         interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
0258                         status = "disabled";
0259                 };
0260 
0261                 pixelvalve1: pixelvalve@7e207000 {
0262                         compatible = "brcm,bcm2711-pixelvalve1";
0263                         reg = <0x7e207000 0x100>;
0264                         interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
0265                         status = "disabled";
0266                 };
0267 
0268                 pixelvalve2: pixelvalve@7e20a000 {
0269                         compatible = "brcm,bcm2711-pixelvalve2";
0270                         reg = <0x7e20a000 0x100>;
0271                         interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
0272                         status = "disabled";
0273                 };
0274 
0275                 pwm1: pwm@7e20c800 {
0276                         compatible = "brcm,bcm2835-pwm";
0277                         reg = <0x7e20c800 0x28>;
0278                         clocks = <&clocks BCM2835_CLOCK_PWM>;
0279                         assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
0280                         assigned-clock-rates = <10000000>;
0281                         #pwm-cells = <2>;
0282                         status = "disabled";
0283                 };
0284 
0285                 pixelvalve4: pixelvalve@7e216000 {
0286                         compatible = "brcm,bcm2711-pixelvalve4";
0287                         reg = <0x7e216000 0x100>;
0288                         interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
0289                         status = "disabled";
0290                 };
0291 
0292                 hvs: hvs@7e400000 {
0293                         compatible = "brcm,bcm2711-hvs";
0294                         reg = <0x7e400000 0x8000>;
0295                         interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
0296                 };
0297 
0298                 pixelvalve3: pixelvalve@7ec12000 {
0299                         compatible = "brcm,bcm2711-pixelvalve3";
0300                         reg = <0x7ec12000 0x100>;
0301                         interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
0302                         status = "disabled";
0303                 };
0304 
0305                 vec: vec@7ec13000 {
0306                         compatible = "brcm,bcm2711-vec";
0307                         reg = <0x7ec13000 0x1000>;
0308                         clocks = <&clocks BCM2835_CLOCK_VEC>;
0309                         interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
0310                         status = "disabled";
0311                 };
0312 
0313                 dvp: clock@7ef00000 {
0314                         compatible = "brcm,brcm2711-dvp";
0315                         reg = <0x7ef00000 0x10>;
0316                         clocks = <&clk_108MHz>;
0317                         #clock-cells = <1>;
0318                         #reset-cells = <1>;
0319                 };
0320 
0321                 aon_intr: interrupt-controller@7ef00100 {
0322                         compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
0323                         reg = <0x7ef00100 0x30>;
0324                         interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
0325                         interrupt-controller;
0326                         #interrupt-cells = <1>;
0327                 };
0328 
0329                 hdmi0: hdmi@7ef00700 {
0330                         compatible = "brcm,bcm2711-hdmi0";
0331                         reg = <0x7ef00700 0x300>,
0332                               <0x7ef00300 0x200>,
0333                               <0x7ef00f00 0x80>,
0334                               <0x7ef00f80 0x80>,
0335                               <0x7ef01b00 0x200>,
0336                               <0x7ef01f00 0x400>,
0337                               <0x7ef00200 0x80>,
0338                               <0x7ef04300 0x100>,
0339                               <0x7ef20000 0x100>;
0340                         reg-names = "hdmi",
0341                                     "dvp",
0342                                     "phy",
0343                                     "rm",
0344                                     "packet",
0345                                     "metadata",
0346                                     "csc",
0347                                     "cec",
0348                                     "hd";
0349                         clock-names = "hdmi", "bvb", "audio", "cec";
0350                         resets = <&dvp 0>;
0351                         interrupt-parent = <&aon_intr>;
0352                         interrupts = <0>, <1>, <2>,
0353                                      <3>, <4>, <5>;
0354                         interrupt-names = "cec-tx", "cec-rx", "cec-low",
0355                                           "wakeup", "hpd-connected", "hpd-removed";
0356                         ddc = <&ddc0>;
0357                         dmas = <&dma 10>;
0358                         dma-names = "audio-rx";
0359                         status = "disabled";
0360                 };
0361 
0362                 ddc0: i2c@7ef04500 {
0363                         compatible = "brcm,bcm2711-hdmi-i2c";
0364                         reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>;
0365                         reg-names = "bsc", "auto-i2c";
0366                         clock-frequency = <97500>;
0367                         status = "disabled";
0368                 };
0369 
0370                 hdmi1: hdmi@7ef05700 {
0371                         compatible = "brcm,bcm2711-hdmi1";
0372                         reg = <0x7ef05700 0x300>,
0373                               <0x7ef05300 0x200>,
0374                               <0x7ef05f00 0x80>,
0375                               <0x7ef05f80 0x80>,
0376                               <0x7ef06b00 0x200>,
0377                               <0x7ef06f00 0x400>,
0378                               <0x7ef00280 0x80>,
0379                               <0x7ef09300 0x100>,
0380                               <0x7ef20000 0x100>;
0381                         reg-names = "hdmi",
0382                                     "dvp",
0383                                     "phy",
0384                                     "rm",
0385                                     "packet",
0386                                     "metadata",
0387                                     "csc",
0388                                     "cec",
0389                                     "hd";
0390                         ddc = <&ddc1>;
0391                         clock-names = "hdmi", "bvb", "audio", "cec";
0392                         resets = <&dvp 1>;
0393                         interrupt-parent = <&aon_intr>;
0394                         interrupts = <8>, <7>, <6>,
0395                                      <9>, <10>, <11>;
0396                         interrupt-names = "cec-tx", "cec-rx", "cec-low",
0397                                           "wakeup", "hpd-connected", "hpd-removed";
0398                         dmas = <&dma 17>;
0399                         dma-names = "audio-rx";
0400                         status = "disabled";
0401                 };
0402 
0403                 ddc1: i2c@7ef09500 {
0404                         compatible = "brcm,bcm2711-hdmi-i2c";
0405                         reg = <0x7ef09500 0x100>, <0x7ef05b00 0x300>;
0406                         reg-names = "bsc", "auto-i2c";
0407                         clock-frequency = <97500>;
0408                         status = "disabled";
0409                 };
0410         };
0411 
0412         /*
0413          * emmc2 has different DMA constraints based on SoC revisions. It was
0414          * moved into its own bus, so as for RPi4's firmware to update them.
0415          * The firmware will find whether the emmc2bus alias is defined, and if
0416          * so, it'll edit the dma-ranges property below accordingly.
0417          */
0418         emmc2bus: emmc2bus {
0419                 compatible = "simple-bus";
0420                 #address-cells = <2>;
0421                 #size-cells = <1>;
0422 
0423                 ranges = <0x0 0x7e000000  0x0 0xfe000000  0x01800000>;
0424                 dma-ranges = <0x0 0xc0000000  0x0 0x00000000  0x40000000>;
0425 
0426                 emmc2: mmc@7e340000 {
0427                         compatible = "brcm,bcm2711-emmc2";
0428                         reg = <0x0 0x7e340000 0x100>;
0429                         interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
0430                         clocks = <&clocks BCM2711_CLOCK_EMMC2>;
0431                         status = "disabled";
0432                 };
0433         };
0434 
0435         arm-pmu {
0436                 compatible = "arm,cortex-a72-pmu", "arm,armv8-pmuv3";
0437                 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
0438                         <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
0439                         <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
0440                         <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
0441                 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
0442         };
0443 
0444         timer {
0445                 compatible = "arm,armv8-timer";
0446                 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
0447                                           IRQ_TYPE_LEVEL_LOW)>,
0448                              <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
0449                                           IRQ_TYPE_LEVEL_LOW)>,
0450                              <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
0451                                           IRQ_TYPE_LEVEL_LOW)>,
0452                              <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
0453                                           IRQ_TYPE_LEVEL_LOW)>;
0454                 /* This only applies to the ARMv7 stub */
0455                 arm,cpu-registers-not-fw-configured;
0456         };
0457 
0458         cpus: cpus {
0459                 #address-cells = <1>;
0460                 #size-cells = <0>;
0461                 enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
0462 
0463                 /* Source for d/i-cache-line-size and d/i-cache-sets
0464                  * https://developer.arm.com/documentation/100095/0003
0465                  * /Level-1-Memory-System/About-the-L1-memory-system?lang=en
0466                  * Source for d/i-cache-size
0467                  * https://www.raspberrypi.com/documentation/computers
0468                  * /processors.html#bcm2711
0469                  */
0470                 cpu0: cpu@0 {
0471                         device_type = "cpu";
0472                         compatible = "arm,cortex-a72";
0473                         reg = <0>;
0474                         enable-method = "spin-table";
0475                         cpu-release-addr = <0x0 0x000000d8>;
0476                         d-cache-size = <0x8000>;
0477                         d-cache-line-size = <64>;
0478                         d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
0479                         i-cache-size = <0xc000>;
0480                         i-cache-line-size = <64>;
0481                         i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
0482                         next-level-cache = <&l2>;
0483                 };
0484 
0485                 cpu1: cpu@1 {
0486                         device_type = "cpu";
0487                         compatible = "arm,cortex-a72";
0488                         reg = <1>;
0489                         enable-method = "spin-table";
0490                         cpu-release-addr = <0x0 0x000000e0>;
0491                         d-cache-size = <0x8000>;
0492                         d-cache-line-size = <64>;
0493                         d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
0494                         i-cache-size = <0xc000>;
0495                         i-cache-line-size = <64>;
0496                         i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
0497                         next-level-cache = <&l2>;
0498                 };
0499 
0500                 cpu2: cpu@2 {
0501                         device_type = "cpu";
0502                         compatible = "arm,cortex-a72";
0503                         reg = <2>;
0504                         enable-method = "spin-table";
0505                         cpu-release-addr = <0x0 0x000000e8>;
0506                         d-cache-size = <0x8000>;
0507                         d-cache-line-size = <64>;
0508                         d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
0509                         i-cache-size = <0xc000>;
0510                         i-cache-line-size = <64>;
0511                         i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
0512                         next-level-cache = <&l2>;
0513                 };
0514 
0515                 cpu3: cpu@3 {
0516                         device_type = "cpu";
0517                         compatible = "arm,cortex-a72";
0518                         reg = <3>;
0519                         enable-method = "spin-table";
0520                         cpu-release-addr = <0x0 0x000000f0>;
0521                         d-cache-size = <0x8000>;
0522                         d-cache-line-size = <64>;
0523                         d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
0524                         i-cache-size = <0xc000>;
0525                         i-cache-line-size = <64>;
0526                         i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
0527                         next-level-cache = <&l2>;
0528                 };
0529 
0530                 /* Source for d/i-cache-line-size and d/i-cache-sets
0531                  *  https://developer.arm.com/documentation/100095/0003
0532                  *  /Level-2-Memory-System/About-the-L2-memory-system?lang=en
0533                  *  Source for d/i-cache-size
0534                  *  https://www.raspberrypi.com/documentation/computers
0535                  *  /processors.html#bcm2711
0536                  */
0537                 l2: l2-cache0 {
0538                         compatible = "cache";
0539                         cache-size = <0x100000>;
0540                         cache-line-size = <64>;
0541                         cache-sets = <1024>; // 1MiB(size)/64(line-size)=16384ways/16-way set
0542                         cache-level = <2>;
0543                 };
0544         };
0545 
0546         scb {
0547                 compatible = "simple-bus";
0548                 #address-cells = <2>;
0549                 #size-cells = <1>;
0550 
0551                 ranges = <0x0 0x7c000000  0x0 0xfc000000  0x03800000>,
0552                          <0x6 0x00000000  0x6 0x00000000  0x40000000>;
0553 
0554                 pcie0: pcie@7d500000 {
0555                         compatible = "brcm,bcm2711-pcie";
0556                         reg = <0x0 0x7d500000 0x9310>;
0557                         device_type = "pci";
0558                         #address-cells = <3>;
0559                         #interrupt-cells = <1>;
0560                         #size-cells = <2>;
0561                         interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
0562                                      <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
0563                         interrupt-names = "pcie", "msi";
0564                         interrupt-map-mask = <0x0 0x0 0x0 0x7>;
0565                         interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143
0566                                                         IRQ_TYPE_LEVEL_HIGH>,
0567                                         <0 0 0 2 &gicv2 GIC_SPI 144
0568                                                         IRQ_TYPE_LEVEL_HIGH>,
0569                                         <0 0 0 3 &gicv2 GIC_SPI 145
0570                                                         IRQ_TYPE_LEVEL_HIGH>,
0571                                         <0 0 0 4 &gicv2 GIC_SPI 146
0572                                                         IRQ_TYPE_LEVEL_HIGH>;
0573                         msi-controller;
0574                         msi-parent = <&pcie0>;
0575 
0576                         ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000
0577                                   0x0 0x04000000>;
0578                         /*
0579                          * The wrapper around the PCIe block has a bug
0580                          * preventing it from accessing beyond the first 3GB of
0581                          * memory.
0582                          */
0583                         dma-ranges = <0x02000000 0x0 0x00000000 0x0 0x00000000
0584                                       0x0 0xc0000000>;
0585                         brcm,enable-ssc;
0586                 };
0587 
0588                 genet: ethernet@7d580000 {
0589                         compatible = "brcm,bcm2711-genet-v5";
0590                         reg = <0x0 0x7d580000 0x10000>;
0591                         #address-cells = <0x1>;
0592                         #size-cells = <0x1>;
0593                         interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
0594                                      <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
0595                         status = "disabled";
0596 
0597                         genet_mdio: mdio@e14 {
0598                                 compatible = "brcm,genet-mdio-v5";
0599                                 reg = <0xe14 0x8>;
0600                                 reg-names = "mdio";
0601                                 #address-cells = <0x1>;
0602                                 #size-cells = <0x0>;
0603                         };
0604                 };
0605 
0606                 v3d: gpu@7ec00000 {
0607                         compatible = "brcm,2711-v3d";
0608                         reg = <0x0 0x7ec00000 0x4000>,
0609                               <0x0 0x7ec04000 0x4000>;
0610                         reg-names = "hub", "core0";
0611 
0612                         power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
0613                         resets = <&pm BCM2835_RESET_V3D>;
0614                         interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
0615                 };
0616         };
0617 };
0618 
0619 &clk_osc {
0620         clock-frequency = <54000000>;
0621 };
0622 
0623 &clocks {
0624         compatible = "brcm,bcm2711-cprman";
0625 };
0626 
0627 &cpu_thermal {
0628         coefficients = <(-487) 410040>;
0629         thermal-sensors = <&thermal>;
0630 };
0631 
0632 &dsi0 {
0633         interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
0634 };
0635 
0636 &dsi1 {
0637         interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
0638         compatible = "brcm,bcm2711-dsi1";
0639 };
0640 
0641 &gpio {
0642         compatible = "brcm,bcm2711-gpio";
0643         interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
0644                      <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
0645                      <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
0646                      <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
0647 
0648         gpio-ranges = <&gpio 0 0 58>;
0649 
0650         gpclk0_gpio49: gpclk0_gpio49 {
0651                 pin-gpclk {
0652                         pins = "gpio49";
0653                         function = "alt1";
0654                         bias-disable;
0655                 };
0656         };
0657         gpclk1_gpio50: gpclk1_gpio50 {
0658                 pin-gpclk {
0659                         pins = "gpio50";
0660                         function = "alt1";
0661                         bias-disable;
0662                 };
0663         };
0664         gpclk2_gpio51: gpclk2_gpio51 {
0665                 pin-gpclk {
0666                         pins = "gpio51";
0667                         function = "alt1";
0668                         bias-disable;
0669                 };
0670         };
0671 
0672         i2c0_gpio46: i2c0_gpio46 {
0673                 pin-sda {
0674                         function = "alt0";
0675                         pins = "gpio46";
0676                         bias-pull-up;
0677                 };
0678                 pin-scl {
0679                         function = "alt0";
0680                         pins = "gpio47";
0681                         bias-disable;
0682                 };
0683         };
0684         i2c1_gpio46: i2c1_gpio46 {
0685                 pin-sda {
0686                         function = "alt1";
0687                         pins = "gpio46";
0688                         bias-pull-up;
0689                 };
0690                 pin-scl {
0691                         function = "alt1";
0692                         pins = "gpio47";
0693                         bias-disable;
0694                 };
0695         };
0696         i2c3_gpio2: i2c3_gpio2 {
0697                 pin-sda {
0698                         function = "alt5";
0699                         pins = "gpio2";
0700                         bias-pull-up;
0701                 };
0702                 pin-scl {
0703                         function = "alt5";
0704                         pins = "gpio3";
0705                         bias-disable;
0706                 };
0707         };
0708         i2c3_gpio4: i2c3_gpio4 {
0709                 pin-sda {
0710                         function = "alt5";
0711                         pins = "gpio4";
0712                         bias-pull-up;
0713                 };
0714                 pin-scl {
0715                         function = "alt5";
0716                         pins = "gpio5";
0717                         bias-disable;
0718                 };
0719         };
0720         i2c4_gpio6: i2c4_gpio6 {
0721                 pin-sda {
0722                         function = "alt5";
0723                         pins = "gpio6";
0724                         bias-pull-up;
0725                 };
0726                 pin-scl {
0727                         function = "alt5";
0728                         pins = "gpio7";
0729                         bias-disable;
0730                 };
0731         };
0732         i2c4_gpio8: i2c4_gpio8 {
0733                 pin-sda {
0734                         function = "alt5";
0735                         pins = "gpio8";
0736                         bias-pull-up;
0737                 };
0738                 pin-scl {
0739                         function = "alt5";
0740                         pins = "gpio9";
0741                         bias-disable;
0742                 };
0743         };
0744         i2c5_gpio10: i2c5_gpio10 {
0745                 pin-sda {
0746                         function = "alt5";
0747                         pins = "gpio10";
0748                         bias-pull-up;
0749                 };
0750                 pin-scl {
0751                         function = "alt5";
0752                         pins = "gpio11";
0753                         bias-disable;
0754                 };
0755         };
0756         i2c5_gpio12: i2c5_gpio12 {
0757                 pin-sda {
0758                         function = "alt5";
0759                         pins = "gpio12";
0760                         bias-pull-up;
0761                 };
0762                 pin-scl {
0763                         function = "alt5";
0764                         pins = "gpio13";
0765                         bias-disable;
0766                 };
0767         };
0768         i2c6_gpio0: i2c6_gpio0 {
0769                 pin-sda {
0770                         function = "alt5";
0771                         pins = "gpio0";
0772                         bias-pull-up;
0773                 };
0774                 pin-scl {
0775                         function = "alt5";
0776                         pins = "gpio1";
0777                         bias-disable;
0778                 };
0779         };
0780         i2c6_gpio22: i2c6_gpio22 {
0781                 pin-sda {
0782                         function = "alt5";
0783                         pins = "gpio22";
0784                         bias-pull-up;
0785                 };
0786                 pin-scl {
0787                         function = "alt5";
0788                         pins = "gpio23";
0789                         bias-disable;
0790                 };
0791         };
0792         i2c_slave_gpio8: i2c_slave_gpio8 {
0793                 pins-i2c-slave {
0794                         pins = "gpio8",
0795                                "gpio9",
0796                                "gpio10",
0797                                "gpio11";
0798                         function = "alt3";
0799                 };
0800         };
0801 
0802         jtag_gpio48: jtag_gpio48 {
0803                 pins-jtag {
0804                         pins = "gpio48",
0805                                "gpio49",
0806                                "gpio50",
0807                                "gpio51",
0808                                "gpio52",
0809                                "gpio53";
0810                         function = "alt4";
0811                 };
0812         };
0813 
0814         mii_gpio28: mii_gpio28 {
0815                 pins-mii {
0816                         pins = "gpio28",
0817                                "gpio29",
0818                                "gpio30",
0819                                "gpio31";
0820                         function = "alt4";
0821                 };
0822         };
0823         mii_gpio36: mii_gpio36 {
0824                 pins-mii {
0825                         pins = "gpio36",
0826                                "gpio37",
0827                                "gpio38",
0828                                "gpio39";
0829                         function = "alt5";
0830                 };
0831         };
0832 
0833         pcm_gpio50: pcm_gpio50 {
0834                 pins-pcm {
0835                         pins = "gpio50",
0836                                "gpio51",
0837                                "gpio52",
0838                                "gpio53";
0839                         function = "alt2";
0840                 };
0841         };
0842 
0843         pwm0_0_gpio12: pwm0_0_gpio12 {
0844                 pin-pwm {
0845                         pins = "gpio12";
0846                         function = "alt0";
0847                         bias-disable;
0848                 };
0849         };
0850         pwm0_0_gpio18: pwm0_0_gpio18 {
0851                 pin-pwm {
0852                         pins = "gpio18";
0853                         function = "alt5";
0854                         bias-disable;
0855                 };
0856         };
0857         pwm1_0_gpio40: pwm1_0_gpio40 {
0858                 pin-pwm {
0859                         pins = "gpio40";
0860                         function = "alt0";
0861                         bias-disable;
0862                 };
0863         };
0864         pwm0_1_gpio13: pwm0_1_gpio13 {
0865                 pin-pwm {
0866                         pins = "gpio13";
0867                         function = "alt0";
0868                         bias-disable;
0869                 };
0870         };
0871         pwm0_1_gpio19: pwm0_1_gpio19 {
0872                 pin-pwm {
0873                         pins = "gpio19";
0874                         function = "alt5";
0875                         bias-disable;
0876                 };
0877         };
0878         pwm1_1_gpio41: pwm1_1_gpio41 {
0879                 pin-pwm {
0880                         pins = "gpio41";
0881                         function = "alt0";
0882                         bias-disable;
0883                 };
0884         };
0885         pwm0_1_gpio45: pwm0_1_gpio45 {
0886                 pin-pwm {
0887                         pins = "gpio45";
0888                         function = "alt0";
0889                         bias-disable;
0890                 };
0891         };
0892         pwm0_0_gpio52: pwm0_0_gpio52 {
0893                 pin-pwm {
0894                         pins = "gpio52";
0895                         function = "alt1";
0896                         bias-disable;
0897                 };
0898         };
0899         pwm0_1_gpio53: pwm0_1_gpio53 {
0900                 pin-pwm {
0901                         pins = "gpio53";
0902                         function = "alt1";
0903                         bias-disable;
0904                 };
0905         };
0906 
0907         rgmii_gpio35: rgmii_gpio35 {
0908                 pin-start-stop {
0909                         pins = "gpio35";
0910                         function = "alt4";
0911                 };
0912                 pin-rx-ok {
0913                         pins = "gpio36";
0914                         function = "alt4";
0915                 };
0916         };
0917         rgmii_irq_gpio34: rgmii_irq_gpio34 {
0918                 pin-irq {
0919                         pins = "gpio34";
0920                         function = "alt5";
0921                 };
0922         };
0923         rgmii_irq_gpio39: rgmii_irq_gpio39 {
0924                 pin-irq {
0925                         pins = "gpio39";
0926                         function = "alt4";
0927                 };
0928         };
0929         rgmii_mdio_gpio28: rgmii_mdio_gpio28 {
0930                 pins-mdio {
0931                         pins = "gpio28",
0932                                "gpio29";
0933                         function = "alt5";
0934                 };
0935         };
0936         rgmii_mdio_gpio37: rgmii_mdio_gpio37 {
0937                 pins-mdio {
0938                         pins = "gpio37",
0939                                "gpio38";
0940                         function = "alt4";
0941                 };
0942         };
0943 
0944         spi0_gpio46: spi0_gpio46 {
0945                 pins-spi {
0946                         pins = "gpio46",
0947                                "gpio47",
0948                                "gpio48",
0949                                "gpio49";
0950                         function = "alt2";
0951                 };
0952         };
0953         spi2_gpio46: spi2_gpio46 {
0954                 pins-spi {
0955                         pins = "gpio46",
0956                                "gpio47",
0957                                "gpio48",
0958                                "gpio49",
0959                                "gpio50";
0960                         function = "alt5";
0961                 };
0962         };
0963         spi3_gpio0: spi3_gpio0 {
0964                 pins-spi {
0965                         pins = "gpio0",
0966                                "gpio1",
0967                                "gpio2",
0968                                "gpio3";
0969                         function = "alt3";
0970                 };
0971         };
0972         spi4_gpio4: spi4_gpio4 {
0973                 pins-spi {
0974                         pins = "gpio4",
0975                                "gpio5",
0976                                "gpio6",
0977                                "gpio7";
0978                         function = "alt3";
0979                 };
0980         };
0981         spi5_gpio12: spi5_gpio12 {
0982                 pins-spi {
0983                         pins = "gpio12",
0984                                "gpio13",
0985                                "gpio14",
0986                                "gpio15";
0987                         function = "alt3";
0988                 };
0989         };
0990         spi6_gpio18: spi6_gpio18 {
0991                 pins-spi {
0992                         pins = "gpio18",
0993                                "gpio19",
0994                                "gpio20",
0995                                "gpio21";
0996                         function = "alt3";
0997                 };
0998         };
0999 
1000         uart2_gpio0: uart2_gpio0 {
1001                 pin-tx {
1002                         pins = "gpio0";
1003                         function = "alt4";
1004                         bias-disable;
1005                 };
1006                 pin-rx {
1007                         pins = "gpio1";
1008                         function = "alt4";
1009                         bias-pull-up;
1010                 };
1011         };
1012         uart2_ctsrts_gpio2: uart2_ctsrts_gpio2 {
1013                 pin-cts {
1014                         pins = "gpio2";
1015                         function = "alt4";
1016                         bias-pull-up;
1017                 };
1018                 pin-rts {
1019                         pins = "gpio3";
1020                         function = "alt4";
1021                         bias-disable;
1022                 };
1023         };
1024         uart3_gpio4: uart3_gpio4 {
1025                 pin-tx {
1026                         pins = "gpio4";
1027                         function = "alt4";
1028                         bias-disable;
1029                 };
1030                 pin-rx {
1031                         pins = "gpio5";
1032                         function = "alt4";
1033                         bias-pull-up;
1034                 };
1035         };
1036         uart3_ctsrts_gpio6: uart3_ctsrts_gpio6 {
1037                 pin-cts {
1038                         pins = "gpio6";
1039                         function = "alt4";
1040                         bias-pull-up;
1041                 };
1042                 pin-rts {
1043                         pins = "gpio7";
1044                         function = "alt4";
1045                         bias-disable;
1046                 };
1047         };
1048         uart4_gpio8: uart4_gpio8 {
1049                 pin-tx {
1050                         pins = "gpio8";
1051                         function = "alt4";
1052                         bias-disable;
1053                 };
1054                 pin-rx {
1055                         pins = "gpio9";
1056                         function = "alt4";
1057                         bias-pull-up;
1058                 };
1059         };
1060         uart4_ctsrts_gpio10: uart4_ctsrts_gpio10 {
1061                 pin-cts {
1062                         pins = "gpio10";
1063                         function = "alt4";
1064                         bias-pull-up;
1065                 };
1066                 pin-rts {
1067                         pins = "gpio11";
1068                         function = "alt4";
1069                         bias-disable;
1070                 };
1071         };
1072         uart5_gpio12: uart5_gpio12 {
1073                 pin-tx {
1074                         pins = "gpio12";
1075                         function = "alt4";
1076                         bias-disable;
1077                 };
1078                 pin-rx {
1079                         pins = "gpio13";
1080                         function = "alt4";
1081                         bias-pull-up;
1082                 };
1083         };
1084         uart5_ctsrts_gpio14: uart5_ctsrts_gpio14 {
1085                 pin-cts {
1086                         pins = "gpio14";
1087                         function = "alt4";
1088                         bias-pull-up;
1089                 };
1090                 pin-rts {
1091                         pins = "gpio15";
1092                         function = "alt4";
1093                         bias-disable;
1094                 };
1095         };
1096 };
1097 
1098 &rmem {
1099         #address-cells = <2>;
1100 };
1101 
1102 &cma {
1103         /*
1104          * arm64 reserves the CMA by default somewhere in ZONE_DMA32,
1105          * that's not good enough for the BCM2711 as some devices can
1106          * only address the lower 1G of memory (ZONE_DMA).
1107          */
1108         alloc-ranges = <0x0 0x00000000 0x40000000>;
1109 };
1110 
1111 &i2c0 {
1112         compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
1113         interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
1114 };
1115 
1116 &i2c1 {
1117         compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
1118         interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
1119 };
1120 
1121 &mailbox {
1122         interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
1123 };
1124 
1125 &sdhci {
1126         interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
1127 };
1128 
1129 &sdhost {
1130         interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
1131 };
1132 
1133 &spi {
1134         interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
1135 };
1136 
1137 &spi1 {
1138         interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1139 };
1140 
1141 &spi2 {
1142         interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1143 };
1144 
1145 &system_timer {
1146         interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
1147                      <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
1148                      <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
1149                      <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
1150 };
1151 
1152 &txp {
1153         interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
1154 };
1155 
1156 &uart0 {
1157         interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
1158 };
1159 
1160 &uart1 {
1161         interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1162 };
1163 
1164 &usb {
1165         interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
1166 };
1167 
1168 &vec {
1169         compatible = "brcm,bcm2711-vec";
1170         interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
1171 };