1 // SPDX-License-Identifier: GPL-2.0
2 #include "bcm283x.dtsi"
4 #include <dt-bindings/interrupt-controller/arm-gic.h>
5 #include <dt-bindings/soc/bcm2835-pm.h>
8 compatible = "brcm,bcm2711";
13 interrupt-parent = <&gicv2>;
21 * arm64 reserves the CMA by default somewhere in ZONE_DMA32,
22 * that's not good enough for the BCM2711 as some devices can
23 * only address the lower 1G of memory (ZONE_DMA).
26 compatible = "shared-dma-pool";
27 size = <0x2000000>; /* 32MB */
28 alloc-ranges = <0x0 0x00000000 0x40000000>;
38 * Common BCM283x peripherals
39 * BCM2711-specific peripherals
40 * ARM-local peripherals
42 ranges = <0x7e000000 0x0 0xfe000000 0x01800000>,
43 <0x7c000000 0x0 0xfc000000 0x02000000>,
44 <0x40000000 0x0 0xff800000 0x00800000>;
45 /* Emulate a contiguous 30-bit address range for DMA */
46 dma-ranges = <0xc0000000 0x0 0x00000000 0x40000000>;
49 * This node is the provider for the enable-method for
50 * bringing up secondary cores.
52 local_intc: local_intc@40000000 {
53 compatible = "brcm,bcm2836-l1-intc";
54 reg = <0x40000000 0x100>;
57 gicv2: interrupt-controller@40041000 {
59 #interrupt-cells = <3>;
60 compatible = "arm,gic-400";
61 reg = <0x40041000 0x1000>,
65 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
66 IRQ_TYPE_LEVEL_HIGH)>;
70 compatible = "brcm,bcm2835-dma";
71 reg = <0x7e007000 0xb00>;
72 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
73 <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
74 <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
75 <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
76 <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
77 <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
78 <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
80 <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
81 <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
83 <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
84 interrupt-names = "dma0",
96 brcm,dma-channel-mask = <0x07f5>;
99 pm: watchdog@7e100000 {
100 compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt";
101 #power-domain-cells = <1>;
103 reg = <0x7e100000 0x114>,
106 clocks = <&clocks BCM2835_CLOCK_V3D>,
107 <&clocks BCM2835_CLOCK_PERI_IMAGE>,
108 <&clocks BCM2835_CLOCK_H264>,
109 <&clocks BCM2835_CLOCK_ISP>;
110 clock-names = "v3d", "peri_image", "h264", "isp";
111 system-power-controller;
115 interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
117 /* RNG is incompatible with brcm,bcm2835-rng */
121 uart2: serial@7e201400 {
122 compatible = "arm,pl011", "arm,primecell";
123 reg = <0x7e201400 0x200>;
124 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
125 clocks = <&clocks BCM2835_CLOCK_UART>,
126 <&clocks BCM2835_CLOCK_VPU>;
127 clock-names = "uartclk", "apb_pclk";
128 arm,primecell-periphid = <0x00241011>;
132 uart3: serial@7e201600 {
133 compatible = "arm,pl011", "arm,primecell";
134 reg = <0x7e201600 0x200>;
135 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
136 clocks = <&clocks BCM2835_CLOCK_UART>,
137 <&clocks BCM2835_CLOCK_VPU>;
138 clock-names = "uartclk", "apb_pclk";
139 arm,primecell-periphid = <0x00241011>;
143 uart4: serial@7e201800 {
144 compatible = "arm,pl011", "arm,primecell";
145 reg = <0x7e201800 0x200>;
146 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
147 clocks = <&clocks BCM2835_CLOCK_UART>,
148 <&clocks BCM2835_CLOCK_VPU>;
149 clock-names = "uartclk", "apb_pclk";
150 arm,primecell-periphid = <0x00241011>;
154 uart5: serial@7e201a00 {
155 compatible = "arm,pl011", "arm,primecell";
156 reg = <0x7e201a00 0x200>;
157 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
158 clocks = <&clocks BCM2835_CLOCK_UART>,
159 <&clocks BCM2835_CLOCK_VPU>;
160 clock-names = "uartclk", "apb_pclk";
161 arm,primecell-periphid = <0x00241011>;
166 compatible = "brcm,bcm2835-spi";
167 reg = <0x7e204600 0x0200>;
168 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
169 clocks = <&clocks BCM2835_CLOCK_VPU>;
170 #address-cells = <1>;
176 compatible = "brcm,bcm2835-spi";
177 reg = <0x7e204800 0x0200>;
178 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
179 clocks = <&clocks BCM2835_CLOCK_VPU>;
180 #address-cells = <1>;
186 compatible = "brcm,bcm2835-spi";
187 reg = <0x7e204a00 0x0200>;
188 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
189 clocks = <&clocks BCM2835_CLOCK_VPU>;
190 #address-cells = <1>;
196 compatible = "brcm,bcm2835-spi";
197 reg = <0x7e204c00 0x0200>;
198 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
199 clocks = <&clocks BCM2835_CLOCK_VPU>;
200 #address-cells = <1>;
206 compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
207 reg = <0x7e205600 0x200>;
208 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
209 clocks = <&clocks BCM2835_CLOCK_VPU>;
210 #address-cells = <1>;
216 compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
217 reg = <0x7e205800 0x200>;
218 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
219 clocks = <&clocks BCM2835_CLOCK_VPU>;
220 #address-cells = <1>;
226 compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
227 reg = <0x7e205a00 0x200>;
228 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
229 clocks = <&clocks BCM2835_CLOCK_VPU>;
230 #address-cells = <1>;
236 compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
237 reg = <0x7e205c00 0x200>;
238 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
239 clocks = <&clocks BCM2835_CLOCK_VPU>;
240 #address-cells = <1>;
246 compatible = "brcm,bcm2835-pwm";
247 reg = <0x7e20c800 0x28>;
248 clocks = <&clocks BCM2835_CLOCK_PWM>;
249 assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
250 assigned-clock-rates = <10000000>;
255 emmc2: emmc2@7e340000 {
256 compatible = "brcm,bcm2711-emmc2";
257 reg = <0x7e340000 0x100>;
258 interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
259 clocks = <&clocks BCM2711_CLOCK_EMMC2>;
264 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
269 compatible = "arm,cortex-a72-pmu", "arm,armv8-pmuv3";
270 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
271 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
272 <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
273 <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
274 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
278 compatible = "arm,armv8-timer";
279 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
280 IRQ_TYPE_LEVEL_LOW)>,
281 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
282 IRQ_TYPE_LEVEL_LOW)>,
283 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
284 IRQ_TYPE_LEVEL_LOW)>,
285 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
286 IRQ_TYPE_LEVEL_LOW)>;
287 /* This only applies to the ARMv7 stub */
288 arm,cpu-registers-not-fw-configured;
292 #address-cells = <1>;
294 enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
298 compatible = "arm,cortex-a72";
300 enable-method = "spin-table";
301 cpu-release-addr = <0x0 0x000000d8>;
306 compatible = "arm,cortex-a72";
308 enable-method = "spin-table";
309 cpu-release-addr = <0x0 0x000000e0>;
314 compatible = "arm,cortex-a72";
316 enable-method = "spin-table";
317 cpu-release-addr = <0x0 0x000000e8>;
322 compatible = "arm,cortex-a72";
324 enable-method = "spin-table";
325 cpu-release-addr = <0x0 0x000000f0>;
330 compatible = "simple-bus";
331 #address-cells = <2>;
334 ranges = <0x0 0x7c000000 0x0 0xfc000000 0x03800000>;
336 genet: ethernet@7d580000 {
337 compatible = "brcm,bcm2711-genet-v5";
338 reg = <0x0 0x7d580000 0x10000>;
339 #address-cells = <0x1>;
341 interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
342 <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
345 genet_mdio: mdio@e14 {
346 compatible = "brcm,genet-mdio-v5";
349 #address-cells = <0x0>;
357 clock-frequency = <54000000>;
361 compatible = "brcm,bcm2711-cprman";
365 coefficients = <(-487) 410040>;
369 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
373 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
377 compatible = "brcm,bcm2711-gpio";
378 interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
379 <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
380 <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
381 <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
383 gpclk0_gpio49: gpclk0_gpio49 {
390 gpclk1_gpio50: gpclk1_gpio50 {
397 gpclk2_gpio51: gpclk2_gpio51 {
405 i2c0_gpio46: i2c0_gpio46 {
417 i2c1_gpio46: i2c1_gpio46 {
429 i2c3_gpio2: i2c3_gpio2 {
441 i2c3_gpio4: i2c3_gpio4 {
453 i2c4_gpio6: i2c4_gpio6 {
465 i2c4_gpio8: i2c4_gpio8 {
477 i2c5_gpio10: i2c5_gpio10 {
489 i2c5_gpio12: i2c5_gpio12 {
501 i2c6_gpio0: i2c6_gpio0 {
513 i2c6_gpio22: i2c6_gpio22 {
525 i2c_slave_gpio8: i2c_slave_gpio8 {
535 jtag_gpio48: jtag_gpio48 {
547 mii_gpio28: mii_gpio28 {
556 mii_gpio36: mii_gpio36 {
566 pcm_gpio50: pcm_gpio50 {
576 pwm0_0_gpio12: pwm0_0_gpio12 {
583 pwm0_0_gpio18: pwm0_0_gpio18 {
590 pwm1_0_gpio40: pwm1_0_gpio40 {
597 pwm0_1_gpio13: pwm0_1_gpio13 {
604 pwm0_1_gpio19: pwm0_1_gpio19 {
611 pwm1_1_gpio41: pwm1_1_gpio41 {
618 pwm0_1_gpio45: pwm0_1_gpio45 {
625 pwm0_0_gpio52: pwm0_0_gpio52 {
632 pwm0_1_gpio53: pwm0_1_gpio53 {
640 rgmii_gpio35: rgmii_gpio35 {
650 rgmii_irq_gpio34: rgmii_irq_gpio34 {
656 rgmii_irq_gpio39: rgmii_irq_gpio39 {
662 rgmii_mdio_gpio28: rgmii_mdio_gpio28 {
669 rgmii_mdio_gpio37: rgmii_mdio_gpio37 {
677 spi0_gpio46: spi0_gpio46 {
686 spi2_gpio46: spi2_gpio46 {
696 spi3_gpio0: spi3_gpio0 {
705 spi4_gpio4: spi4_gpio4 {
714 spi5_gpio12: spi5_gpio12 {
723 spi6_gpio18: spi6_gpio18 {
733 uart2_gpio0: uart2_gpio0 {
745 uart2_ctsrts_gpio2: uart2_ctsrts_gpio2 {
757 uart3_gpio4: uart3_gpio4 {
769 uart3_ctsrts_gpio6: uart3_ctsrts_gpio6 {
781 uart4_gpio8: uart4_gpio8 {
793 uart4_ctsrts_gpio10: uart4_ctsrts_gpio10 {
805 uart5_gpio12: uart5_gpio12 {
817 uart5_ctsrts_gpio14: uart5_ctsrts_gpio14 {
832 compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
833 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
837 compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
838 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
842 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
846 interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
850 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
854 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
858 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
862 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
866 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
867 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
868 <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
869 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
873 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
877 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
881 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
885 interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
889 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;