xref: /freebsd/sys/contrib/device-tree/src/arm64/qcom/qrb2210-arduino-imola.dts (revision 69ed3df4f588860308677cda76cbcce1f19a54c9)
1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * Copyright (c) 2025, Arduino SRL
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/leds/common.h>
9#include <dt-bindings/usb/pd.h>
10#include "agatti.dtsi"
11#include "pm4125.dtsi"
12
13/delete-node/ &cont_splash_memory;
14
15/ {
16	model = "Arduino UnoQ";
17	compatible = "arduino,imola", "qcom,qrb2210", "qcom,qcm2290";
18	chassis-type = "embedded";
19
20	aliases {
21		serial0 = &uart4;
22		serial1 = &uart2;
23		serial2 = &uart3;
24		sdhc1 = &sdhc_1;
25	};
26
27	chosen {
28		stdout-path = "serial0:115200n8";
29	};
30
31	gpio-keys {
32		compatible = "gpio-keys";
33		label = "gpio-keys";
34		pinctrl-0 = <&key_volp_n>, <&key_vold_n>;
35		pinctrl-names = "default";
36
37		key-volume-up {
38			label = "Volume Up";
39			linux,code = <KEY_VOLUMEUP>;
40			gpios = <&tlmm 96 GPIO_ACTIVE_LOW>;
41			debounce-interval = <15>;
42			linux,can-disable;
43			wakeup-source;
44		};
45
46		key-volume-down {
47			label = "Volume Down";
48			linux,code = <KEY_VOLUMEDOWN>;
49			gpios = <&tlmm 36 GPIO_ACTIVE_LOW>;
50			debounce-interval = <15>;
51			linux,can-disable;
52			wakeup-source;
53		};
54	};
55
56	leds: leds {
57		compatible = "gpio-leds";
58
59		led-bt {
60			label = "unoq:bt-blue2";
61			function = LED_FUNCTION_BLUETOOTH;
62			color = <LED_COLOR_ID_BLUE>;
63			gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
64			linux,default-trigger = "bluetooth-power";
65			default-state = "off";
66		};
67
68		led-panic {
69			label = "unoq:panic-red2";
70			function = LED_FUNCTION_INDICATOR;
71			color = <LED_COLOR_ID_RED>;
72			gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>;
73			linux,default-trigger = "none";
74			default-state = "off";
75			panic-indicator;
76		};
77
78		led-wlan {
79			label = "unoq:wlan-green2";
80			function = LED_FUNCTION_WLAN;
81			color = <LED_COLOR_ID_GREEN>;
82			gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
83			linux,default-trigger = "phy0tx";
84			default-state = "off";
85		};
86
87		ledb: led-user-blue {
88			label = "unoq:user-blue1";
89			gpios = <&tlmm 60 GPIO_ACTIVE_HIGH>;
90			color = <LED_COLOR_ID_BLUE>;
91		};
92
93		ledg: led-user-green {
94			label = "unoq:user-green1";
95			gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
96			color = <LED_COLOR_ID_GREEN>;
97		};
98
99		ledr: led-user-red {
100			label = "unoq:user-red1";
101			gpios = <&tlmm 41 GPIO_ACTIVE_HIGH>;
102			color = <LED_COLOR_ID_RED>;
103		};
104	};
105
106	multi-led {
107		compatible = "leds-group-multicolor";
108		color = <LED_COLOR_ID_RGB>;
109		function = LED_FUNCTION_INDICATOR;
110		leds = <&ledr>, <&ledg>, <&ledb>;
111	};
112
113	vreg_anx_30: regulator-anx-30 {
114		compatible = "regulator-fixed";
115		regulator-name = "anx30";
116		regulator-min-microvolt = <3000000>;
117		regulator-max-microvolt = <3000000>;
118		regulator-always-on;
119		regulator-boot-on;
120	};
121
122	/* PM4125 charger out, supplied by VBAT */
123	vph_pwr: regulator-vph-pwr {
124		compatible = "regulator-fixed";
125		regulator-name = "vph_pwr";
126		regulator-min-microvolt = <3700000>;
127		regulator-max-microvolt = <3700000>;
128		regulator-always-on;
129		regulator-boot-on;
130	};
131};
132
133&gpi_dma0 {
134	status = "okay";
135};
136
137&gpu {
138	status = "okay";
139};
140
141&gpu_zap_shader {
142	firmware-name = "qcom/qcm2290/a702_zap.mbn";
143};
144
145&i2c0 {
146	clock-frequency = <100000>;
147
148	status = "okay";
149};
150
151&i2c1 {
152	clock-frequency = <100000>;
153
154	status = "okay";
155
156	anx7625: encoder@58 {
157		compatible = "analogix,anx7625";
158		reg = <0x58>;
159		interrupts-extended = <&tlmm 81 IRQ_TYPE_EDGE_FALLING>;
160		vdd10-supply = <&pm4125_l11>;
161		vdd18-supply = <&pm4125_l15>;
162		vdd33-supply = <&vreg_anx_30>;
163		analogix,audio-enable;
164		analogix,lane0-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
165		analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
166
167		pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>;
168
169		connector {
170			compatible = "usb-c-connector";
171			power-role = "sink";
172			data-role = "dual";
173			try-power-role = "sink";
174
175			pd-revision = /bits/ 8 <0x03 0x00 0x00 0x00>;
176			op-sink-microwatt = <15000000>;
177			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
178				     PDO_VAR(5000, 20000, 3000)>;
179
180			ports {
181				#address-cells = <1>;
182				#size-cells = <0>;
183
184				port@0 {
185					reg = <0>;
186
187					anx_hs_in: endpoint {
188						remote-endpoint = <&usb_dwc3_hs>;
189					};
190				};
191
192				port@1 {
193					reg = <1>;
194
195					anx_ss_in: endpoint {
196						remote-endpoint = <&usb_qmpphy_out>;
197					};
198				};
199			};
200		};
201
202		ports {
203			#address-cells = <1>;
204			#size-cells = <0>;
205
206			port@0 {
207				reg = <0>;
208
209				anx_dsi0_in: endpoint {
210					remote-endpoint = <&mdss_dsi0_out>;
211					data-lanes = <0 1 2 3>;
212				};
213			};
214		};
215	};
216};
217
218&mdss {
219	status = "okay";
220};
221
222&mdss_dsi0 {
223	vdda-supply = <&pm4125_l5>;
224
225	status = "okay";
226};
227
228&mdss_dsi0_out {
229	remote-endpoint = <&anx_dsi0_in>;
230	data-lanes = <0 1 2 3>;
231};
232
233&mdss_dsi0_phy {
234	status = "okay";
235};
236
237&pm4125_vbus {
238	regulator-min-microamp = <500000>;
239	regulator-max-microamp = <500000>;
240
241	status = "okay";
242};
243
244&qupv3_id_0 {
245	status = "okay";
246};
247
248&remoteproc_adsp {
249	firmware-name = "qcom/qcm2290/adsp.mbn";
250
251	status = "okay";
252};
253
254&remoteproc_mpss {
255	firmware-name = "qcom/qcm2290/modem.mbn";
256
257	status = "okay";
258};
259
260&rpm_requests {
261	regulators {
262		compatible = "qcom,rpm-pm2250-regulators";
263		vdd_s3-supply = <&vph_pwr>;
264		vdd_s4-supply = <&vph_pwr>;
265		vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12-supply = <&pm4125_s3>;
266		vdd_l4_l17_l18_l19_l20_l21_l22-supply = <&vph_pwr>;
267		vdd_l13_l14_l15_l16-supply = <&pm4125_s4>;
268
269		pm4125_s3: s3 {
270			/* 0.4V-1.6625V -> 1.3V (Power tree requirements) */
271			regulator-min-microvolt = <1352000>;
272			regulator-max-microvolt = <1352000>;
273			regulator-boot-on;
274		};
275
276		pm4125_s4: s4 {
277			/* 1.2V-2.35V -> 2.05V (Power tree requirements) */
278			regulator-min-microvolt = <2072000>;
279			regulator-max-microvolt = <2072000>;
280			regulator-boot-on;
281		};
282
283		pm4125_l2: l2 {
284			/* LPDDR4X VDD2 */
285			regulator-min-microvolt = <1136000>;
286			regulator-max-microvolt = <1136000>;
287			regulator-always-on;
288			regulator-boot-on;
289		};
290
291		pm4125_l3: l3 {
292			/* LPDDR4X VDDQ */
293			regulator-min-microvolt = <616000>;
294			regulator-max-microvolt = <616000>;
295			regulator-always-on;
296			regulator-boot-on;
297		};
298
299		pm4125_l4: l4 {
300			/* max = 3.05V -> max = 2.7 to disable 3V signaling (SDHCI2) */
301			regulator-min-microvolt = <1800000>;
302			regulator-max-microvolt = <2700000>;
303			regulator-allow-set-load;
304		};
305
306		pm4125_l5: l5 {
307			/* CSI/DSI */
308			regulator-min-microvolt = <1232000>;
309			regulator-max-microvolt = <1232000>;
310			regulator-allow-set-load;
311			regulator-boot-on;
312		};
313
314		pm4125_l6: l6 {
315			/* DRAM PLL */
316			regulator-min-microvolt = <928000>;
317			regulator-max-microvolt = <928000>;
318			regulator-always-on;
319			regulator-boot-on;
320		};
321
322		pm4125_l7: l7 {
323			/* Wi-Fi CX */
324			regulator-min-microvolt = <664000>;
325			regulator-max-microvolt = <664000>;
326		};
327
328		pm4125_l10: l10 {
329			/* Wi-Fi RFA */
330			regulator-min-microvolt = <1304000>;
331			regulator-max-microvolt = <1304000>;
332		};
333
334		pm4125_l11: l11 {
335			/* ANX7625 DVDD1P0V/AVDD1P0V */
336			regulator-min-microvolt = <1000000>;
337			regulator-max-microvolt = <1000000>;
338			regulator-boot-on;
339			regulator-always-on;
340		};
341
342		pm4125_l12: l12 {
343			/* USB PHYs */
344			regulator-min-microvolt = <928000>;
345			regulator-max-microvolt = <928000>;
346			regulator-allow-set-load;
347			regulator-boot-on;
348		};
349
350		pm4125_l13: l13 {
351			/* USB/QFPROM/PLLs */
352			regulator-min-microvolt = <1800000>;
353			regulator-max-microvolt = <1800000>;
354			regulator-allow-set-load;
355			regulator-boot-on;
356		};
357
358		pm4125_l14: l14 {
359			/* SDHCI1 EMMC VCCQ */
360			regulator-min-microvolt = <1800000>;
361			regulator-max-microvolt = <1800000>;
362			regulator-allow-set-load;
363			/* Broken hardware, never turn it off! */
364			regulator-always-on;
365		};
366
367		pm4125_l15: l15 {
368			/* VDDIO */
369			regulator-min-microvolt = <1800000>;
370			regulator-max-microvolt = <1800000>;
371			regulator-allow-set-load;
372			regulator-always-on;
373			regulator-boot-on;
374		};
375
376		pm4125_l20: l20 {
377			/* SDHCI1 EMMC */
378			regulator-min-microvolt = <2400000>;
379			regulator-max-microvolt = <3600000>;
380			regulator-allow-set-load;
381		};
382
383		pm4125_l21: l21 {
384			/* USB HS */
385			regulator-min-microvolt = <2960000>;
386			regulator-max-microvolt = <3300000>;
387			regulator-allow-set-load;
388			regulator-boot-on;
389		};
390
391		pm4125_l22: l22 {
392			/* Wi-Fi VDD */
393			regulator-min-microvolt = <3312000>;
394			regulator-max-microvolt = <3312000>;
395		};
396	};
397};
398
399&sdhc_1 {
400	vmmc-supply = <&pm4125_l20>;
401	vqmmc-supply = <&pm4125_l14>;
402	pinctrl-0 = <&sdc1_state_on>;
403	pinctrl-1 = <&sdc1_state_off>;
404	pinctrl-names = "default", "sleep";
405	mmc-hs400-1_8v;
406	mmc-hs200-1_8v;
407	non-removable;
408	supports-cqe;
409	no-sdio;
410	no-sd;
411
412	status = "okay";
413};
414
415&spi5 {
416	status = "okay";
417
418	mcu@0 {
419		compatible = "arduino,unoq-mcu";
420		reg = <0>;
421	};
422};
423
424&tlmm {
425	jmisc_gpio18: jmisc-gpio18-state {
426		pins = "gpio18";
427		function = "gpio";
428		drive-strength = <2>;
429		bias-pull-down;
430	};
431
432	jmisc_gpio28: jmisc-gpio28-state {
433		pins = "gpio28";
434		function = "gpio";
435		drive-strength = <2>;
436		bias-pull-down;
437	};
438
439	key_vold_n: key-vold-n-state {
440		pins = "gpio36";
441		function = "gpio";
442		bias-pull-up;
443		output-disable;
444	};
445
446	anx7625_cable_det_pin: anx7625-cable-det-pins-state {
447		pins = "gpio46";
448		function = "gpio";
449		drive-strength = <16>;
450		output-disable;
451		bias-pull-up;
452	};
453
454	anx7625_int_pin: anx7625-int-pins-state {
455		pins = "gpio81";
456		function = "gpio";
457		drive-strength = <16>;
458		output-disable;
459		bias-pull-up;
460	};
461
462	key_volp_n: key-volp-n-state {
463		pins = "gpio96";
464		function = "gpio";
465		bias-pull-up;
466		output-disable;
467	};
468
469	jmisc_gpio98: jmisc-gpio98-state {
470		pins = "gpio98";
471		function = "gpio";
472		drive-strength = <2>;
473		bias-pull-down;
474	};
475
476	jmisc_gpio99: jmisc-gpio99-state {
477		pins = "gpio99";
478		function = "gpio";
479		drive-strength = <2>;
480		bias-pull-down;
481	};
482
483	jmisc_gpio100: jmisc-gpio100-state {
484		pins = "gpio100";
485		function = "gpio";
486		drive-strength = <2>;
487		bias-pull-down;
488	};
489
490	jmisc_gpio101: jmisc-gpio101-state {
491		pins = "gpio101";
492		function = "gpio";
493		drive-strength = <2>;
494		bias-pull-down;
495	};
496};
497
498&uart2 {
499	status = "okay";
500};
501
502/* UART connected to Bluetooth */
503&uart3 {
504	status = "okay";
505
506	bluetooth {
507		compatible = "qcom,wcn3988-bt";
508
509		vddio-supply = <&pm4125_l15>;
510		vddxo-supply = <&pm4125_l13>;
511		vddrf-supply = <&pm4125_l10>;
512		vddch0-supply = <&pm4125_l22>;
513		enable-gpios = <&tlmm 87 GPIO_ACTIVE_HIGH>;
514		max-speed = <3000000>;
515	};
516};
517
518/* UART exposed in JCTL */
519&uart4 {
520	compatible = "qcom,geni-debug-uart";
521
522	status = "okay";
523};
524
525&usb {
526	status = "okay";
527};
528
529&usb_dwc3_hs {
530	remote-endpoint = <&anx_hs_in>;
531};
532
533&usb_hsphy {
534	vdd-supply = <&pm4125_l12>;
535	vdda-pll-supply = <&pm4125_l13>;
536	vdda-phy-dpdm-supply = <&pm4125_l21>;
537
538	status = "okay";
539};
540
541&usb_qmpphy {
542	vdda-phy-supply = <&pm4125_l12>;
543	vdda-pll-supply = <&pm4125_l13>;
544
545	status = "okay";
546};
547
548&usb_qmpphy_out {
549	remote-endpoint = <&anx_ss_in>;
550};
551
552&wifi {
553	vdd-0.8-cx-mx-supply = <&pm4125_l7>;
554	vdd-1.8-xo-supply = <&pm4125_l13>;
555	vdd-1.3-rfa-supply = <&pm4125_l10>;
556	vdd-3.3-ch0-supply = <&pm4125_l22>;
557	qcom,ath10k-calibration-variant = "ArduinoImola";
558	firmware-name = "qcm2290";
559
560	status = "okay";
561};
562
563&xo_board {
564	clock-frequency = <38400000>;
565};
566