xref: /linux/scripts/dtc/include-prefixes/arm64/broadcom/bcm2712-rpi-5-b-base.dtsi (revision e55feea3a03aa1eaf5abb22cc854208813865e04)
1*bc97e616SAndrea della Porta// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*bc97e616SAndrea della Porta/dts-v1/;
3*bc97e616SAndrea della Porta
4*bc97e616SAndrea della Porta#include <dt-bindings/gpio/gpio.h>
5*bc97e616SAndrea della Porta#include <dt-bindings/input/input.h>
6*bc97e616SAndrea della Porta#include "bcm2712.dtsi"
7*bc97e616SAndrea della Porta
8*bc97e616SAndrea della Porta/ {
9*bc97e616SAndrea della Porta	compatible = "raspberrypi,5-model-b", "brcm,bcm2712";
10*bc97e616SAndrea della Porta	model = "Raspberry Pi 5";
11*bc97e616SAndrea della Porta
12*bc97e616SAndrea della Porta	aliases {
13*bc97e616SAndrea della Porta		serial10 = &uart10;
14*bc97e616SAndrea della Porta	};
15*bc97e616SAndrea della Porta
16*bc97e616SAndrea della Porta	chosen: chosen {
17*bc97e616SAndrea della Porta		stdout-path = "serial10:115200n8";
18*bc97e616SAndrea della Porta	};
19*bc97e616SAndrea della Porta
20*bc97e616SAndrea della Porta	clk_rp1_xosc: clock-50000000 {
21*bc97e616SAndrea della Porta		compatible = "fixed-clock";
22*bc97e616SAndrea della Porta		#clock-cells = <0>;
23*bc97e616SAndrea della Porta		clock-output-names = "rp1-xosc";
24*bc97e616SAndrea della Porta		clock-frequency = <50000000>;
25*bc97e616SAndrea della Porta	};
26*bc97e616SAndrea della Porta
27*bc97e616SAndrea della Porta	/* Will be filled by the bootloader */
28*bc97e616SAndrea della Porta	memory@0 {
29*bc97e616SAndrea della Porta		device_type = "memory";
30*bc97e616SAndrea della Porta		reg = <0 0 0 0x28000000>;
31*bc97e616SAndrea della Porta	};
32*bc97e616SAndrea della Porta
33*bc97e616SAndrea della Porta	gpio-keys {
34*bc97e616SAndrea della Porta		compatible = "gpio-keys";
35*bc97e616SAndrea della Porta		pinctrl-names = "default";
36*bc97e616SAndrea della Porta		pinctrl-0 = <&pwr_button_default>;
37*bc97e616SAndrea della Porta		status = "okay";
38*bc97e616SAndrea della Porta
39*bc97e616SAndrea della Porta		power_button: power-button {
40*bc97e616SAndrea della Porta			label = "pwr_button";
41*bc97e616SAndrea della Porta			linux,code = <KEY_POWER>;
42*bc97e616SAndrea della Porta			gpios = <&gio 20 GPIO_ACTIVE_LOW>;
43*bc97e616SAndrea della Porta			debounce-interval = <50>;
44*bc97e616SAndrea della Porta		};
45*bc97e616SAndrea della Porta	};
46*bc97e616SAndrea della Porta
47*bc97e616SAndrea della Porta	sd_io_1v8_reg: sd-io-1v8-reg {
48*bc97e616SAndrea della Porta		compatible = "regulator-gpio";
49*bc97e616SAndrea della Porta		regulator-name = "vdd-sd-io";
50*bc97e616SAndrea della Porta		regulator-min-microvolt = <1800000>;
51*bc97e616SAndrea della Porta		regulator-max-microvolt = <3300000>;
52*bc97e616SAndrea della Porta		regulator-boot-on;
53*bc97e616SAndrea della Porta		regulator-always-on;
54*bc97e616SAndrea della Porta		regulator-settling-time-us = <5000>;
55*bc97e616SAndrea della Porta		gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
56*bc97e616SAndrea della Porta		states = <1800000 1>,
57*bc97e616SAndrea della Porta			 <3300000 0>;
58*bc97e616SAndrea della Porta	};
59*bc97e616SAndrea della Porta
60*bc97e616SAndrea della Porta	sd_vcc_reg: sd-vcc-reg {
61*bc97e616SAndrea della Porta		compatible = "regulator-fixed";
62*bc97e616SAndrea della Porta		regulator-name = "vcc-sd";
63*bc97e616SAndrea della Porta		regulator-min-microvolt = <3300000>;
64*bc97e616SAndrea della Porta		regulator-max-microvolt = <3300000>;
65*bc97e616SAndrea della Porta		regulator-boot-on;
66*bc97e616SAndrea della Porta		enable-active-high;
67*bc97e616SAndrea della Porta		gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
68*bc97e616SAndrea della Porta	};
69*bc97e616SAndrea della Porta
70*bc97e616SAndrea della Porta	wl_on_reg: wl-on-reg {
71*bc97e616SAndrea della Porta		compatible = "regulator-fixed";
72*bc97e616SAndrea della Porta		regulator-name = "wl-on-regulator";
73*bc97e616SAndrea della Porta		regulator-min-microvolt = <3300000>;
74*bc97e616SAndrea della Porta		regulator-max-microvolt = <3300000>;
75*bc97e616SAndrea della Porta		pinctrl-0 = <&wl_on_default>;
76*bc97e616SAndrea della Porta		pinctrl-names = "default";
77*bc97e616SAndrea della Porta		gpio = <&gio 28 GPIO_ACTIVE_HIGH>;
78*bc97e616SAndrea della Porta		startup-delay-us = <150000>;
79*bc97e616SAndrea della Porta		enable-active-high;
80*bc97e616SAndrea della Porta	};
81*bc97e616SAndrea della Porta};
82*bc97e616SAndrea della Porta
83*bc97e616SAndrea della Porta&pinctrl {
84*bc97e616SAndrea della Porta	bt_shutdown_default: bt-shutdown-default-state {
85*bc97e616SAndrea della Porta		function = "gpio";
86*bc97e616SAndrea della Porta		pins = "gpio29";
87*bc97e616SAndrea della Porta	};
88*bc97e616SAndrea della Porta
89*bc97e616SAndrea della Porta	emmc_sd_default: emmc-sd-default-state {
90*bc97e616SAndrea della Porta		pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3";
91*bc97e616SAndrea della Porta		bias-pull-up;
92*bc97e616SAndrea della Porta	};
93*bc97e616SAndrea della Porta
94*bc97e616SAndrea della Porta	pwr_button_default: pwr-button-default-state {
95*bc97e616SAndrea della Porta		function = "gpio";
96*bc97e616SAndrea della Porta		pins = "gpio20";
97*bc97e616SAndrea della Porta		bias-pull-up;
98*bc97e616SAndrea della Porta	};
99*bc97e616SAndrea della Porta
100*bc97e616SAndrea della Porta	sdio2_30_default: sdio2-30-default-state {
101*bc97e616SAndrea della Porta		clk-pins {
102*bc97e616SAndrea della Porta			function = "sd2";
103*bc97e616SAndrea della Porta			pins = "gpio30";
104*bc97e616SAndrea della Porta			bias-disable;
105*bc97e616SAndrea della Porta		};
106*bc97e616SAndrea della Porta		cmd-pins {
107*bc97e616SAndrea della Porta			function = "sd2";
108*bc97e616SAndrea della Porta			pins = "gpio31";
109*bc97e616SAndrea della Porta			bias-pull-up;
110*bc97e616SAndrea della Porta		};
111*bc97e616SAndrea della Porta		dat-pins {
112*bc97e616SAndrea della Porta			function = "sd2";
113*bc97e616SAndrea della Porta			pins = "gpio32", "gpio33", "gpio34", "gpio35";
114*bc97e616SAndrea della Porta			bias-pull-up;
115*bc97e616SAndrea della Porta		};
116*bc97e616SAndrea della Porta	};
117*bc97e616SAndrea della Porta
118*bc97e616SAndrea della Porta	uarta_24_default: uarta-24-default-state {
119*bc97e616SAndrea della Porta		rts-pins {
120*bc97e616SAndrea della Porta			function = "uart0";
121*bc97e616SAndrea della Porta			pins = "gpio24";
122*bc97e616SAndrea della Porta			bias-disable;
123*bc97e616SAndrea della Porta		};
124*bc97e616SAndrea della Porta		cts-pins {
125*bc97e616SAndrea della Porta			function = "uart0";
126*bc97e616SAndrea della Porta			pins = "gpio25";
127*bc97e616SAndrea della Porta			bias-pull-up;
128*bc97e616SAndrea della Porta		};
129*bc97e616SAndrea della Porta		txd-pins {
130*bc97e616SAndrea della Porta			function = "uart0";
131*bc97e616SAndrea della Porta			pins = "gpio26";
132*bc97e616SAndrea della Porta			bias-disable;
133*bc97e616SAndrea della Porta		};
134*bc97e616SAndrea della Porta		rxd-pins {
135*bc97e616SAndrea della Porta			function = "uart0";
136*bc97e616SAndrea della Porta			pins = "gpio27";
137*bc97e616SAndrea della Porta			bias-pull-up;
138*bc97e616SAndrea della Porta		};
139*bc97e616SAndrea della Porta	};
140*bc97e616SAndrea della Porta
141*bc97e616SAndrea della Porta	wl_on_default: wl-on-default-state {
142*bc97e616SAndrea della Porta		function = "gpio";
143*bc97e616SAndrea della Porta		pins = "gpio28";
144*bc97e616SAndrea della Porta	};
145*bc97e616SAndrea della Porta};
146*bc97e616SAndrea della Porta
147*bc97e616SAndrea della Porta&pinctrl_aon {
148*bc97e616SAndrea della Porta	emmc_aon_cd_default: emmc-aon-cd-default-state {
149*bc97e616SAndrea della Porta		function = "sd_card_g";
150*bc97e616SAndrea della Porta		pins = "aon_gpio5";
151*bc97e616SAndrea della Porta		bias-pull-up;
152*bc97e616SAndrea della Porta	};
153*bc97e616SAndrea della Porta};
154*bc97e616SAndrea della Porta
155*bc97e616SAndrea della Porta/* The Debug UART, on Rpi5 it's on JST-SH 1.0mm 3-pin connector
156*bc97e616SAndrea della Porta * labeled "UART", i.e. the interface with the system console.
157*bc97e616SAndrea della Porta */
158*bc97e616SAndrea della Porta&uart10 {
159*bc97e616SAndrea della Porta	status = "okay";
160*bc97e616SAndrea della Porta};
161*bc97e616SAndrea della Porta
162*bc97e616SAndrea della Porta/* SDIO1 is used to drive the SD card */
163*bc97e616SAndrea della Porta&sdio1 {
164*bc97e616SAndrea della Porta	pinctrl-0 = <&emmc_sd_default>, <&emmc_aon_cd_default>;
165*bc97e616SAndrea della Porta	pinctrl-names = "default";
166*bc97e616SAndrea della Porta	vqmmc-supply = <&sd_io_1v8_reg>;
167*bc97e616SAndrea della Porta	vmmc-supply = <&sd_vcc_reg>;
168*bc97e616SAndrea della Porta	bus-width = <4>;
169*bc97e616SAndrea della Porta	sd-uhs-sdr50;
170*bc97e616SAndrea della Porta	sd-uhs-ddr50;
171*bc97e616SAndrea della Porta	sd-uhs-sdr104;
172*bc97e616SAndrea della Porta	cd-gpios = <&gio_aon 5 GPIO_ACTIVE_LOW>;
173*bc97e616SAndrea della Porta};
174*bc97e616SAndrea della Porta
175*bc97e616SAndrea della Porta&sdio2 {
176*bc97e616SAndrea della Porta	pinctrl-0 = <&sdio2_30_default>;
177*bc97e616SAndrea della Porta	pinctrl-names = "default";
178*bc97e616SAndrea della Porta	bus-width = <4>;
179*bc97e616SAndrea della Porta	vmmc-supply = <&wl_on_reg>;
180*bc97e616SAndrea della Porta	sd-uhs-ddr50;
181*bc97e616SAndrea della Porta	non-removable;
182*bc97e616SAndrea della Porta	status = "okay";
183*bc97e616SAndrea della Porta	#address-cells = <1>;
184*bc97e616SAndrea della Porta	#size-cells = <0>;
185*bc97e616SAndrea della Porta
186*bc97e616SAndrea della Porta	wifi: wifi@1 {
187*bc97e616SAndrea della Porta		reg = <1>;
188*bc97e616SAndrea della Porta		compatible = "brcm,bcm4329-fmac";
189*bc97e616SAndrea della Porta	};
190*bc97e616SAndrea della Porta};
191*bc97e616SAndrea della Porta
192*bc97e616SAndrea della Porta&soc {
193*bc97e616SAndrea della Porta	firmware: firmware {
194*bc97e616SAndrea della Porta		compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
195*bc97e616SAndrea della Porta		#address-cells = <1>;
196*bc97e616SAndrea della Porta		#size-cells = <1>;
197*bc97e616SAndrea della Porta
198*bc97e616SAndrea della Porta		mboxes = <&mailbox>;
199*bc97e616SAndrea della Porta		dma-ranges;
200*bc97e616SAndrea della Porta
201*bc97e616SAndrea della Porta		firmware_clocks: clocks {
202*bc97e616SAndrea della Porta			compatible = "raspberrypi,firmware-clocks";
203*bc97e616SAndrea della Porta			#clock-cells = <1>;
204*bc97e616SAndrea della Porta		};
205*bc97e616SAndrea della Porta
206*bc97e616SAndrea della Porta		reset: reset {
207*bc97e616SAndrea della Porta			compatible = "raspberrypi,firmware-reset";
208*bc97e616SAndrea della Porta			#reset-cells = <1>;
209*bc97e616SAndrea della Porta		};
210*bc97e616SAndrea della Porta	};
211*bc97e616SAndrea della Porta
212*bc97e616SAndrea della Porta	power: power {
213*bc97e616SAndrea della Porta		compatible = "raspberrypi,bcm2835-power";
214*bc97e616SAndrea della Porta		firmware = <&firmware>;
215*bc97e616SAndrea della Porta		#power-domain-cells = <1>;
216*bc97e616SAndrea della Porta	};
217*bc97e616SAndrea della Porta};
218*bc97e616SAndrea della Porta
219*bc97e616SAndrea della Porta/* uarta communicates with the BT module */
220*bc97e616SAndrea della Porta&uarta {
221*bc97e616SAndrea della Porta	uart-has-rtscts;
222*bc97e616SAndrea della Porta	pinctrl-0 = <&uarta_24_default &bt_shutdown_default>;
223*bc97e616SAndrea della Porta	pinctrl-names = "default";
224*bc97e616SAndrea della Porta	status = "okay";
225*bc97e616SAndrea della Porta
226*bc97e616SAndrea della Porta	bluetooth: bluetooth {
227*bc97e616SAndrea della Porta		compatible = "brcm,bcm43438-bt";
228*bc97e616SAndrea della Porta		max-speed = <3000000>;
229*bc97e616SAndrea della Porta		shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
230*bc97e616SAndrea della Porta	};
231*bc97e616SAndrea della Porta};
232*bc97e616SAndrea della Porta
233*bc97e616SAndrea della Porta&hvs {
234*bc97e616SAndrea della Porta	clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
235*bc97e616SAndrea della Porta	clock-names = "core", "disp";
236*bc97e616SAndrea della Porta};
237*bc97e616SAndrea della Porta
238*bc97e616SAndrea della Porta&hdmi0 {
239*bc97e616SAndrea della Porta	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
240*bc97e616SAndrea della Porta	clock-names = "hdmi", "bvb", "audio", "cec";
241*bc97e616SAndrea della Porta};
242*bc97e616SAndrea della Porta
243*bc97e616SAndrea della Porta&hdmi1 {
244*bc97e616SAndrea della Porta	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
245*bc97e616SAndrea della Porta	clock-names = "hdmi", "bvb", "audio", "cec";
246*bc97e616SAndrea della Porta};
247*bc97e616SAndrea della Porta
248*bc97e616SAndrea della Porta&pcie1 {
249*bc97e616SAndrea della Porta	status = "okay";
250*bc97e616SAndrea della Porta};
251*bc97e616SAndrea della Porta
252*bc97e616SAndrea della Porta&pcie2 {
253*bc97e616SAndrea della Porta	status = "okay";
254*bc97e616SAndrea della Porta};
255