1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * Copyright (c) 2023, Linaro Ltd
4 */
5
6/dts-v1/;
7
8#include "qcm2290.dtsi"
9#include "pm2250.dtsi"
10
11/ {
12	model = "Qualcomm Technologies, Inc. Robotics RB1";
13	compatible = "qcom,qrb2210-rb1", "qcom,qrb2210", "qcom,qcm2290";
14
15	aliases {
16		serial0 = &uart4;
17		sdhc1 = &sdhc_1;
18		sdhc2 = &sdhc_2;
19	};
20
21	chosen {
22		stdout-path = "serial0:115200n8";
23	};
24
25	gpio-keys {
26		compatible = "gpio-keys";
27		label = "gpio-keys";
28
29		pinctrl-0 = <&key_volp_n>;
30		pinctrl-names = "default";
31
32		key-volume-up {
33			label = "Volume Up";
34			linux,code = <KEY_VOLUMEUP>;
35			gpios = <&tlmm 96 GPIO_ACTIVE_LOW>;
36			debounce-interval = <15>;
37			linux,can-disable;
38			wakeup-source;
39		};
40	};
41
42	vreg_hdmi_out_1p2: regulator-hdmi-out-1p2 {
43		compatible = "regulator-fixed";
44		regulator-name = "VREG_HDMI_OUT_1P2";
45		regulator-min-microvolt = <1200000>;
46		regulator-max-microvolt = <1200000>;
47		vin-supply = <&vdc_1v2>;
48		regulator-always-on;
49		regulator-boot-on;
50	};
51
52	lt9611_3v3: regulator-lt9611-3v3 {
53		compatible = "regulator-fixed";
54		regulator-name = "LT9611_3V3";
55		regulator-min-microvolt = <3300000>;
56		regulator-max-microvolt = <3300000>;
57		vin-supply = <&vdc_3v3>;
58		regulator-always-on;
59		regulator-boot-on;
60	};
61
62	/* Main barrel jack input */
63	vdc_12v: regulator-vdc-12v {
64		compatible = "regulator-fixed";
65		regulator-name = "DC_12V";
66		regulator-min-microvolt = <12000000>;
67		regulator-max-microvolt = <12000000>;
68		regulator-always-on;
69		regulator-boot-on;
70	};
71
72	/* 1.2V supply stepped down from the barrel jack input */
73	vdc_1v2: regulator-vdc-1v2 {
74		compatible = "regulator-fixed";
75		regulator-name = "VDC_1V2";
76		regulator-min-microvolt = <1200000>;
77		regulator-max-microvolt = <1200000>;
78		vin-supply = <&vdc_12v>;
79		regulator-always-on;
80		regulator-boot-on;
81	};
82
83	/* 3.3V supply stepped down from the barrel jack input */
84	vdc_3v3: regulator-vdc-3v3 {
85		compatible = "regulator-fixed";
86		regulator-name = "VDC_3V3";
87		regulator-min-microvolt = <3300000>;
88		regulator-max-microvolt = <3300000>;
89		vin-supply = <&vdc_12v>;
90		regulator-always-on;
91		regulator-boot-on;
92	};
93
94	/* 5V supply stepped down from the barrel jack input */
95	vdc_5v: regulator-vdc-5v {
96		compatible = "regulator-fixed";
97		regulator-name = "VDC_5V";
98
99		regulator-min-microvolt = <5000000>;
100		regulator-max-microvolt = <5000000>;
101		regulator-always-on;
102		regulator-boot-on;
103	};
104
105	/* "Battery" voltage for the SoM, stepped down from the barrel jack input */
106	vdc_vbat_som: regulator-vdc-vbat {
107		compatible = "regulator-fixed";
108		regulator-name = "VBAT_SOM";
109		regulator-min-microvolt = <4200000>;
110		regulator-max-microvolt = <4200000>;
111		regulator-always-on;
112		regulator-boot-on;
113	};
114
115	/* PM2250 charger out, supplied by VBAT */
116	vph_pwr: regulator-vph-pwr {
117		compatible = "regulator-fixed";
118		regulator-name = "vph_pwr";
119		regulator-min-microvolt = <3700000>;
120		regulator-max-microvolt = <3700000>;
121		vin-supply = <&vdc_vbat_som>;
122
123		regulator-always-on;
124		regulator-boot-on;
125	};
126};
127
128&pm2250_resin {
129	linux,code = <KEY_VOLUMEDOWN>;
130	status = "okay";
131};
132
133&qupv3_id_0 {
134	status = "okay";
135};
136
137&rpm_requests {
138	regulators {
139		compatible = "qcom,rpm-pm2250-regulators";
140		vdd_s3-supply = <&vph_pwr>;
141		vdd_s4-supply = <&vph_pwr>;
142		vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12-supply = <&pm2250_s3>;
143		vdd_l4_l17_l18_l19_l20_l21_l22-supply = <&vph_pwr>;
144		vdd_l13_l14_l15_l16-supply = <&pm2250_s4>;
145
146		/*
147		 * S1 - VDD_APC
148		 * S2 - VDD_CX
149		 */
150
151		pm2250_s3: s3 {
152			/* 0.4V-1.6625V -> 1.3V (Power tree requirements) */
153			regulator-min-microvolt = <1352000>;
154			regulator-max-microvolt = <1352000>;
155			regulator-boot-on;
156		};
157
158		pm2250_s4: s4 {
159			/* 1.2V-2.35V -> 2.05V (Power tree requirements) */
160			regulator-min-microvolt = <2072000>;
161			regulator-max-microvolt = <2072000>;
162			regulator-boot-on;
163		};
164
165		/* L1 - VDD_MX */
166
167		pm2250_l2: l2 {
168			/* LPDDR4X VDD2 */
169			regulator-min-microvolt = <1136000>;
170			regulator-max-microvolt = <1136000>;
171			regulator-always-on;
172			regulator-boot-on;
173		};
174
175		pm2250_l3: l3 {
176			/* LPDDR4X VDDQ */
177			regulator-min-microvolt = <616000>;
178			regulator-max-microvolt = <616000>;
179			regulator-always-on;
180			regulator-boot-on;
181		};
182
183		pm2250_l4: l4 {
184			/* max = 3.05V -> max = 2.7 to disable 3V signaling (SDHCI2) */
185			regulator-min-microvolt = <1800000>;
186			regulator-max-microvolt = <2700000>;
187			regulator-allow-set-load;
188		};
189
190		pm2250_l5: l5 {
191			/* CSI/DSI */
192			regulator-min-microvolt = <1232000>;
193			regulator-max-microvolt = <1232000>;
194			regulator-allow-set-load;
195			regulator-boot-on;
196		};
197
198		pm2250_l6: l6 {
199			/* DRAM PLL */
200			regulator-min-microvolt = <928000>;
201			regulator-max-microvolt = <928000>;
202			regulator-always-on;
203			regulator-boot-on;
204		};
205
206		pm2250_l7: l7 {
207			/* Wi-Fi CX/MX */
208			regulator-min-microvolt = <664000>;
209			regulator-max-microvolt = <664000>;
210		};
211
212		/*
213		 * L8 - VDD_LPI_CX
214		 * L9 - VDD_LPI_MX
215		 */
216
217		pm2250_l10: l10 {
218			/* Wi-Fi RFA */
219			regulator-min-microvolt = <1304000>;
220			regulator-max-microvolt = <1304000>;
221		};
222
223		pm2250_l11: l11 {
224			/* GPS RF1 */
225			regulator-min-microvolt = <1000000>;
226			regulator-max-microvolt = <1000000>;
227			regulator-boot-on;
228		};
229
230		pm2250_l12: l12 {
231			/* USB PHYs */
232			regulator-min-microvolt = <928000>;
233			regulator-max-microvolt = <928000>;
234			regulator-allow-set-load;
235			regulator-boot-on;
236		};
237
238		pm2250_l13: l13 {
239			/* USB/QFPROM/PLLs */
240			regulator-min-microvolt = <1800000>;
241			regulator-max-microvolt = <1800000>;
242			regulator-allow-set-load;
243			regulator-boot-on;
244		};
245
246		pm2250_l14: l14 {
247			/* SDHCI1 VQMMC */
248			regulator-min-microvolt = <1800000>;
249			regulator-max-microvolt = <1800000>;
250			regulator-allow-set-load;
251			/* Broken hardware, never turn it off! */
252			regulator-always-on;
253		};
254
255		pm2250_l15: l15 {
256			/* WCD/DSI/BT VDDIO */
257			regulator-min-microvolt = <1800000>;
258			regulator-max-microvolt = <1800000>;
259			regulator-allow-set-load;
260			regulator-always-on;
261			regulator-boot-on;
262		};
263
264		pm2250_l16: l16 {
265			/* GPS RF2 */
266			regulator-min-microvolt = <1800000>;
267			regulator-max-microvolt = <1800000>;
268			regulator-boot-on;
269		};
270
271		pm2250_l17: l17 {
272			regulator-min-microvolt = <3000000>;
273			regulator-max-microvolt = <3000000>;
274		};
275
276		pm2250_l18: l18 {
277			/* VDD_PXn */
278			regulator-min-microvolt = <1800000>;
279			regulator-max-microvolt = <1800000>;
280		};
281
282		pm2250_l19: l19 {
283			/* VDD_PXn */
284			regulator-min-microvolt = <1800000>;
285			regulator-max-microvolt = <1800000>;
286		};
287
288		pm2250_l20: l20 {
289			/* SDHCI1 VMMC */
290			regulator-min-microvolt = <2400000>;
291			regulator-max-microvolt = <3600000>;
292			regulator-allow-set-load;
293		};
294
295		pm2250_l21: l21 {
296			/* SDHCI2 VMMC */
297			regulator-min-microvolt = <2960000>;
298			regulator-max-microvolt = <3300000>;
299			regulator-allow-set-load;
300			regulator-boot-on;
301		};
302
303		pm2250_l22: l22 {
304			/* Wi-Fi */
305			regulator-min-microvolt = <3312000>;
306			regulator-max-microvolt = <3312000>;
307		};
308	};
309};
310
311&sdhc_1 {
312	vmmc-supply = <&pm2250_l20>;
313	vqmmc-supply = <&pm2250_l14>;
314	pinctrl-0 = <&sdc1_state_on>;
315	pinctrl-1 = <&sdc1_state_off>;
316	pinctrl-names = "default", "sleep";
317	non-removable;
318	supports-cqe;
319	no-sdio;
320	no-sd;
321	status = "okay";
322};
323
324&sdhc_2 {
325	vmmc-supply = <&pm2250_l21>;
326	vqmmc-supply = <&pm2250_l4>;
327	cd-gpios = <&tlmm 88 GPIO_ACTIVE_LOW>;
328	pinctrl-0 = <&sdc2_state_on &sd_det_in_on>;
329	pinctrl-1 = <&sdc2_state_off &sd_det_in_off>;
330	pinctrl-names = "default", "sleep";
331	no-sdio;
332	no-mmc;
333	status = "okay";
334};
335
336&tlmm {
337	sd_det_in_on: sd-det-in-on-state {
338		pins = "gpio88";
339		function = "gpio";
340		drive-strength = <2>;
341		bias-pull-up;
342	};
343
344	sd_det_in_off: sd-det-in-off-state {
345		pins = "gpio88";
346		function = "gpio";
347		drive-strength = <2>;
348		bias-disable;
349	};
350
351	key_volp_n: key-volp-n-state {
352		pins = "gpio96";
353		function = "gpio";
354		bias-pull-up;
355		output-disable;
356	};
357};
358
359/* UART connected to the Micro-USB port via a FTDI chip */
360&uart4 {
361	compatible = "qcom,geni-debug-uart";
362	status = "okay";
363};
364
365&usb {
366	status = "okay";
367};
368
369&usb_qmpphy {
370	vdda-phy-supply = <&pm2250_l12>;
371	vdda-pll-supply = <&pm2250_l13>;
372	status = "okay";
373};
374
375&usb_dwc3 {
376	dr_mode = "host";
377};
378
379&usb_hsphy {
380	vdd-supply = <&pm2250_l12>;
381	vdda-pll-supply = <&pm2250_l13>;
382	vdda-phy-dpdm-supply = <&pm2250_l21>;
383	status = "okay";
384};
385
386&xo_board {
387	clock-frequency = <38400000>;
388};
389