Created
February 24, 2023 17:45
-
-
Save xvzf/dffe8826431192da3174a153b35adbcf to your computer and use it in GitHub Desktop.
Home Assistant Yellow device tree
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SPDX-License-Identifier: GPL-2.0 | |
| /dts-v1/; | |
| #include "bcm2711.dtsi" | |
| #include "bcm2711-rpi.dtsi" | |
| //#include "bcm283x-rpi-usb-peripheral.dtsi" | |
| / { | |
| compatible = "raspberrypi,4-compute-module-ha-yellow", "raspberrypi,4-compute-module", "brcm,bcm2711"; | |
| model = "Raspberry Pi Compute Module 4 on Home Assistant Yellow"; | |
| chosen { | |
| /* 8250 auxiliary UART instead of pl011 */ | |
| stdout-path = "serial1:115200n8"; | |
| }; | |
| leds { | |
| led-act { | |
| gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; | |
| }; | |
| led-pwr { | |
| label = "PWR"; | |
| gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; | |
| default-state = "keep"; | |
| linux,default-trigger = "default-on"; | |
| }; | |
| }; | |
| wifi_pwrseq: wifi-pwrseq { | |
| compatible = "mmc-pwrseq-simple"; | |
| reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>; | |
| }; | |
| sd_io_1v8_reg: sd_io_1v8_reg { | |
| compatible = "regulator-gpio"; | |
| regulator-name = "vdd-sd-io"; | |
| regulator-min-microvolt = <1800000>; | |
| regulator-max-microvolt = <3300000>; | |
| regulator-boot-on; | |
| regulator-always-on; | |
| regulator-settling-time-us = <5000>; | |
| gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>; | |
| states = <1800000 0x1>, | |
| <3300000 0x0>; | |
| status = "okay"; | |
| }; | |
| 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>; | |
| }; | |
| }; | |
| &ddc0 { | |
| status = "okay"; | |
| }; | |
| &ddc1 { | |
| status = "okay"; | |
| }; | |
| &expgpio { | |
| gpio-line-names = "BT_ON", | |
| "WL_ON", | |
| "PWR_LED_OFF", | |
| "ANT1", | |
| "VDD_SD_IO_SEL", | |
| "CAM_GPIO", | |
| "SD_PWR_ON", | |
| "ANT2"; | |
| ant1: ant1 { | |
| gpio-hog; | |
| gpios = <3 GPIO_ACTIVE_HIGH>; | |
| output-high; | |
| }; | |
| ant2: ant2 { | |
| gpio-hog; | |
| gpios = <7 GPIO_ACTIVE_HIGH>; | |
| output-low; | |
| }; | |
| }; | |
| &gpio { | |
| /* | |
| * Parts taken from rpi_SCH_4b_4p0_reduced.pdf and | |
| * the official GPU firmware DT blob. | |
| * | |
| * Legend: | |
| * "FOO" = GPIO line named "FOO" on the schematic | |
| * "FOO_N" = GPIO line named "FOO" on schematic, active low | |
| */ | |
| gpio-line-names = "ID_SDA", | |
| "ID_SCL", | |
| "SDA1", | |
| "SCL1", | |
| "GPIO_GCLK", | |
| "GPIO5", | |
| "GPIO6", | |
| "SPI_CE1_N", | |
| "SPI_CE0_N", | |
| "SPI_MISO", | |
| "SPI_MOSI", | |
| "SPI_SCLK", | |
| "GPIO12", | |
| "GPIO13", | |
| /* Serial port */ | |
| "TXD1", | |
| "RXD1", | |
| "GPIO16", | |
| "GPIO17", | |
| "GPIO18", | |
| "GPIO19", | |
| "GPIO20", | |
| "GPIO21", | |
| "GPIO22", | |
| "GPIO23", | |
| "GPIO24", | |
| "GPIO25", | |
| "GPIO26", | |
| "GPIO27", | |
| "RGMII_MDIO", | |
| "RGMIO_MDC", | |
| /* Used by BT module */ | |
| "CTS0", | |
| "RTS0", | |
| "TXD0", | |
| "RXD0", | |
| /* Used by Wifi */ | |
| "SD1_CLK", | |
| "SD1_CMD", | |
| "SD1_DATA0", | |
| "SD1_DATA1", | |
| "SD1_DATA2", | |
| "SD1_DATA3", | |
| /* Shared with SPI flash */ | |
| "PWM0_MISO", | |
| "PWM1_MOSI", | |
| "STATUS_LED_G_CLK", | |
| "SPIFLASH_CE_N", | |
| "SDA0", | |
| "SCL0", | |
| "RGMII_RXCLK", | |
| "RGMII_RXCTL", | |
| "RGMII_RXD0", | |
| "RGMII_RXD1", | |
| "RGMII_RXD2", | |
| "RGMII_RXD3", | |
| "RGMII_TXCLK", | |
| "RGMII_TXCTL", | |
| "RGMII_TXD0", | |
| "RGMII_TXD1", | |
| "RGMII_TXD2", | |
| "RGMII_TXD3"; | |
| }; | |
| &hdmi0 { | |
| status = "okay"; | |
| }; | |
| &hdmi1 { | |
| status = "okay"; | |
| }; | |
| &pixelvalve0 { | |
| status = "okay"; | |
| }; | |
| &pixelvalve1 { | |
| status = "okay"; | |
| }; | |
| &pixelvalve2 { | |
| status = "okay"; | |
| }; | |
| &pixelvalve4 { | |
| status = "okay"; | |
| }; | |
| &pwm1 { | |
| pinctrl-names = "default"; | |
| pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>; | |
| status = "okay"; | |
| }; | |
| /* SDHCI is used to control the SDIO for wireless */ | |
| &sdhci { | |
| #address-cells = <1>; | |
| #size-cells = <0>; | |
| pinctrl-names = "default"; | |
| pinctrl-0 = <&emmc_gpio34>; | |
| bus-width = <4>; | |
| non-removable; | |
| mmc-pwrseq = <&wifi_pwrseq>; | |
| status = "okay"; | |
| brcmf: wifi@1 { | |
| reg = <1>; | |
| compatible = "brcm,bcm4329-fmac"; | |
| }; | |
| }; | |
| /* EMMC2 is used to drive the EMMC card */ | |
| &emmc2 { | |
| bus-width = <8>; | |
| vqmmc-supply = <&sd_io_1v8_reg>; | |
| vmmc-supply = <&sd_vcc_reg>; | |
| broken-cd; | |
| status = "okay"; | |
| }; | |
| &genet { | |
| phy-handle = <&phy1>; | |
| phy-mode = "rgmii-rxid"; | |
| status = "okay"; | |
| }; | |
| &genet_mdio { | |
| phy1: ethernet-phy@0 { | |
| /* No PHY interrupt */ | |
| reg = <0x0>; | |
| }; | |
| }; | |
| &pcie0 { | |
| pci@0,0 { | |
| device-type = "pci"; | |
| #address-cells = <3>; | |
| #size-cells = <2>; | |
| ranges; | |
| reg = <0 0 0 0 0>; | |
| }; | |
| }; | |
| /* uart0 communicates with the BT module */ | |
| &uart0 { | |
| pinctrl-names = "default"; | |
| pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>; | |
| uart-has-rtscts; | |
| status = "okay"; | |
| bluetooth { | |
| compatible = "brcm,bcm43438-bt"; | |
| max-speed = <2000000>; | |
| shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>; | |
| }; | |
| }; | |
| /* uart1 is mapped to the pin header */ | |
| &uart1 { | |
| pinctrl-names = "default"; | |
| pinctrl-0 = <&uart1_gpio14>; | |
| status = "okay"; | |
| }; | |
| &vchiq { | |
| interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; | |
| }; | |
| &vc4 { | |
| status = "okay"; | |
| }; | |
| &vec { | |
| status = "disabled"; | |
| }; | |
| // ============================================= | |
| // Downstream rpi- changes | |
| #define BCM2711 | |
| #include "bcm270x.dtsi" | |
| #include "bcm271x-rpi-bt.dtsi" | |
| / { | |
| soc { | |
| /delete-node/ pixelvalve@7e807000; | |
| /delete-node/ hdmi@7e902000; | |
| }; | |
| }; | |
| #include "bcm2711-rpi-ds.dtsi" | |
| #include "bcm283x-rpi-csi0-2lane.dtsi" | |
| #include "bcm283x-rpi-csi1-4lane.dtsi" | |
| #include "bcm283x-rpi-i2c0mux_0_44.dtsi" | |
| / { | |
| chosen { | |
| bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1"; | |
| }; | |
| aliases { | |
| serial0 = &uart1; | |
| serial1 = &uart0; | |
| mmc0 = &emmc2; | |
| mmc1 = &mmcnr; | |
| mmc2 = &sdhost; | |
| i2c3 = &i2c3; | |
| i2c4 = &i2c4; | |
| i2c5 = &i2c5; | |
| i2c6 = &i2c6; | |
| i2c20 = &ddc0; | |
| i2c21 = &ddc1; | |
| spi3 = &spi3; | |
| spi4 = &spi4; | |
| spi5 = &spi5; | |
| spi6 = &spi6; | |
| /delete-property/ intc; | |
| }; | |
| /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"; | |
| }; | |
| &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 = <BCM2835_FSEL_ALT0>; | |
| }; | |
| spi0_cs_pins: spi0_cs_pins { | |
| brcm,pins = <8 7>; | |
| brcm,function = <BCM2835_FSEL_GPIO_OUT>; | |
| }; | |
| spi3_pins: spi3_pins { | |
| brcm,pins = <1 2 3>; | |
| brcm,function = <BCM2835_FSEL_ALT3>; | |
| }; | |
| spi3_cs_pins: spi3_cs_pins { | |
| brcm,pins = <0 24>; | |
| brcm,function = <BCM2835_FSEL_GPIO_OUT>; | |
| }; | |
| spi4_pins: spi4_pins { | |
| brcm,pins = <5 6 7>; | |
| brcm,function = <BCM2835_FSEL_ALT3>; | |
| }; | |
| spi4_cs_pins: spi4_cs_pins { | |
| brcm,pins = <4 25>; | |
| brcm,function = <BCM2835_FSEL_GPIO_OUT>; | |
| }; | |
| spi5_pins: spi5_pins { | |
| brcm,pins = <13 14 15>; | |
| brcm,function = <BCM2835_FSEL_ALT3>; | |
| }; | |
| spi5_cs_pins: spi5_cs_pins { | |
| brcm,pins = <12 26>; | |
| brcm,function = <BCM2835_FSEL_GPIO_OUT>; | |
| }; | |
| spi6_pins: spi6_pins { | |
| brcm,pins = <19 20 21>; | |
| brcm,function = <BCM2835_FSEL_ALT3>; | |
| }; | |
| spi6_cs_pins: spi6_cs_pins { | |
| brcm,pins = <18 27>; | |
| brcm,function = <BCM2835_FSEL_GPIO_OUT>; | |
| }; | |
| i2c0_pins: i2c0 { | |
| brcm,pins = <0 1>; | |
| brcm,function = <BCM2835_FSEL_ALT0>; | |
| brcm,pull = <BCM2835_PUD_UP>; | |
| }; | |
| i2c1_pins: i2c1 { | |
| brcm,pins = <2 3>; | |
| brcm,function = <BCM2835_FSEL_ALT0>; | |
| brcm,pull = <BCM2835_PUD_UP>; | |
| }; | |
| i2c3_pins: i2c3 { | |
| brcm,pins = <4 5>; | |
| brcm,function = <BCM2835_FSEL_ALT5>; | |
| brcm,pull = <BCM2835_PUD_UP>; | |
| }; | |
| i2c4_pins: i2c4 { | |
| brcm,pins = <8 9>; | |
| brcm,function = <BCM2835_FSEL_ALT5>; | |
| brcm,pull = <BCM2835_PUD_UP>; | |
| }; | |
| i2c5_pins: i2c5 { | |
| brcm,pins = <12 13>; | |
| brcm,function = <BCM2835_FSEL_ALT5>; | |
| brcm,pull = <BCM2835_PUD_UP>; | |
| }; | |
| i2c6_pins: i2c6 { | |
| brcm,pins = <22 23>; | |
| brcm,function = <BCM2835_FSEL_ALT5>; | |
| brcm,pull = <BCM2835_PUD_UP>; | |
| }; | |
| i2s_pins: i2s { | |
| brcm,pins = <18 19 20 21>; | |
| brcm,function = <BCM2835_FSEL_ALT0>; | |
| }; | |
| sdio_pins: sdio_pins { | |
| brcm,pins = <34 35 36 37 38 39>; | |
| brcm,function = <BCM2835_FSEL_ALT3>; // 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 = <BCM2835_FSEL_ALT3>; | |
| brcm,pull = <0 2>; | |
| }; | |
| uart1_pins: uart1_pins { | |
| brcm,pins; | |
| brcm,function; | |
| brcm,pull; | |
| }; | |
| uart2_pins: uart2_pins { | |
| brcm,pins = <0 1>; | |
| brcm,function = <BCM2835_FSEL_ALT4>; | |
| brcm,pull = <0 2>; | |
| }; | |
| uart3_pins: uart3_pins { | |
| brcm,pins = <4 5>; | |
| brcm,function = <BCM2835_FSEL_ALT4>; | |
| brcm,pull = <0 2>; | |
| }; | |
| uart4_pins: uart4_pins { | |
| brcm,pins = <8 9>; | |
| brcm,function = <BCM2835_FSEL_ALT4>; | |
| brcm,pull = <0 2>; | |
| }; | |
| uart5_pins: uart5_pins { | |
| brcm,pins = <12 13>; | |
| brcm,function = <BCM2835_FSEL_ALT4>; | |
| brcm,pull = <0 2>; | |
| }; | |
| }; | |
| &i2c0if { | |
| clock-frequency = <100000>; | |
| }; | |
| &i2c1 { | |
| pinctrl-names = "default"; | |
| pinctrl-0 = <&i2c1_pins>; | |
| clock-frequency = <100000>; | |
| }; | |
| &i2s { | |
| pinctrl-names = "default"; | |
| pinctrl-0 = <&i2s_pins>; | |
| }; | |
| // ============================================= | |
| // Board specific stuff here | |
| &pcie0 { | |
| brcm,enable-l1ss; | |
| }; | |
| &sdhost { | |
| status = "disabled"; | |
| }; | |
| &phy1 { | |
| led-modes = <0x00 0x08>; /* link/activity link */ | |
| }; | |
| &gpio { | |
| audio_pins: audio_pins { | |
| brcm,pins = <>; | |
| brcm,function = <>; | |
| }; | |
| }; | |
| &leds { | |
| act_led: led-act { | |
| label = "led0"; | |
| linux,default-trigger = "mmc0"; | |
| gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; | |
| }; | |
| pwr_led: 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>; | |
| brcm,disable-headphones = <1>; | |
| }; | |
| cam0_reg: &cam1_reg { | |
| gpio = <&expgpio 5 GPIO_ACTIVE_HIGH>; | |
| }; | |
| / { | |
| __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"; | |
| ant1 = <&ant1>,"output-high?=on", | |
| <&ant1>, "output-low?=off", | |
| <&ant2>, "output-high?=off", | |
| <&ant2>, "output-low?=on"; | |
| ant2 = <&ant1>,"output-high?=off", | |
| <&ant1>, "output-low?=on", | |
| <&ant2>, "output-high?=on", | |
| <&ant2>, "output-low?=off"; | |
| noant = <&ant1>,"output-high?=off", | |
| <&ant1>, "output-low?=on", | |
| <&ant2>, "output-high?=off", | |
| <&ant2>, "output-low?=on"; | |
| sd_poll_once = <&emmc2>, "non-removable?"; | |
| spi_dma4 = <&spi0>, "dmas:0=", <&dma40>, | |
| <&spi0>, "dmas:8=", <&dma40>; | |
| }; | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment