1 From 0f02c32b2d27fa5f0b21c67fb5518a36b5234f3a Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.com>
3 Date: Tue, 7 Jul 2020 09:01:54 +0100
4 Subject: [PATCH] ARM: dts: Make bcm2711 dts more like 5.7
6 The multiple declarations of pixelvalve2 were causing problems for the
7 DT checkers. Aligning the dts files closer to the later kernel versions
8 avoids some repetition and should make maintenance easier.
10 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
12 arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 142 ++++++++++++-----------
13 arch/arm/boot/dts/bcm2711-rpi-cm4.dts | 69 +----------
14 arch/arm/boot/dts/bcm2711-rpi.dtsi | 150 +++++++++++++++++++++++-
15 arch/arm/boot/dts/bcm2711.dtsi | 157 +++-----------------------
16 4 files changed, 245 insertions(+), 273 deletions(-)
18 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
19 +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
24 + emmc2bus = &emmc2bus;
33 gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
34 + default-state = "keep";
35 + linux,default-trigger = "default-on";
45 + * Parts taken from rpi_SCH_4b_4p0_reduced.pdf and
46 + * the official GPU firmware DT blob.
49 + * "FOO" = GPIO line named "FOO" on the schematic
50 + * "FOO_N" = GPIO line named "FOO" on schematic, active low
52 + gpio-line-names = "ID_SDA",
83 + /* Used by BT module */
95 + /* Shared with SPI flash */
117 pinctrl-names = "default";
118 pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
120 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
163 // =============================================
164 // Downstream rpi- changes
167 #include "bcm283x-rpi-csi1-2lane.dtsi"
168 #include "bcm283x-rpi-i2c0mux_0_44.dtsi"
170 -/delete-node/ &emmc2;
174 bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
179 - /delete-property/ ethernet;
180 /delete-property/ intc;
182 - emmc2bus = &emmc2bus;
185 - emmc2bus: emmc2bus {
186 - compatible = "simple-bus";
187 - #address-cells = <2>;
190 - ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>;
191 - dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>;
193 - emmc2: emmc2@7e340000 {
194 - compatible = "brcm,bcm2711-emmc2";
196 - interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
197 - clocks = <&clocks BCM2711_CLOCK_EMMC2>;
198 - reg = <0x0 0x7e340000 0x100>;
199 - vqmmc-supply = <&sd_io_1v8_reg>;
204 /delete-node/ wifi-pwrseq;
206 eth_led0 = <&phy1>,"led-modes:0";
207 eth_led1 = <&phy1>,"led-modes:4";
209 + sd_poll_once = <&emmc2>, "non-removable?";
210 spi_dma4 = <&spi0>, "dmas:0=", <&dma40>,
211 <&spi0>, "dmas:8=", <&dma40>;
213 --- a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts
214 +++ b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts
219 + emmc2bus = &emmc2bus;
228 gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
229 + default-state = "keep";
230 + linux,default-trigger = "default-on";
235 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
278 // =============================================
279 // Downstream rpi- changes
282 #include "bcm283x-rpi-csi1-4lane.dtsi"
283 #include "bcm283x-rpi-i2c0mux_0_44.dtsi"
285 -/delete-node/ &emmc2;
289 bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1";
294 - /delete-property/ ethernet;
295 /delete-property/ intc;
297 - emmc2bus = &emmc2bus;
300 - emmc2bus: emmc2bus {
301 - compatible = "simple-bus";
302 - #address-cells = <2>;
305 - ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>;
306 - dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>;
308 - emmc2: emmc2@7e340000 {
309 - compatible = "brcm,bcm2711-emmc2";
311 - interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
312 - clocks = <&clocks BCM2711_CLOCK_EMMC2>;
313 - reg = <0x0 0x7e340000 0x100>;
314 - vqmmc-supply = <&sd_io_1v8_reg>;
319 /delete-node/ wifi-pwrseq;
321 <&ant2>, "output-high?=off",
322 <&ant2>, "output-low?=on";
324 + sd_poll_once = <&emmc2>, "non-removable?";
325 spi_dma4 = <&spi0>, "dmas:0=", <&dma40>,
326 <&spi0>, "dmas:8=", <&dma40>;
328 --- a/arch/arm/boot/dts/bcm2711-rpi.dtsi
329 +++ b/arch/arm/boot/dts/bcm2711-rpi.dtsi
333 /delete-node/ v3d@7ec00000;
335 + pixelvalve0: pixelvalve@7e206000 {
336 + compatible = "brcm,bcm2711-pixelvalve0";
337 + reg = <0x7e206000 0x100>;
338 + interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
339 + status = "disabled";
342 + pixelvalve1: pixelvalve@7e207000 {
343 + compatible = "brcm,bcm2711-pixelvalve1";
344 + reg = <0x7e207000 0x100>;
345 + interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
346 + status = "disabled";
349 + pixelvalve2: pixelvalve@7e20a000 {
350 + compatible = "brcm,bcm2711-pixelvalve2";
351 + reg = <0x7e20a000 0x100>;
352 + interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
353 + status = "disabled";
356 + pixelvalve4: pixelvalve@7e216000 {
357 + compatible = "brcm,bcm2711-pixelvalve4";
358 + reg = <0x7e216000 0x100>;
359 + interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
360 + status = "disabled";
363 + pixelvalve3: pixelvalve@7ec12000 {
364 + compatible = "brcm,bcm2711-pixelvalve3";
365 + reg = <0x7ec12000 0x100>;
366 + interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
367 + status = "disabled";
370 + dvp: clock@7ef00000 {
371 + compatible = "brcm,brcm2711-dvp";
372 + reg = <0x7ef00000 0x10>;
373 + clocks = <&clk_108MHz>;
374 + #clock-cells = <1>;
375 + #reset-cells = <1>;
378 + hdmi0: hdmi@7ef00700 {
379 + compatible = "brcm,bcm2711-hdmi0";
380 + reg = <0x7ef00700 0x300>,
381 + <0x7ef00300 0x200>,
384 + <0x7ef01b00 0x200>,
385 + <0x7ef01f00 0x400>,
387 + <0x7ef04300 0x100>,
388 + <0x7ef20000 0x100>,
390 + reg-names = "hdmi",
400 + clocks = <&firmware_clocks 13>;
401 + clock-names = "hdmi";
405 + dma-names = "audio-rx";
406 + interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
407 + status = "disabled";
410 + ddc0: i2c@7ef04500 {
411 + compatible = "brcm,bcm2711-hdmi-i2c";
412 + reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>;
413 + reg-names = "bsc", "auto-i2c";
414 + clock-frequency = <97500>;
415 + status = "disabled";
418 + hdmi1: hdmi@7ef05700 {
419 + compatible = "brcm,bcm2711-hdmi1";
420 + reg = <0x7ef05700 0x300>,
421 + <0x7ef05300 0x200>,
424 + <0x7ef06b00 0x200>,
425 + <0x7ef06f00 0x400>,
427 + <0x7ef09300 0x100>,
428 + <0x7ef20000 0x100>,
430 + reg-names = "hdmi",
441 + clocks = <&firmware_clocks 13>;
442 + clock-names = "hdmi";
445 + dma-names = "audio-rx";
446 + interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
447 + status = "disabled";
450 + ddc1: i2c@7ef09500 {
451 + compatible = "brcm,bcm2711-hdmi-i2c";
452 + reg = <0x7ef09500 0x100>, <0x7ef05b00 0x300>;
453 + reg-names = "bsc", "auto-i2c";
454 + clock-frequency = <97500>;
455 + status = "disabled";
467 - /* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
468 - alloc-ranges = <0x0 0x00000000 0x30000000>;
470 + compatible = "brcm,bcm2711-vc5";
471 + status = "disabled";
474 + clk_108MHz: clk-108M {
475 + #clock-cells = <0>;
476 + compatible = "fixed-clock";
477 + clock-frequency = <108000000>;
478 + clock-output-names = "108MHz-clock";
487 + /* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
488 + alloc-ranges = <0x0 0x00000000 0x30000000>;
492 ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
493 <0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>,
494 - <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>,
495 - <0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>;
496 + <0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>;
497 dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>,
498 <0x1 0x00000000 0x1 0x00000000 0x1 0x00000000>;
501 compatible = "brcm,bcm2711-genet-v5", "brcm,genet-v5";
505 + clocks = <&firmware_clocks 4>;
509 firmware_clocks: clocks {
510 compatible = "raspberrypi,firmware-clocks";
511 --- a/arch/arm/boot/dts/bcm2711.dtsi
512 +++ b/arch/arm/boot/dts/bcm2711.dtsi
515 interrupt-parent = <&gicv2>;
518 - compatible = "brcm,bcm2711-vc5";
519 - status = "disabled";
522 - clk_108MHz: clk-108M {
523 - #clock-cells = <0>;
524 - compatible = "fixed-clock";
525 - clock-frequency = <108000000>;
526 - clock-output-names = "108MHz-clock";
536 - pixelvalve0: pixelvalve@7e206000 {
537 - compatible = "brcm,bcm2711-pixelvalve0";
538 - reg = <0x7e206000 0x100>;
539 - interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
540 - status = "disabled";
543 - pixelvalve1: pixelvalve@7e207000 {
544 - compatible = "brcm,bcm2711-pixelvalve1";
545 - reg = <0x7e207000 0x100>;
546 - interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
547 - status = "disabled";
550 - pixelvalve2: pixelvalve@7e20a000 {
551 - compatible = "brcm,bcm2711-pixelvalve2";
552 - reg = <0x7e20a000 0x100>;
553 - interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
554 - status = "disabled";
558 compatible = "brcm,bcm2835-pwm";
559 reg = <0x7e20c800 0x28>;
560 @@ -276,118 +243,30 @@
564 - pixelvalve4: pixelvalve@7e216000 {
565 - compatible = "brcm,bcm2711-pixelvalve4";
566 - reg = <0x7e216000 0x100>;
567 - interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
568 - status = "disabled";
571 - emmc2: emmc2@7e340000 {
572 - compatible = "brcm,bcm2711-emmc2";
573 - reg = <0x7e340000 0x100>;
574 - interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
575 - clocks = <&clocks BCM2711_CLOCK_EMMC2>;
576 - status = "disabled";
580 - clocks = <&firmware_clocks 4>;
581 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
585 - pixelvalve3: pixelvalve@7ec12000 {
586 - compatible = "brcm,bcm2711-pixelvalve3";
587 - reg = <0x7ec12000 0x100>;
588 - interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
589 - status = "disabled";
592 + * emmc2 has different DMA constraints based on SoC revisions. It was
593 + * moved into its own bus, so as for RPi4's firmware to update them.
594 + * The firmware will find whether the emmc2bus alias is defined, and if
595 + * so, it'll edit the dma-ranges property below accordingly.
597 + emmc2bus: emmc2bus {
598 + compatible = "simple-bus";
599 + #address-cells = <2>;
602 - dvp: clock@7ef00000 {
603 - compatible = "brcm,brcm2711-dvp";
604 - reg = <0x7ef00000 0x10>;
605 - clocks = <&clk_108MHz>;
606 - #clock-cells = <1>;
607 - #reset-cells = <1>;
609 + ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>;
610 + dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>;
612 - hdmi0: hdmi@7ef00700 {
613 - compatible = "brcm,bcm2711-hdmi0";
614 - reg = <0x7ef00700 0x300>,
615 - <0x7ef00300 0x200>,
618 - <0x7ef01b00 0x200>,
619 - <0x7ef01f00 0x400>,
621 - <0x7ef04300 0x100>,
622 - <0x7ef20000 0x100>,
624 - reg-names = "hdmi",
634 - clocks = <&firmware_clocks 13>;
635 - clock-names = "hdmi";
639 - dma-names = "audio-rx";
640 - interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
641 - status = "disabled";
644 - ddc0: i2c@7ef04500 {
645 - compatible = "brcm,bcm2711-hdmi-i2c";
646 - reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>;
647 - reg-names = "bsc", "auto-i2c";
648 - clock-frequency = <97500>;
649 - status = "disabled";
652 - hdmi1: hdmi@7ef05700 {
653 - compatible = "brcm,bcm2711-hdmi1";
654 - reg = <0x7ef05700 0x300>,
655 - <0x7ef05300 0x200>,
658 - <0x7ef06b00 0x200>,
659 - <0x7ef06f00 0x400>,
661 - <0x7ef09300 0x100>,
662 - <0x7ef20000 0x100>,
664 - reg-names = "hdmi",
675 - clocks = <&firmware_clocks 13>;
676 - clock-names = "hdmi";
679 - dma-names = "audio-rx";
680 - interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
681 - status = "disabled";
684 - ddc1: i2c@7ef09500 {
685 - compatible = "brcm,bcm2711-hdmi-i2c";
686 - reg = <0x7ef09500 0x100>, <0x7ef05b00 0x300>;
687 - reg-names = "bsc", "auto-i2c";
688 - clock-frequency = <97500>;
689 + emmc2: emmc2@7e340000 {
690 + compatible = "brcm,bcm2711-emmc2";
691 + reg = <0x0 0x7e340000 0x100>;
692 + interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
693 + clocks = <&clocks BCM2711_CLOCK_EMMC2>;