blob: bb5191422660b82ef243fb111fb9d2515247a80e [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// 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 <dt-bindings/leds/common.h>
9#include "qcm2290.dtsi"
Tom Rini6bb92fc2024-05-20 09:54:58 -060010#include "pm4125.dtsi"
Tom Rini53633a82024-02-29 12:33:36 -050011
12/ {
13 model = "Qualcomm Technologies, Inc. Robotics RB1";
14 compatible = "qcom,qrb2210-rb1", "qcom,qrb2210", "qcom,qcm2290";
15
16 aliases {
17 serial0 = &uart4;
18 sdhc1 = &sdhc_1;
19 sdhc2 = &sdhc_2;
20 };
21
22 chosen {
23 stdout-path = "serial0:115200n8";
24 };
25
Tom Rini93743d22024-04-01 09:08:13 -040026 clocks {
27 clk40M: can-clk {
28 compatible = "fixed-clock";
29 clock-frequency = <40000000>;
30 #clock-cells = <0>;
31 };
32 };
33
Tom Rini53633a82024-02-29 12:33:36 -050034 gpio-keys {
35 compatible = "gpio-keys";
36 label = "gpio-keys";
37
38 pinctrl-0 = <&key_volp_n>;
39 pinctrl-names = "default";
40
41 key-volume-up {
42 label = "Volume Up";
43 linux,code = <KEY_VOLUMEUP>;
44 gpios = <&tlmm 96 GPIO_ACTIVE_LOW>;
45 debounce-interval = <15>;
46 linux,can-disable;
47 wakeup-source;
48 };
49 };
50
Tom Rini93743d22024-04-01 09:08:13 -040051 hdmi-connector {
52 compatible = "hdmi-connector";
53 type = "a";
54
55 port {
56 hdmi_con: endpoint {
57 remote-endpoint = <&lt9611_out>;
58 };
59 };
60 };
61
Tom Rini53633a82024-02-29 12:33:36 -050062 leds {
63 compatible = "gpio-leds";
64
65 led-bt {
66 label = "blue:bt";
67 function = LED_FUNCTION_BLUETOOTH;
68 color = <LED_COLOR_ID_BLUE>;
69 gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>;
70 linux,default-trigger = "bluetooth-power";
71 default-state = "off";
72 };
73
74 led-user0 {
75 label = "green:user0";
76 function = LED_FUNCTION_INDICATOR;
77 color = <LED_COLOR_ID_GREEN>;
78 gpios = <&tlmm 52 GPIO_ACTIVE_HIGH>;
79 linux,default-trigger = "none";
80 default-state = "off";
81 panic-indicator;
82 };
83
84 led-wlan {
85 label = "yellow:wlan";
86 function = LED_FUNCTION_WLAN;
87 color = <LED_COLOR_ID_YELLOW>;
88 gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
89 linux,default-trigger = "phy0tx";
90 default-state = "off";
91 };
92 };
93
94 vreg_hdmi_out_1p2: regulator-hdmi-out-1p2 {
95 compatible = "regulator-fixed";
96 regulator-name = "VREG_HDMI_OUT_1P2";
97 regulator-min-microvolt = <1200000>;
98 regulator-max-microvolt = <1200000>;
99 vin-supply = <&vdc_1v2>;
100 regulator-always-on;
101 regulator-boot-on;
102 };
103
104 lt9611_3v3: regulator-lt9611-3v3 {
105 compatible = "regulator-fixed";
106 regulator-name = "LT9611_3V3";
107 regulator-min-microvolt = <3300000>;
108 regulator-max-microvolt = <3300000>;
109 vin-supply = <&vdc_3v3>;
110 regulator-always-on;
111 regulator-boot-on;
112 };
113
114 /* Main barrel jack input */
115 vdc_12v: regulator-vdc-12v {
116 compatible = "regulator-fixed";
117 regulator-name = "DC_12V";
118 regulator-min-microvolt = <12000000>;
119 regulator-max-microvolt = <12000000>;
120 regulator-always-on;
121 regulator-boot-on;
122 };
123
124 /* 1.2V supply stepped down from the barrel jack input */
125 vdc_1v2: regulator-vdc-1v2 {
126 compatible = "regulator-fixed";
127 regulator-name = "VDC_1V2";
128 regulator-min-microvolt = <1200000>;
129 regulator-max-microvolt = <1200000>;
130 vin-supply = <&vdc_12v>;
131 regulator-always-on;
132 regulator-boot-on;
133 };
134
135 /* 3.3V supply stepped down from the barrel jack input */
136 vdc_3v3: regulator-vdc-3v3 {
137 compatible = "regulator-fixed";
138 regulator-name = "VDC_3V3";
139 regulator-min-microvolt = <3300000>;
140 regulator-max-microvolt = <3300000>;
141 vin-supply = <&vdc_12v>;
142 regulator-always-on;
143 regulator-boot-on;
144 };
145
146 /* 5V supply stepped down from the barrel jack input */
147 vdc_5v: regulator-vdc-5v {
148 compatible = "regulator-fixed";
149 regulator-name = "VDC_5V";
150
151 regulator-min-microvolt = <5000000>;
152 regulator-max-microvolt = <5000000>;
153 regulator-always-on;
154 regulator-boot-on;
155 };
156
157 /* "Battery" voltage for the SoM, stepped down from the barrel jack input */
158 vdc_vbat_som: regulator-vdc-vbat {
159 compatible = "regulator-fixed";
160 regulator-name = "VBAT_SOM";
161 regulator-min-microvolt = <4200000>;
162 regulator-max-microvolt = <4200000>;
163 regulator-always-on;
164 regulator-boot-on;
165 };
166
167 /* PM2250 charger out, supplied by VBAT */
168 vph_pwr: regulator-vph-pwr {
169 compatible = "regulator-fixed";
170 regulator-name = "vph_pwr";
171 regulator-min-microvolt = <3700000>;
172 regulator-max-microvolt = <3700000>;
173 vin-supply = <&vdc_vbat_som>;
174
175 regulator-always-on;
176 regulator-boot-on;
177 };
178};
179
Tom Rini6bb92fc2024-05-20 09:54:58 -0600180&CPU_PD0 {
181 /delete-property/ power-domains;
182};
183
184&CPU_PD1 {
185 /delete-property/ power-domains;
186};
187
188&CPU_PD2 {
189 /delete-property/ power-domains;
190};
191
192&CPU_PD3 {
193 /delete-property/ power-domains;
194};
195
196/delete-node/ &CLUSTER_PD;
197
Tom Rini93743d22024-04-01 09:08:13 -0400198&gpi_dma0 {
199 status = "okay";
200};
201
202&i2c2 {
203 clock-frequency = <400000>;
204 status = "okay";
205
206 lt9611_codec: hdmi-bridge@2b {
207 compatible = "lontium,lt9611uxc";
208 reg = <0x2b>;
209 interrupts-extended = <&tlmm 46 IRQ_TYPE_EDGE_FALLING>;
210 reset-gpios = <&tlmm 41 GPIO_ACTIVE_HIGH>;
211
212 vdd-supply = <&vreg_hdmi_out_1p2>;
213 vcc-supply = <&lt9611_3v3>;
214
215 pinctrl-0 = <&lt9611_irq_pin &lt9611_rst_pin>;
216 pinctrl-names = "default";
217 #sound-dai-cells = <1>;
218
219 ports {
220 #address-cells = <1>;
221 #size-cells = <0>;
222
223 port@0 {
224 reg = <0>;
225
226 lt9611_a: endpoint {
227 remote-endpoint = <&mdss_dsi0_out>;
228 };
229 };
230
231 port@2 {
232 reg = <2>;
233
234 lt9611_out: endpoint {
235 remote-endpoint = <&hdmi_con>;
236 };
237 };
238 };
239 };
240};
241
242&mdss {
243 status = "okay";
244};
245
246&mdss_dsi0 {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600247 vdda-supply = <&pm4125_l5>;
Tom Rini93743d22024-04-01 09:08:13 -0400248 status = "okay";
249};
250
251&mdss_dsi0_out {
252 remote-endpoint = <&lt9611_a>;
253 data-lanes = <0 1 2 3>;
254};
255
256&mdss_dsi0_phy {
257 status = "okay";
258};
259
Tom Rini6bb92fc2024-05-20 09:54:58 -0600260&pm4125_resin {
Tom Rini53633a82024-02-29 12:33:36 -0500261 linux,code = <KEY_VOLUMEDOWN>;
262 status = "okay";
263};
264
Tom Rini762f85b2024-07-20 11:15:10 -0600265&pm4125_typec {
266 status = "okay";
267
268 connector {
269 compatible = "usb-c-connector";
270
271 power-role = "dual";
272 data-role = "dual";
273 self-powered;
274
275 typec-power-opmode = "default";
276 pd-disable;
277
278 ports {
279 #address-cells = <1>;
280 #size-cells = <0>;
281
282 port@0 {
283 reg = <0>;
284 pm4125_hs_in: endpoint {
285 remote-endpoint = <&usb_dwc3_hs>;
286 };
287 };
288
289 port@1 {
290 reg = <1>;
291 pm4125_ss_in: endpoint {
292 remote-endpoint = <&usb_qmpphy_out>;
293 };
294 };
295 };
296 };
297};
298
299&pm4125_vbus {
300 regulator-min-microamp = <500000>;
301 regulator-max-microamp = <500000>;
302 status = "okay";
303};
304
Tom Rini53633a82024-02-29 12:33:36 -0500305&qupv3_id_0 {
306 status = "okay";
307};
308
309&remoteproc_adsp {
310 firmware-name = "qcom/qcm2290/adsp.mbn";
311 status = "okay";
312};
313
314&remoteproc_mpss {
315 firmware-name = "qcom/qcm2290/modem.mbn";
316 status = "okay";
317};
318
319&rpm_requests {
320 regulators {
321 compatible = "qcom,rpm-pm2250-regulators";
322 vdd_s3-supply = <&vph_pwr>;
323 vdd_s4-supply = <&vph_pwr>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600324 vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12-supply = <&pm4125_s3>;
Tom Rini53633a82024-02-29 12:33:36 -0500325 vdd_l4_l17_l18_l19_l20_l21_l22-supply = <&vph_pwr>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600326 vdd_l13_l14_l15_l16-supply = <&pm4125_s4>;
Tom Rini53633a82024-02-29 12:33:36 -0500327
328 /*
329 * S1 - VDD_APC
330 * S2 - VDD_CX
331 */
332
Tom Rini6bb92fc2024-05-20 09:54:58 -0600333 pm4125_s3: s3 {
Tom Rini53633a82024-02-29 12:33:36 -0500334 /* 0.4V-1.6625V -> 1.3V (Power tree requirements) */
335 regulator-min-microvolt = <1352000>;
336 regulator-max-microvolt = <1352000>;
337 regulator-boot-on;
338 };
339
Tom Rini6bb92fc2024-05-20 09:54:58 -0600340 pm4125_s4: s4 {
Tom Rini53633a82024-02-29 12:33:36 -0500341 /* 1.2V-2.35V -> 2.05V (Power tree requirements) */
342 regulator-min-microvolt = <2072000>;
343 regulator-max-microvolt = <2072000>;
344 regulator-boot-on;
345 };
346
347 /* L1 - VDD_MX */
348
Tom Rini6bb92fc2024-05-20 09:54:58 -0600349 pm4125_l2: l2 {
Tom Rini53633a82024-02-29 12:33:36 -0500350 /* LPDDR4X VDD2 */
351 regulator-min-microvolt = <1136000>;
352 regulator-max-microvolt = <1136000>;
353 regulator-always-on;
354 regulator-boot-on;
355 };
356
Tom Rini6bb92fc2024-05-20 09:54:58 -0600357 pm4125_l3: l3 {
Tom Rini53633a82024-02-29 12:33:36 -0500358 /* LPDDR4X VDDQ */
359 regulator-min-microvolt = <616000>;
360 regulator-max-microvolt = <616000>;
361 regulator-always-on;
362 regulator-boot-on;
363 };
364
Tom Rini6bb92fc2024-05-20 09:54:58 -0600365 pm4125_l4: l4 {
Tom Rini53633a82024-02-29 12:33:36 -0500366 /* max = 3.05V -> max = 2.7 to disable 3V signaling (SDHCI2) */
367 regulator-min-microvolt = <1800000>;
368 regulator-max-microvolt = <2700000>;
369 regulator-allow-set-load;
370 };
371
Tom Rini6bb92fc2024-05-20 09:54:58 -0600372 pm4125_l5: l5 {
Tom Rini53633a82024-02-29 12:33:36 -0500373 /* CSI/DSI */
374 regulator-min-microvolt = <1232000>;
375 regulator-max-microvolt = <1232000>;
376 regulator-allow-set-load;
377 regulator-boot-on;
378 };
379
Tom Rini6bb92fc2024-05-20 09:54:58 -0600380 pm4125_l6: l6 {
Tom Rini53633a82024-02-29 12:33:36 -0500381 /* DRAM PLL */
382 regulator-min-microvolt = <928000>;
383 regulator-max-microvolt = <928000>;
384 regulator-always-on;
385 regulator-boot-on;
386 };
387
Tom Rini6bb92fc2024-05-20 09:54:58 -0600388 pm4125_l7: l7 {
Tom Rini53633a82024-02-29 12:33:36 -0500389 /* Wi-Fi CX/MX */
390 regulator-min-microvolt = <664000>;
391 regulator-max-microvolt = <664000>;
392 };
393
394 /*
395 * L8 - VDD_LPI_CX
396 * L9 - VDD_LPI_MX
397 */
398
Tom Rini6bb92fc2024-05-20 09:54:58 -0600399 pm4125_l10: l10 {
Tom Rini53633a82024-02-29 12:33:36 -0500400 /* Wi-Fi RFA */
401 regulator-min-microvolt = <1304000>;
402 regulator-max-microvolt = <1304000>;
403 };
404
Tom Rini6bb92fc2024-05-20 09:54:58 -0600405 pm4125_l11: l11 {
Tom Rini53633a82024-02-29 12:33:36 -0500406 /* GPS RF1 */
407 regulator-min-microvolt = <1000000>;
408 regulator-max-microvolt = <1000000>;
409 regulator-boot-on;
410 };
411
Tom Rini6bb92fc2024-05-20 09:54:58 -0600412 pm4125_l12: l12 {
Tom Rini53633a82024-02-29 12:33:36 -0500413 /* USB PHYs */
414 regulator-min-microvolt = <928000>;
415 regulator-max-microvolt = <928000>;
416 regulator-allow-set-load;
417 regulator-boot-on;
418 };
419
Tom Rini6bb92fc2024-05-20 09:54:58 -0600420 pm4125_l13: l13 {
Tom Rini53633a82024-02-29 12:33:36 -0500421 /* USB/QFPROM/PLLs */
422 regulator-min-microvolt = <1800000>;
423 regulator-max-microvolt = <1800000>;
424 regulator-allow-set-load;
425 regulator-boot-on;
426 };
427
Tom Rini6bb92fc2024-05-20 09:54:58 -0600428 pm4125_l14: l14 {
Tom Rini53633a82024-02-29 12:33:36 -0500429 /* SDHCI1 VQMMC */
430 regulator-min-microvolt = <1800000>;
431 regulator-max-microvolt = <1800000>;
432 regulator-allow-set-load;
433 /* Broken hardware, never turn it off! */
434 regulator-always-on;
435 };
436
Tom Rini6bb92fc2024-05-20 09:54:58 -0600437 pm4125_l15: l15 {
Tom Rini53633a82024-02-29 12:33:36 -0500438 /* WCD/DSI/BT VDDIO */
439 regulator-min-microvolt = <1800000>;
440 regulator-max-microvolt = <1800000>;
441 regulator-allow-set-load;
442 regulator-always-on;
443 regulator-boot-on;
444 };
445
Tom Rini6bb92fc2024-05-20 09:54:58 -0600446 pm4125_l16: l16 {
Tom Rini53633a82024-02-29 12:33:36 -0500447 /* GPS RF2 */
448 regulator-min-microvolt = <1800000>;
449 regulator-max-microvolt = <1800000>;
450 regulator-boot-on;
451 };
452
Tom Rini6bb92fc2024-05-20 09:54:58 -0600453 pm4125_l17: l17 {
Tom Rini53633a82024-02-29 12:33:36 -0500454 regulator-min-microvolt = <3000000>;
455 regulator-max-microvolt = <3000000>;
456 };
457
Tom Rini6bb92fc2024-05-20 09:54:58 -0600458 pm4125_l18: l18 {
Tom Rini53633a82024-02-29 12:33:36 -0500459 /* VDD_PXn */
460 regulator-min-microvolt = <1800000>;
461 regulator-max-microvolt = <1800000>;
462 };
463
Tom Rini6bb92fc2024-05-20 09:54:58 -0600464 pm4125_l19: l19 {
Tom Rini53633a82024-02-29 12:33:36 -0500465 /* VDD_PXn */
466 regulator-min-microvolt = <1800000>;
467 regulator-max-microvolt = <1800000>;
468 };
469
Tom Rini6bb92fc2024-05-20 09:54:58 -0600470 pm4125_l20: l20 {
Tom Rini53633a82024-02-29 12:33:36 -0500471 /* SDHCI1 VMMC */
472 regulator-min-microvolt = <2400000>;
473 regulator-max-microvolt = <3600000>;
474 regulator-allow-set-load;
475 };
476
Tom Rini6bb92fc2024-05-20 09:54:58 -0600477 pm4125_l21: l21 {
Tom Rini53633a82024-02-29 12:33:36 -0500478 /* SDHCI2 VMMC */
479 regulator-min-microvolt = <2960000>;
480 regulator-max-microvolt = <3300000>;
481 regulator-allow-set-load;
482 regulator-boot-on;
483 };
484
Tom Rini6bb92fc2024-05-20 09:54:58 -0600485 pm4125_l22: l22 {
Tom Rini53633a82024-02-29 12:33:36 -0500486 /* Wi-Fi */
487 regulator-min-microvolt = <3312000>;
488 regulator-max-microvolt = <3312000>;
489 };
490 };
491};
492
493&sdhc_1 {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600494 vmmc-supply = <&pm4125_l20>;
495 vqmmc-supply = <&pm4125_l14>;
Tom Rini53633a82024-02-29 12:33:36 -0500496 pinctrl-0 = <&sdc1_state_on>;
497 pinctrl-1 = <&sdc1_state_off>;
498 pinctrl-names = "default", "sleep";
499 non-removable;
500 supports-cqe;
501 no-sdio;
502 no-sd;
503 status = "okay";
504};
505
506&sdhc_2 {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600507 vmmc-supply = <&pm4125_l21>;
508 vqmmc-supply = <&pm4125_l4>;
Tom Rini53633a82024-02-29 12:33:36 -0500509 cd-gpios = <&tlmm 88 GPIO_ACTIVE_LOW>;
510 pinctrl-0 = <&sdc2_state_on &sd_det_in_on>;
511 pinctrl-1 = <&sdc2_state_off &sd_det_in_off>;
512 pinctrl-names = "default", "sleep";
513 no-sdio;
514 no-mmc;
515 status = "okay";
Tom Rini93743d22024-04-01 09:08:13 -0400516};
517
518&spi5 {
519 status = "okay";
520
521 can@0 {
522 compatible = "microchip,mcp2518fd";
523 reg = <0>;
524 interrupts-extended = <&tlmm 39 IRQ_TYPE_LEVEL_LOW>;
525 clocks = <&clk40M>;
526 spi-max-frequency = <10000000>;
527 vdd-supply = <&vdc_5v>;
528 xceiver-supply = <&vdc_5v>;
529 };
Tom Rini53633a82024-02-29 12:33:36 -0500530};
531
532&tlmm {
Tom Rini93743d22024-04-01 09:08:13 -0400533 lt9611_rst_pin: lt9611-rst-state {
534 pins = "gpio41";
535 function = "gpio";
536 input-disable;
537 output-high;
538 };
539
540 lt9611_irq_pin: lt9611-irq-state {
541 pins = "gpio46";
542 function = "gpio";
543 bias-disable;
544 };
545
Tom Rini53633a82024-02-29 12:33:36 -0500546 sd_det_in_on: sd-det-in-on-state {
547 pins = "gpio88";
548 function = "gpio";
549 drive-strength = <2>;
550 bias-pull-up;
551 };
552
553 sd_det_in_off: sd-det-in-off-state {
554 pins = "gpio88";
555 function = "gpio";
556 drive-strength = <2>;
557 bias-disable;
558 };
559
560 key_volp_n: key-volp-n-state {
561 pins = "gpio96";
562 function = "gpio";
563 bias-pull-up;
564 output-disable;
565 };
566};
567
568/* UART connected to the Micro-USB port via a FTDI chip */
569&uart4 {
570 compatible = "qcom,geni-debug-uart";
571 status = "okay";
572};
573
574&usb {
575 status = "okay";
576};
577
Tom Rini762f85b2024-07-20 11:15:10 -0600578&usb_dwc3_hs {
579 remote-endpoint = <&pm4125_hs_in>;
Tom Rini53633a82024-02-29 12:33:36 -0500580};
581
582&usb_hsphy {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600583 vdd-supply = <&pm4125_l12>;
584 vdda-pll-supply = <&pm4125_l13>;
585 vdda-phy-dpdm-supply = <&pm4125_l21>;
Tom Rini53633a82024-02-29 12:33:36 -0500586 status = "okay";
587};
588
Tom Rini762f85b2024-07-20 11:15:10 -0600589&usb_qmpphy {
590 vdda-phy-supply = <&pm4125_l12>;
591 vdda-pll-supply = <&pm4125_l13>;
592 status = "okay";
593};
594
595&usb_qmpphy_out {
596 remote-endpoint = <&pm4125_ss_in>;
597};
598
Tom Rini53633a82024-02-29 12:33:36 -0500599&wifi {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600600 vdd-0.8-cx-mx-supply = <&pm4125_l7>;
601 vdd-1.8-xo-supply = <&pm4125_l13>;
602 vdd-1.3-rfa-supply = <&pm4125_l10>;
603 vdd-3.3-ch0-supply = <&pm4125_l22>;
Tom Rini93743d22024-04-01 09:08:13 -0400604 qcom,ath10k-calibration-variant = "Thundercomm_RB1";
Tom Rini762f85b2024-07-20 11:15:10 -0600605 firmware-name = "qcm2290";
Tom Rini53633a82024-02-29 12:33:36 -0500606 status = "okay";
607};
608
609&xo_board {
610 clock-frequency = <38400000>;
611};