From b229e7f5a6d21d1b52f3f19fed58bba638714884 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 30 Jan 2020 15:48:00 +0000 Subject: [PATCH] ARM: dts: Rebuild downstream DTS files Refactor the tree of downstream DTS files to achieve approximately the same end result but wihout modifying upstream files (except for bcm2711-rpi-4-b.dts). Signed-off-by: Phil Elwell --- arch/arm/boot/dts/bcm2708-rpi.dtsi | 133 +-------- arch/arm/boot/dts/bcm2708.dtsi | 4 + arch/arm/boot/dts/bcm2709.dtsi | 4 + arch/arm/boot/dts/bcm270x-rpi.dtsi | 139 +++++++++ arch/arm/boot/dts/bcm270x.dtsi | 98 ++++--- arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 13 + arch/arm/boot/dts/bcm2710.dtsi | 4 + arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 315 ++++++++++++++++++++- arch/arm/boot/dts/bcm2711-rpi.dtsi | 222 +++++++++++++++ 9 files changed, 766 insertions(+), 166 deletions(-) create mode 100644 arch/arm/boot/dts/bcm270x-rpi.dtsi create mode 100644 arch/arm/boot/dts/bcm2711-rpi.dtsi --- a/arch/arm/boot/dts/bcm2708-rpi.dtsi +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi @@ -1,6 +1,7 @@ -/* Downstream modifications to bcm2835-rpi.dtsi */ +/* Downstream modifications common to bcm2835, bcm2836, bcm2837 */ #include "bcm2835-rpi.dtsi" +#include "bcm270x-rpi.dtsi" / { memory@0 { @@ -9,147 +10,27 @@ }; aliases { - audio = &audio; - aux = &aux; - sound = &sound; - soc = &soc; - dma = &dma; - intc = &intc; - watchdog = &watchdog; - random = &random; - mailbox = &mailbox; - gpio = &gpio; - uart0 = &uart0; - sdhost = &sdhost; - mmc0 = &sdhost; - i2s = &i2s; - spi0 = &spi0; - i2c0 = &i2c0; - uart1 = &uart1; - spi1 = &spi1; - spi2 = &spi2; - mmc = &mmc; - mmc1 = &mmc; - i2c1 = &i2c1; i2c2 = &i2c2; - usb = &usb; - leds = &leds; - fb = &fb; - thermal = &thermal; - axiperf = &axiperf; - }; - - leds: leds { - compatible = "gpio-leds"; - }; - - soc { - gpiomem { - compatible = "brcm,bcm2835-gpiomem"; - reg = <0x7e200000 0x1000>; - }; - - fb: fb { - compatible = "brcm,bcm2708-fb"; - firmware = <&firmware>; - status = "okay"; - }; - - vcsm: vcsm { - compatible = "raspberrypi,bcm2835-vcsm"; - firmware = <&firmware>; - status = "okay"; - }; - - /* Onboard audio */ - audio: audio { - compatible = "brcm,bcm2835-audio"; - brcm,pwm-channels = <8>; - status = "disabled"; - }; - - /* External sound card */ - sound: sound { - status = "disabled"; - }; }; __overrides__ { - cache_line_size; - - uart0 = <&uart0>,"status"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; - i2c0 = <&i2c0>,"status"; - i2c1 = <&i2c1>,"status"; i2c2_iknowwhatimdoing = <&i2c2>,"status"; - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; i2c2_baudrate = <&i2c2>,"clock-frequency:0"; - - audio = <&audio>,"status"; - watchdog = <&watchdog>,"status"; - random = <&random>,"status"; - sd_overclock = <&sdhost>,"brcm,overclock-50:0"; - sd_poll_once = <&sdhost>,"non-removable?"; - sd_force_pio = <&sdhost>,"brcm,force-pio?"; - sd_pio_limit = <&sdhost>,"brcm,pio-limit:0"; - sd_debug = <&sdhost>,"brcm,debug"; - sdio_overclock = <&mmc>,"brcm,overclock-50:0", - <&mmcnr>,"brcm,overclock-50:0"; - axiperf = <&axiperf>,"status"; + sd_poll_once = <&sdhost>, "non-removable?"; }; }; -&hdmi { - power-domains = <&power RPI_POWER_DOMAIN_HDMI>; - status = "disabled"; -}; - -&txp { - status = "disabled"; -}; - -&i2c0 { - status = "disabled"; -}; - -&i2c1 { - status = "disabled"; -}; - -&i2c2 { - status = "disabled"; -}; - -&clocks { - firmware = <&firmware>; -}; - -&sdhci { - pinctrl-names = "default"; - pinctrl-0 = <&emmc_gpio48>; - bus-width = <4>; -}; - -sdhost_pins: &sdhost_gpio48 { - /* Add alias */ -}; - &sdhost { pinctrl-names = "default"; pinctrl-0 = <&sdhost_gpio48>; - bus-width = <4>; - brcm,overclock-50 = <0>; - brcm,pio-limit = <1>; status = "okay"; }; -&cpu_thermal { - /delete-node/ trips; +&hdmi { + power-domains = <&power RPI_POWER_DOMAIN_HDMI>; + status = "disabled"; }; -&vec { +&i2c2 { status = "disabled"; }; --- a/arch/arm/boot/dts/bcm2708.dtsi +++ b/arch/arm/boot/dts/bcm2708.dtsi @@ -8,3 +8,7 @@ arm_freq; }; }; + +&vc4 { + status = "disabled"; +}; --- a/arch/arm/boot/dts/bcm2709.dtsi +++ b/arch/arm/boot/dts/bcm2709.dtsi @@ -16,3 +16,7 @@ <&v7_cpu3>, "clock-frequency:0"; }; }; + +&vc4 { + status = "disabled"; +}; --- /dev/null +++ b/arch/arm/boot/dts/bcm270x-rpi.dtsi @@ -0,0 +1,139 @@ +/* Downstream modifications to bcm2835-rpi.dtsi */ + +/ { + aliases { + audio = &audio; + aux = &aux; + sound = &sound; + soc = &soc; + dma = &dma; + intc = &intc; + watchdog = &watchdog; + random = &random; + mailbox = &mailbox; + gpio = &gpio; + uart0 = &uart0; + uart1 = &uart1; + sdhost = &sdhost; + mmc = &mmc; + mmc1 = &mmc; + mmc0 = &sdhost; + i2s = &i2s; + i2c0 = &i2c0; + i2c1 = &i2c1; + spi0 = &spi0; + spi1 = &spi1; + spi2 = &spi2; + usb = &usb; + leds = &leds; + fb = &fb; + thermal = &thermal; + axiperf = &axiperf; + }; + + /* Define these notional regulators for use by overlays */ + vdd_3v3_reg: fixedregulator_3v3 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3300000>; + regulator-name = "3v3"; + }; + + vdd_5v0_reg: fixedregulator_5v0 { + compatible = "regulator-fixed"; + regulator-always-on; + regulator-max-microvolt = <5000000>; + regulator-min-microvolt = <5000000>; + regulator-name = "5v0"; + }; + + leds: leds { + compatible = "gpio-leds"; + }; + + soc { + gpiomem { + compatible = "brcm,bcm2835-gpiomem"; + reg = <0x7e200000 0x1000>; + }; + + fb: fb { + compatible = "brcm,bcm2708-fb"; + firmware = <&firmware>; + status = "okay"; + }; + + vcsm: vcsm { + compatible = "raspberrypi,bcm2835-vcsm"; + firmware = <&firmware>; + status = "okay"; + }; + + /* Onboard audio */ + audio: audio { + compatible = "brcm,bcm2835-audio"; + brcm,pwm-channels = <8>; + status = "disabled"; + }; + + /* External sound card */ + sound: sound { + status = "disabled"; + }; + }; + + __overrides__ { + cache_line_size; + + uart0 = <&uart0>,"status"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + + audio = <&audio>,"status"; + watchdog = <&watchdog>,"status"; + random = <&random>,"status"; + sd_overclock = <&sdhost>,"brcm,overclock-50:0"; + sd_force_pio = <&sdhost>,"brcm,force-pio?"; + sd_pio_limit = <&sdhost>,"brcm,pio-limit:0"; + sd_debug = <&sdhost>,"brcm,debug"; + sdio_overclock = <&mmc>,"brcm,overclock-50:0", + <&mmcnr>,"brcm,overclock-50:0"; + axiperf = <&axiperf>,"status"; + }; +}; + +&txp { + status = "disabled"; +}; + +&i2c0 { + status = "disabled"; +}; + +&i2c1 { + status = "disabled"; +}; + +&clocks { + firmware = <&firmware>; +}; + +&sdhci { + pinctrl-names = "default"; + pinctrl-0 = <&emmc_gpio48>; + bus-width = <4>; +}; + +&cpu_thermal { + /delete-node/ trips; +}; + +&vec { + status = "disabled"; +}; --- a/arch/arm/boot/dts/bcm270x.dtsi +++ b/arch/arm/boot/dts/bcm270x.dtsi @@ -17,32 +17,8 @@ /* Add label */ }; - gpio@7e200000 { /* gpio */ - interrupts = <2 17>, <2 18>; - - dpi_18bit_gpio0: dpi_18bit_gpio0 { - brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 - 12 13 14 15 16 17 18 19 - 20 21>; - brcm,function = ; - }; - }; - - serial@7e201000 { /* uart0 */ - /* Enable CTS bug workaround */ - cts-event-workaround; - }; - - i2s@7e203000 { /* i2s */ - #sound-dai-cells = <0>; - reg = <0x7e203000 0x24>; - clocks = <&clocks BCM2835_CLOCK_PCM>; - }; - spi0: spi@7e204000 { /* Add label */ - dmas = <&dma 6>, <&dma 7>; - dma-names = "tx", "rx"; }; pixelvalve0: pixelvalve@7e206000 { @@ -55,17 +31,6 @@ status = "disabled"; }; - dpi: dpi@7e208000 { - compatible = "brcm,bcm2835-dpi"; - reg = <0x7e208000 0x8c>; - clocks = <&clocks BCM2835_CLOCK_VPU>, - <&clocks BCM2835_CLOCK_DPI>; - clock-names = "core", "pixel"; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - /delete-node/ sdhci@7e300000; sdhci: mmc: mmc@7e300000 { @@ -118,6 +83,34 @@ status = "disabled"; }; + csi0: csi@7e800000 { + compatible = "brcm,bcm2835-unicam"; + reg = <0x7e800000 0x800>, + <0x7e802000 0x4>; + interrupts = <2 6>; + clocks = <&clocks BCM2835_CLOCK_CAM0>; + clock-names = "lp"; + power-domains = <&power RPI_POWER_DOMAIN_UNICAM0>; + #address-cells = <1>; + #size-cells = <0>; + #clock-cells = <1>; + status = "disabled"; + }; + + csi1: csi@7e801000 { + compatible = "brcm,bcm2835-unicam"; + reg = <0x7e801000 0x800>, + <0x7e802004 0x4>; + interrupts = <2 7>; + clocks = <&clocks BCM2835_CLOCK_CAM1>; + clock-names = "lp"; + power-domains = <&power RPI_POWER_DOMAIN_UNICAM1>; + #address-cells = <1>; + #size-cells = <0>; + #clock-cells = <1>; + status = "disabled"; + }; + pixelvalve2: pixelvalve@7e807000 { /* Add label */ status = "disabled"; @@ -160,6 +153,37 @@ }; }; -&vc4 { - status = "disabled"; +&gpio { + interrupts = <2 17>, <2 18>; + + dpi_18bit_gpio0: dpi_18bit_gpio0 { + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15 16 17 18 19 + 20 21>; + brcm,function = ; + }; +}; + +&uart0 { + /* Enable CTS bug workaround */ + cts-event-workaround; +}; + +&i2s { + #sound-dai-cells = <0>; + dmas = <&dma 2>, <&dma 3>; + dma-names = "tx", "rx"; +}; + +&sdhost { + dmas = <&dma (13|(1<<29))>; + dma-names = "rx-tx"; + bus-width = <4>; + brcm,overclock-50 = <0>; + brcm,pio-limit = <1>; +}; + +&spi0 { + dmas = <&dma 6>, <&dma 7>; + dma-names = "tx", "rx"; }; --- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts @@ -170,6 +170,12 @@ pinctrl-0 = <&audio_pins>; }; +ð_phy { + microchip,eee-enabled; + microchip,tx-lpi-timer = <600>; /* non-aggressive*/ + microchip,downshift-after = <2>; +}; + / { __overrides__ { act_led_gpio = <&act_led>,"gpios:4"; @@ -179,5 +185,12 @@ pwr_led_gpio = <&pwr_led>,"gpios:4"; pwr_led_activelow = <&pwr_led>,"gpios:8"; pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; + + eee = <ð_phy>,"microchip,eee-enabled?"; + tx_lpi_timer = <ð_phy>,"microchip,tx-lpi-timer:0"; + eth_led0 = <ð_phy>,"microchip,led-modes:0"; + eth_led1 = <ð_phy>,"microchip,led-modes:4"; + eth_downshift_after = <ð_phy>,"microchip,downshift-after:0"; + eth_max_speed = <ð_phy>,"max-speed:0"; }; }; --- a/arch/arm/boot/dts/bcm2710.dtsi +++ b/arch/arm/boot/dts/bcm2710.dtsi @@ -23,3 +23,7 @@ <&cpu3>, "clock-frequency:0"; }; }; + +&vc4 { + status = "disabled"; +}; --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts @@ -2,7 +2,6 @@ /dts-v1/; #include "bcm2711.dtsi" #include "bcm2835-rpi.dtsi" -#include "bcm283x-rpi-usb-peripheral.dtsi" / { compatible = "raspberrypi,4-model-b", "brcm,bcm2711"; @@ -65,8 +64,8 @@ "GLOBAL_RESET", "VDD_SD_IO_SEL", "CAM_GPIO", - "", - ""; + "SD_PWR_ON", + "SD_OC_N"; status = "okay"; }; }; @@ -138,3 +137,313 @@ &vchiq { interrupts = ; }; + +// ============================================= +// Downstream rpi- changes + +#include "bcm270x.dtsi" +#include "bcm2711-rpi.dtsi" +#include "bcm283x-rpi-csi1-2lane.dtsi" + +/ { + chosen { + bootargs = "coherent_pool=1M 8250.nr_uarts=1 cma=64M"; + }; + + aliases { + serial0 = &uart1; + serial1 = &uart0; + mmc0 = &emmc2; + mmc1 = &mmcnr; + mmc2 = &sdhost; + /delete-property/ i2c2; + i2c3 = &i2c3; + i2c4 = &i2c4; + i2c5 = &i2c5; + i2c6 = &i2c6; + /delete-property/ ethernet; + /delete-property/ intc; + pcie0 = &pcie_0; + }; + + /delete-node/ wifi-pwrseq; +}; + +&mmcnr { + pinctrl-names = "default"; + pinctrl-0 = <&sdio_pins>; + bus-width = <4>; + status = "okay"; +}; + +&uart0 { + pinctrl-0 = <&uart0_pins &bt_pins>; + status = "okay"; + + /delete-node/ bluetooth; +}; + +&uart1 { + pinctrl-0 = <&uart1_pins>; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins &spi0_cs_pins>; + cs-gpios = <&gpio 8 1>, <&gpio 7 1>; + + spidev0: spidev@0{ + compatible = "spidev"; + reg = <0>; /* CE0 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <125000000>; + }; + + spidev1: spidev@1{ + compatible = "spidev"; + reg = <1>; /* CE1 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <125000000>; + }; +}; + +&gpio { + spi0_pins: spi0_pins { + brcm,pins = <9 10 11>; + brcm,function = ; + }; + + spi0_cs_pins: spi0_cs_pins { + brcm,pins = <8 7>; + brcm,function = ; + }; + + spi3_pins: spi3_pins { + brcm,pins = <1 2 3>; + brcm,function = ; + }; + + spi3_cs_pins: spi3_cs_pins { + brcm,pins = <0 24>; + brcm,function = ; + }; + + spi4_pins: spi4_pins { + brcm,pins = <5 6 7>; + brcm,function = ; + }; + + spi4_cs_pins: spi4_cs_pins { + brcm,pins = <4 25>; + brcm,function = ; + }; + + spi5_pins: spi5_pins { + brcm,pins = <13 14 15>; + brcm,function = ; + }; + + spi5_cs_pins: spi5_cs_pins { + brcm,pins = <12 26>; + brcm,function = ; + }; + + spi6_pins: spi6_pins { + brcm,pins = <19 20 21>; + brcm,function = ; + }; + + spi6_cs_pins: spi6_cs_pins { + brcm,pins = <18 27>; + brcm,function = ; + }; + + i2c0_pins: i2c0 { + brcm,pins = <0 1>; + brcm,function = ; + brcm,pull = ; + }; + + i2c1_pins: i2c1 { + brcm,pins = <2 3>; + brcm,function = ; + brcm,pull = ; + }; + + i2c3_pins: i2c3 { + brcm,pins = <4 5>; + brcm,function = ; + brcm,pull = ; + }; + + i2c4_pins: i2c4 { + brcm,pins = <8 9>; + brcm,function = ; + brcm,pull = ; + }; + + i2c5_pins: i2c5 { + brcm,pins = <12 13>; + brcm,function = ; + brcm,pull = ; + }; + + i2c6_pins: i2c6 { + brcm,pins = <22 23>; + brcm,function = ; + brcm,pull = ; + }; + + i2s_pins: i2s { + brcm,pins = <18 19 20 21>; + brcm,function = ; + }; + + sdio_pins: sdio_pins { + brcm,pins = <34 35 36 37 38 39>; + brcm,function = ; // alt3 = SD1 + brcm,pull = <0 2 2 2 2 2>; + }; + + bt_pins: bt_pins { + brcm,pins = "-"; // non-empty to keep btuart happy, //4 = 0 + // to fool pinctrl + brcm,function = <0>; + brcm,pull = <2>; + }; + + uart0_pins: uart0_pins { + brcm,pins = <32 33>; + brcm,function = ; + brcm,pull = <0 2>; + }; + + uart1_pins: uart1_pins { + brcm,pins; + brcm,function; + brcm,pull; + }; + + uart2_pins: uart2_pins { + brcm,pins = <0 1>; + brcm,function = ; + brcm,pull = <0 2>; + }; + + uart3_pins: uart3_pins { + brcm,pins = <4 5>; + brcm,function = ; + brcm,pull = <0 2>; + }; + + uart4_pins: uart4_pins { + brcm,pins = <8 9>; + brcm,function = ; + brcm,pull = <0 2>; + }; + + uart5_pins: uart5_pins { + brcm,pins = <12 13>; + brcm,function = ; + brcm,pull = <0 2>; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <100000>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + clock-frequency = <100000>; +}; + +&i2s { + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; +}; + +/ { + __overrides__ { + /delete-property/ i2c2_baudrate; + /delete-property/ i2c2_iknowwhatimdoing; + }; +}; + +// ============================================= +// Board specific stuff here + +/ { + sd_vcc_reg: sd_vcc_reg { + compatible = "regulator-fixed"; + regulator-name = "vcc-sd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + enable-active-high; + gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>; + }; +}; + +&sdhost { + status = "disabled"; +}; + +&emmc2 { + vmmc-supply = <&sd_vcc_reg>; +}; + +&phy1 { + led-modes = <0x00 0x08>; /* link/activity link */ +}; + +&gpio { + audio_pins: audio_pins { + brcm,pins = <40 41>; + brcm,function = <4>; + }; +}; + +&leds { + act_led: act { + label = "led0"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; + }; + + pwr_led: pwr { + label = "led1"; + linux,default-trigger = "default-on"; + gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + }; +}; + +&pwm1 { + status = "disabled"; +}; + +&audio { + pinctrl-names = "default"; + pinctrl-0 = <&audio_pins>; +}; + +/ { + __overrides__ { + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; + + pwr_led_gpio = <&pwr_led>,"gpios:4"; + pwr_led_activelow = <&pwr_led>,"gpios:8"; + pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; + + eth_led0 = <&phy1>,"led-modes:0"; + eth_led1 = <&phy1>,"led-modes:4"; + + }; +}; --- /dev/null +++ b/arch/arm/boot/dts/bcm2711-rpi.dtsi @@ -0,0 +1,222 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "bcm270x-rpi.dtsi" + +/ { + soc { + /delete-node/ v3d@7ec00000; + /delete-node/ mailbox@7e00b840; + }; + + __overrides__ { + arm_freq; + sd_poll_once = <&emmc2>, "non-removable?"; + }; + + v3dbus { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <2>; + ranges = <0x7c500000 0x0 0xfc500000 0x0 0x03300000>, + <0x40000000 0x0 0xff800000 0x0 0x00800000>; + dma-ranges = <0x00000000 0x0 0x00000000 0x4 0x00000000>; + + v3d: v3d@7ec04000 { + compatible = "brcm,2711-v3d"; + reg = + <0x7ec00000 0x0 0x4000>, + <0x7ec04000 0x0 0x4000>; + reg-names = "hub", "core0"; + + power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>; + resets = <&pm BCM2835_RESET_V3D>; + clocks = <&clocks BCM2835_CLOCK_V3D>; + interrupts = ; + status = "disabled"; + }; + }; + + scb: scb { + /* Add a label */ + }; +}; + +&soc { + thermal: thermal@7d5d2200 { + compatible = "brcm,avs-tmon-bcm2838"; + reg = <0x7d5d2200 0x2c>; + interrupts = ; + interrupt-names = "tmon"; + clocks = <&clocks BCM2835_CLOCK_TSENS>; + #thermal-sensor-cells = <0>; + status = "okay"; + }; + + vc4: gpu { + compatible = "brcm,bcm2835-vc4"; + status = "disabled"; + }; +}; + +&scb { + ranges = <0x0 0x7c000000 0x0 0xfc000000 0x03800000>, + <0x0 0x40000000 0x0 0xff800000 0x00800000>, + <0x6 0x00000000 0x6 0x00000000 0x40000000>, + <0x0 0x00000000 0x0 0x00000000 0xfc000000>; + dma-ranges = <0x0 0x00000000 0x0 0x00000000 0xfc000000>; + + pcie_0: pcie@7d500000 { + reg = <0x0 0x7d500000 0x9310>, + <0x0 0x7e00f300 0x20>; + msi-controller; + msi-parent = <&pcie_0>; + #address-cells = <3>; + #interrupt-cells = <1>; + #size-cells = <2>; + bus-range = <0x0 0x01>; + compatible = "brcm,bcm2711b0-pcie", // Safe value + "brcm,bcm2711-pcie", + "brcm,pci-plat-dev"; + max-link-speed = <2>; + tot-num-pcie = <1>; + linux,pci-domain = <0>; + interrupts = , + ; + interrupt-names = "pcie", "msi"; + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143 + IRQ_TYPE_LEVEL_HIGH + 0 0 0 2 &gicv2 GIC_SPI 144 + IRQ_TYPE_LEVEL_HIGH + 0 0 0 3 &gicv2 GIC_SPI 145 + IRQ_TYPE_LEVEL_HIGH + 0 0 0 4 &gicv2 GIC_SPI 146 + IRQ_TYPE_LEVEL_HIGH>; + + /* Map outbound accesses from scb:0x6_00000000-03ffffff + * to pci:0x0_f8000000-fbffffff + */ + ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000 + 0x0 0x04000000>; + /* Map inbound accesses from pci:0x0_00000000..ffffffff + * to scb:0x0_00000000-ffffffff + */ + dma-ranges = <0x02000000 0x0 0x00000000 0x0 0x00000000 + 0x1 0x00000000>; + status = "okay"; + }; + + dma40: dma@7e007b00 { + compatible = "brcm,bcm2838-dma"; + reg = <0x0 0x7e007b00 0x400>; + interrupts = + , /* dma4 11 */ + , /* dma4 12 */ + , /* dma4 13 */ + ; /* dma4 14 */ + interrupt-names = "dma11", + "dma12", + "dma13", + "dma14"; + #dma-cells = <1>; + brcm,dma-channel-mask = <0x7800>; + }; + + vchiq: mailbox@7e00b840 { + compatible = "brcm,bcm2838-vchiq"; + reg = <0 0x7e00b840 0x3c>; + interrupts = ; + }; + + xhci: xhci@7e9c0000 { + compatible = "generic-xhci"; + status = "disabled"; + reg = <0x0 0x7e9c0000 0x100000>; + interrupts = ; + }; + + hevc-decoder@7eb00000 { + compatible = "raspberrypi,rpivid-hevc-decoder"; + reg = <0x0 0x7eb00000 0x10000>; + status = "okay"; + }; + + rpivid-local-intc@7eb10000 { + compatible = "raspberrypi,rpivid-local-intc"; + reg = <0x0 0x7eb10000 0x1000>; + status = "okay"; + interrupts = ; + }; + + h264-decoder@7eb20000 { + compatible = "raspberrypi,rpivid-h264-decoder"; + reg = <0x0 0x7eb20000 0x10000>; + status = "okay"; + }; + + vp9-decoder@7eb30000 { + compatible = "raspberrypi,rpivid-vp9-decoder"; + reg = <0x0 0x7eb30000 0x10000>; + status = "okay"; + }; +}; + +&dma { + /* The VPU firmware uses DMA channel 11 for VCHIQ */ + brcm,dma-channel-mask = <0x1f5>; +}; + +&dma40 { + /* The VPU firmware DMA channel 11 for VCHIQ */ + brcm,dma-channel-mask = <0x7000>; +}; + +&firmwarekms { + interrupts = ; +}; + +&smi { + interrupts = ; +}; + +&mmc { + interrupts = ; +}; + +&mmcnr { + interrupts = ; +}; + +&csi0 { + interrupts = ; +}; + +&csi1 { + interrupts = ; +}; + +&random { + compatible = "brcm,bcm2711-rng200", "brcm,bcm2838-rng200"; + status = "okay"; +}; + +&usb { + /* Enable the FIQ support */ + reg = <0x7e980000 0x10000>, + <0x7e00b200 0x200>; + interrupts = , + ; + status = "disabled"; +}; + +&gpio { + interrupts = , + ; +}; + +&cpu_thermal { + thermal-sensors = <&thermal>; +}; + +&genet { + compatible = "brcm,bcm2711-genet-v5", "brcm,genet-v5"; +};