Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: Add Raspberry Pi Compute Module 4

The Raspberry Pi Compute Module 4 (CM4) are SoMs which contain the
following:
* BCM2711 quad core processor
* up to 8 GB RAM
* up to 32 GB eMMC
* a GPIO expander
* Gigabit PHY BCM54210PE
* Wifi/BT module with internal and external antenna

The eMMC and the Wifi/BT module are optional.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Link: https://lore.kernel.org/r/1628334401-6577-9-git-send-email-stefan.wahren@i2se.com
Signed-off-by: Nicolas Saenz Julienne <nsaenz@kernel.org>

authored by

Stefan Wahren and committed by
Nicolas Saenz Julienne
d1b2237b 09ce63ec

+113
+113
arch/arm/boot/dts/bcm2711-rpi-cm4.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /dts-v1/; 3 + #include "bcm2711.dtsi" 4 + #include "bcm2711-rpi.dtsi" 5 + #include "bcm283x-rpi-wifi-bt.dtsi" 6 + 7 + / { 8 + compatible = "raspberrypi,4-compute-module", "brcm,bcm2711"; 9 + 10 + chosen { 11 + /* 8250 auxiliary UART instead of pl011 */ 12 + stdout-path = "serial1:115200n8"; 13 + }; 14 + 15 + sd_io_1v8_reg: sd_io_1v8_reg { 16 + compatible = "regulator-gpio"; 17 + regulator-name = "vdd-sd-io"; 18 + regulator-min-microvolt = <1800000>; 19 + regulator-max-microvolt = <3300000>; 20 + regulator-boot-on; 21 + regulator-always-on; 22 + regulator-settling-time-us = <5000>; 23 + gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>; 24 + states = <1800000 0x1>, 25 + <3300000 0x0>; 26 + status = "okay"; 27 + }; 28 + 29 + sd_vcc_reg: sd_vcc_reg { 30 + compatible = "regulator-fixed"; 31 + regulator-name = "vcc-sd"; 32 + regulator-min-microvolt = <3300000>; 33 + regulator-max-microvolt = <3300000>; 34 + regulator-boot-on; 35 + enable-active-high; 36 + gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>; 37 + }; 38 + }; 39 + 40 + &bt { 41 + shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>; 42 + }; 43 + 44 + /* EMMC2 is used to drive the eMMC */ 45 + &emmc2 { 46 + bus-width = <8>; 47 + vqmmc-supply = <&sd_io_1v8_reg>; 48 + vmmc-supply = <&sd_vcc_reg>; 49 + broken-cd; 50 + /* Even the IP block is limited to 100 MHz 51 + * this provides a throughput gain 52 + */ 53 + mmc-hs200-1_8v; 54 + status = "okay"; 55 + }; 56 + 57 + &expgpio { 58 + gpio-line-names = "BT_ON", 59 + "WL_ON", 60 + "PWR_LED_OFF", 61 + "ANT1", 62 + "VDD_SD_IO_SEL", 63 + "CAM_GPIO", 64 + "SD_PWR_ON", 65 + "ANT2"; 66 + 67 + ant1: ant1-hog { 68 + gpio-hog; 69 + gpios = <3 GPIO_ACTIVE_HIGH>; 70 + /* internal antenna enabled */ 71 + output-high; 72 + line-name = "ant1"; 73 + }; 74 + 75 + ant2: ant2-hog { 76 + gpio-hog; 77 + gpios = <7 GPIO_ACTIVE_HIGH>; 78 + /* external antenna disabled */ 79 + output-low; 80 + line-name = "ant2"; 81 + }; 82 + }; 83 + 84 + &genet { 85 + phy-handle = <&phy1>; 86 + phy-mode = "rgmii-rxid"; 87 + status = "okay"; 88 + }; 89 + 90 + &genet_mdio { 91 + phy1: ethernet-phy@0 { 92 + /* No PHY interrupt */ 93 + reg = <0x0>; 94 + }; 95 + }; 96 + 97 + /* uart0 communicates with the BT module */ 98 + &uart0 { 99 + pinctrl-names = "default"; 100 + pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>; 101 + uart-has-rtscts; 102 + }; 103 + 104 + /* uart1 is mapped to the pin header */ 105 + &uart1 { 106 + pinctrl-names = "default"; 107 + pinctrl-0 = <&uart1_gpio14>; 108 + status = "okay"; 109 + }; 110 + 111 + &wifi_pwrseq { 112 + reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>; 113 + };