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