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