1// SPDX-License-Identifier: GPL-2.0 2/dts-v1/; 3#include "bcm2711.dtsi" 4#include "bcm2835-rpi.dtsi" 5#include "bcm283x-rpi-usb-peripheral.dtsi" 6 7#include <dt-bindings/reset/raspberrypi,firmware-reset.h> 8 9/ { 10 compatible = "raspberrypi,4-model-b", "brcm,bcm2711"; 11 model = "Raspberry Pi 4 Model B"; 12 13 chosen { 14 /* 8250 auxiliary UART instead of pl011 */ 15 stdout-path = "serial1:115200n8"; 16 }; 17 18 /* Will be filled by the bootloader */ 19 memory@0 { 20 device_type = "memory"; 21 reg = <0 0 0>; 22 }; 23 24 aliases { 25 emmc2bus = &emmc2bus; 26 ethernet0 = &genet; 27 pcie0 = &pcie0; 28 }; 29 30 leds { 31 led-act { 32 gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; 33 }; 34 35 led-pwr { 36 label = "PWR"; 37 gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; 38 default-state = "keep"; 39 linux,default-trigger = "default-on"; 40 }; 41 }; 42 43 wifi_pwrseq: wifi-pwrseq { 44 compatible = "mmc-pwrseq-simple"; 45 reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>; 46 }; 47 48 sd_io_1v8_reg: sd_io_1v8_reg { 49 compatible = "regulator-gpio"; 50 regulator-name = "vdd-sd-io"; 51 regulator-min-microvolt = <1800000>; 52 regulator-max-microvolt = <3300000>; 53 regulator-boot-on; 54 regulator-always-on; 55 regulator-settling-time-us = <5000>; 56 gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>; 57 states = <1800000 0x1>, 58 <3300000 0x0>; 59 status = "okay"; 60 }; 61 62 sd_vcc_reg: sd_vcc_reg { 63 compatible = "regulator-fixed"; 64 regulator-name = "vcc-sd"; 65 regulator-min-microvolt = <3300000>; 66 regulator-max-microvolt = <3300000>; 67 regulator-boot-on; 68 enable-active-high; 69 gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>; 70 }; 71}; 72 73&ddc0 { 74 status = "okay"; 75}; 76 77&ddc1 { 78 status = "okay"; 79}; 80 81&firmware { 82 firmware_clocks: clocks { 83 compatible = "raspberrypi,firmware-clocks"; 84 #clock-cells = <1>; 85 }; 86 87 expgpio: gpio { 88 compatible = "raspberrypi,firmware-gpio"; 89 gpio-controller; 90 #gpio-cells = <2>; 91 gpio-line-names = "BT_ON", 92 "WL_ON", 93 "PWR_LED_OFF", 94 "GLOBAL_RESET", 95 "VDD_SD_IO_SEL", 96 "CAM_GPIO", 97 "SD_PWR_ON", 98 ""; 99 status = "okay"; 100 }; 101 102 reset: reset { 103 compatible = "raspberrypi,firmware-reset"; 104 #reset-cells = <1>; 105 }; 106}; 107 108&gpio { 109 /* 110 * Parts taken from rpi_SCH_4b_4p0_reduced.pdf and 111 * the official GPU firmware DT blob. 112 * 113 * Legend: 114 * "FOO" = GPIO line named "FOO" on the schematic 115 * "FOO_N" = GPIO line named "FOO" on schematic, active low 116 */ 117 gpio-line-names = "ID_SDA", 118 "ID_SCL", 119 "SDA1", 120 "SCL1", 121 "GPIO_GCLK", 122 "GPIO5", 123 "GPIO6", 124 "SPI_CE1_N", 125 "SPI_CE0_N", 126 "SPI_MISO", 127 "SPI_MOSI", 128 "SPI_SCLK", 129 "GPIO12", 130 "GPIO13", 131 /* Serial port */ 132 "TXD1", 133 "RXD1", 134 "GPIO16", 135 "GPIO17", 136 "GPIO18", 137 "GPIO19", 138 "GPIO20", 139 "GPIO21", 140 "GPIO22", 141 "GPIO23", 142 "GPIO24", 143 "GPIO25", 144 "GPIO26", 145 "GPIO27", 146 "RGMII_MDIO", 147 "RGMIO_MDC", 148 /* Used by BT module */ 149 "CTS0", 150 "RTS0", 151 "TXD0", 152 "RXD0", 153 /* Used by Wifi */ 154 "SD1_CLK", 155 "SD1_CMD", 156 "SD1_DATA0", 157 "SD1_DATA1", 158 "SD1_DATA2", 159 "SD1_DATA3", 160 /* Shared with SPI flash */ 161 "PWM0_MISO", 162 "PWM1_MOSI", 163 "STATUS_LED_G_CLK", 164 "SPIFLASH_CE_N", 165 "SDA0", 166 "SCL0", 167 "RGMII_RXCLK", 168 "RGMII_RXCTL", 169 "RGMII_RXD0", 170 "RGMII_RXD1", 171 "RGMII_RXD2", 172 "RGMII_RXD3", 173 "RGMII_TXCLK", 174 "RGMII_TXCTL", 175 "RGMII_TXD0", 176 "RGMII_TXD1", 177 "RGMII_TXD2", 178 "RGMII_TXD3"; 179}; 180 181&hdmi0 { 182 clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>; 183 clock-names = "hdmi", "bvb", "audio", "cec"; 184 status = "okay"; 185}; 186 187&hdmi1 { 188 clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>; 189 clock-names = "hdmi", "bvb", "audio", "cec"; 190 status = "okay"; 191}; 192 193&hvs { 194 clocks = <&firmware_clocks 4>; 195}; 196 197&pixelvalve0 { 198 status = "okay"; 199}; 200 201&pixelvalve1 { 202 status = "okay"; 203}; 204 205&pixelvalve2 { 206 status = "okay"; 207}; 208 209&pixelvalve4 { 210 status = "okay"; 211}; 212 213&pwm1 { 214 pinctrl-names = "default"; 215 pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>; 216 status = "okay"; 217}; 218 219/* SDHCI is used to control the SDIO for wireless */ 220&sdhci { 221 #address-cells = <1>; 222 #size-cells = <0>; 223 pinctrl-names = "default"; 224 pinctrl-0 = <&emmc_gpio34>; 225 bus-width = <4>; 226 non-removable; 227 mmc-pwrseq = <&wifi_pwrseq>; 228 status = "okay"; 229 230 brcmf: wifi@1 { 231 reg = <1>; 232 compatible = "brcm,bcm4329-fmac"; 233 }; 234}; 235 236/* EMMC2 is used to drive the SD card */ 237&emmc2 { 238 vqmmc-supply = <&sd_io_1v8_reg>; 239 vmmc-supply = <&sd_vcc_reg>; 240 broken-cd; 241 status = "okay"; 242}; 243 244&genet { 245 phy-handle = <&phy1>; 246 phy-mode = "rgmii-rxid"; 247 status = "okay"; 248}; 249 250&genet_mdio { 251 phy1: ethernet-phy@1 { 252 /* No PHY interrupt */ 253 reg = <0x1>; 254 }; 255}; 256 257&pcie0 { 258 pci@0,0 { 259 device_type = "pci"; 260 #address-cells = <3>; 261 #size-cells = <2>; 262 ranges; 263 264 reg = <0 0 0 0 0>; 265 266 usb@0,0 { 267 reg = <0 0 0 0 0>; 268 resets = <&reset RASPBERRYPI_FIRMWARE_RESET_ID_USB>; 269 }; 270 }; 271}; 272 273/* uart0 communicates with the BT module */ 274&uart0 { 275 pinctrl-names = "default"; 276 pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>; 277 uart-has-rtscts; 278 status = "okay"; 279 280 bluetooth { 281 compatible = "brcm,bcm43438-bt"; 282 max-speed = <2000000>; 283 shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>; 284 }; 285}; 286 287/* uart1 is mapped to the pin header */ 288&uart1 { 289 pinctrl-names = "default"; 290 pinctrl-0 = <&uart1_gpio14>; 291 status = "okay"; 292}; 293 294&vchiq { 295 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; 296}; 297 298&vc4 { 299 status = "okay"; 300}; 301 302&vec { 303 status = "disabled"; 304}; 305