blob: 0146fb0036d44893237520aae5449931f17f1cc2 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * SC7180 IDP board device tree source
4 *
5 * Copyright (c) 2019, The Linux Foundation. All rights reserved.
6 */
7
8/dts-v1/;
9
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
12#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
13#include "sc7180.dtsi"
14#include "sc7180-firmware-tfa.dtsi"
15#include "pm6150.dtsi"
16#include "pm6150l.dtsi"
17
18/ {
19 model = "Qualcomm Technologies, Inc. SC7180 IDP";
20 compatible = "qcom,sc7180-idp", "qcom,sc7180";
21
22 aliases {
23 bluetooth0 = &bluetooth;
24 hsuart0 = &uart3;
25 serial0 = &uart8;
26 wifi0 = &wifi;
27 };
28
29 chosen {
30 stdout-path = "serial0:115200n8";
31 };
32};
33
34/*
35 * Reserved memory changes
36 *
37 * Delete all unused memory nodes and define the peripheral memory regions
38 * required by the board dts.
39 *
40 */
41
42/delete-node/ &hyp_mem;
43/delete-node/ &xbl_mem;
44/delete-node/ &aop_mem;
45/delete-node/ &sec_apps_mem;
46/delete-node/ &tz_mem;
47
48/* Increase the size from 2MB to 8MB */
49&rmtfs_mem {
50 reg = <0x0 0x94600000 0x0 0x800000>;
51};
52
53/ {
54 reserved-memory {
55 atf_mem: memory@80b00000 {
56 reg = <0x0 0x80b00000 0x0 0x100000>;
57 no-map;
58 };
59
60 mpss_mem: memory@86000000 {
61 reg = <0x0 0x86000000 0x0 0x8c00000>;
62 no-map;
63 };
64
65 camera_mem: memory@8ec00000 {
66 reg = <0x0 0x8ec00000 0x0 0x500000>;
67 no-map;
68 };
69
70 venus_mem: memory@8f600000 {
71 reg = <0 0x8f600000 0 0x500000>;
72 no-map;
73 };
74
75 wlan_mem: memory@94100000 {
76 reg = <0x0 0x94100000 0x0 0x200000>;
77 no-map;
78 };
79
80 mba_mem: memory@94400000 {
81 reg = <0x0 0x94400000 0x0 0x200000>;
82 no-map;
83 };
84
85 mdata_mem: mpss-metadata {
86 alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>;
87 size = <0x0 0x4000>;
88 no-map;
89 };
90 };
91};
92
93&apps_rsc {
94 regulators-0 {
95 compatible = "qcom,pm6150-rpmh-regulators";
96 qcom,pmic-id = "a";
97
98 vreg_s1a_1p1: smps1 {
99 regulator-min-microvolt = <1128000>;
100 regulator-max-microvolt = <1128000>;
101 };
102
103 vreg_s4a_1p0: smps4 {
104 regulator-min-microvolt = <824000>;
105 regulator-max-microvolt = <1120000>;
106 };
107
108 vreg_s5a_2p0: smps5 {
109 regulator-min-microvolt = <1744000>;
110 regulator-max-microvolt = <2040000>;
111 };
112
113 vreg_l1a_1p2: ldo1 {
114 regulator-min-microvolt = <1178000>;
115 regulator-max-microvolt = <1256000>;
116 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
117 };
118
119 vreg_l2a_1p0: ldo2 {
120 regulator-min-microvolt = <944000>;
121 regulator-max-microvolt = <1056000>;
122 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
123 };
124
125 vreg_l3a_1p0: ldo3 {
126 regulator-min-microvolt = <968000>;
127 regulator-max-microvolt = <1064000>;
128 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
129 };
130
131 vreg_l4a_0p8: ldo4 {
132 regulator-min-microvolt = <824000>;
133 regulator-max-microvolt = <928000>;
134 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
135 };
136
137 vreg_l5a_2p7: ldo5 {
138 regulator-min-microvolt = <2496000>;
139 regulator-max-microvolt = <3000000>;
140 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
141 };
142
143 vreg_l6a_0p6: ldo6 {
144 regulator-min-microvolt = <568000>;
145 regulator-max-microvolt = <648000>;
146 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
147 };
148
149 vreg_l9a_0p6: ldo9 {
150 regulator-min-microvolt = <488000>;
151 regulator-max-microvolt = <800000>;
152 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
153 };
154
155 vreg_l10a_1p8: ldo10 {
156 regulator-min-microvolt = <1800000>;
157 regulator-max-microvolt = <1832000>;
158 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
159 };
160
161 vreg_l11a_1p8: ldo11 {
162 regulator-min-microvolt = <1696000>;
163 regulator-max-microvolt = <1904000>;
164 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
165 };
166
167 vreg_l12a_1p8: ldo12 {
168 regulator-min-microvolt = <1800000>;
169 regulator-max-microvolt = <1800000>;
170 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
171 };
172
173 vreg_l13a_1p8: ldo13 {
174 regulator-min-microvolt = <1696000>;
175 regulator-max-microvolt = <1904000>;
176 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
177 };
178
179 vreg_l14a_1p8: ldo14 {
180 regulator-min-microvolt = <1728000>;
181 regulator-max-microvolt = <1832000>;
182 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
183 };
184
185 vreg_l15a_1p8: ldo15 {
186 regulator-min-microvolt = <1696000>;
187 regulator-max-microvolt = <1904000>;
188 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
189 };
190
191 vreg_l16a_2p7: ldo16 {
192 regulator-min-microvolt = <2496000>;
193 regulator-max-microvolt = <3304000>;
194 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
195 };
196
197 vreg_l17a_3p0: ldo17 {
198 regulator-min-microvolt = <2920000>;
199 regulator-max-microvolt = <3232000>;
200 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
201 };
202
203 vreg_l18a_2p8: ldo18 {
204 regulator-min-microvolt = <2496000>;
205 regulator-max-microvolt = <3304000>;
206 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
207 };
208
209 vreg_l19a_2p9: ldo19 {
210 regulator-min-microvolt = <2960000>;
211 regulator-max-microvolt = <2960000>;
212 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
213 };
214 };
215
216 regulators-1 {
217 compatible = "qcom,pm6150l-rpmh-regulators";
218 qcom,pmic-id = "c";
219
220 vreg_s8c_1p3: smps8 {
221 regulator-min-microvolt = <1120000>;
222 regulator-max-microvolt = <1408000>;
223 };
224
225 vreg_l1c_1p8: ldo1 {
226 regulator-min-microvolt = <1616000>;
227 regulator-max-microvolt = <1984000>;
228 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
229 };
230
231 vreg_l2c_1p3: ldo2 {
232 regulator-min-microvolt = <1168000>;
233 regulator-max-microvolt = <1304000>;
234 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
235 };
236
237 vreg_l3c_1p2: ldo3 {
238 regulator-min-microvolt = <1144000>;
239 regulator-max-microvolt = <1304000>;
240 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
241 };
242
243 vreg_l4c_1p8: ldo4 {
244 regulator-min-microvolt = <1648000>;
245 regulator-max-microvolt = <3304000>;
246 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
247 };
248
249 vreg_l5c_1p8: ldo5 {
250 regulator-min-microvolt = <1648000>;
251 regulator-max-microvolt = <3304000>;
252 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
253 };
254
255 vreg_l6c_2p9: ldo6 {
256 regulator-min-microvolt = <1800000>;
257 regulator-max-microvolt = <2950000>;
258 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
259 };
260
261 vreg_l7c_3p0: ldo7 {
262 regulator-min-microvolt = <3000000>;
263 regulator-max-microvolt = <3312000>;
264 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
265 };
266
267 vreg_l8c_1p8: ldo8 {
268 regulator-min-microvolt = <1800000>;
269 regulator-max-microvolt = <1904000>;
270 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
271 };
272
273 vreg_l9c_2p9: ldo9 {
274 regulator-min-microvolt = <2960000>;
275 regulator-max-microvolt = <2960000>;
276 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
277 };
278
279 vreg_l10c_3p3: ldo10 {
280 regulator-min-microvolt = <3000000>;
281 regulator-max-microvolt = <3400000>;
282 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
283 };
284
285 vreg_l11c_3p3: ldo11 {
286 regulator-min-microvolt = <3000000>;
287 regulator-max-microvolt = <3400000>;
288 regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
289 };
290
291 vreg_bob: bob {
292 regulator-min-microvolt = <3008000>;
293 regulator-max-microvolt = <3960000>;
294 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
295 };
296 };
297};
298
299&mdss {
300 status = "okay";
301};
302
303&mdss_dsi0 {
304 status = "okay";
305
306 vdda-supply = <&vreg_l3c_1p2>;
307
308 panel@0 {
309 compatible = "visionox,rm69299-1080p-display";
310 reg = <0>;
311
312 vdda-supply = <&vreg_l8c_1p8>;
313 vdd3p3-supply = <&vreg_l18a_2p8>;
314
315 pinctrl-names = "default";
316 pinctrl-0 = <&disp_pins>;
317
318 reset-gpios = <&pm6150l_gpios 3 GPIO_ACTIVE_HIGH>;
319
320 port {
321 panel0_in: endpoint {
322 remote-endpoint = <&mdss_dsi0_out>;
323 };
324 };
325 };
326
327 ports {
328 port@1 {
329 endpoint {
330 remote-endpoint = <&panel0_in>;
331 data-lanes = <0 1 2 3>;
332 };
333 };
334 };
335};
336
337&mdss_dsi0_phy {
338 status = "okay";
339 vdds-supply = <&vreg_l4a_0p8>;
340};
341
342&qfprom {
343 vcc-supply = <&vreg_l11a_1p8>;
344};
345
346&qspi {
347 status = "okay";
348 pinctrl-names = "default";
349 pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
350
351 flash@0 {
352 compatible = "jedec,spi-nor";
353 reg = <0>;
354 spi-max-frequency = <25000000>;
355 spi-tx-bus-width = <2>;
356 spi-rx-bus-width = <2>;
357 };
358};
359
360&qupv3_id_0 {
361 status = "okay";
362};
363
364&qupv3_id_1 {
365 status = "okay";
366};
367
368&remoteproc_mpss {
369 status = "okay";
370 compatible = "qcom,sc7180-mss-pil";
371 reg = <0 0x04080000 0 0x4040>, <0 0x04180000 0 0x48>;
372 reg-names = "qdsp6", "rmb";
373
374 clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
375 <&gcc GCC_MSS_Q6_MEMNOC_AXI_CLK>,
376 <&gcc GCC_MSS_NAV_AXI_CLK>,
377 <&gcc GCC_MSS_SNOC_AXI_CLK>,
378 <&gcc GCC_MSS_MFAB_AXIS_CLK>,
379 <&rpmhcc RPMH_CXO_CLK>;
380 clock-names = "iface", "bus", "nav", "snoc_axi", "mnoc_axi", "xo";
381
382 iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
383 memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;
384
385 resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
386 <&pdc_reset PDC_MODEM_SYNC_RESET>;
387 reset-names = "mss_restart", "pdc_reset";
388
389 qcom,halt-regs = <&tcsr_regs_1 0x3000 0x5000 0x4000>;
390 qcom,spare-regs = <&tcsr_regs_2 0xb3e4>;
391};
392
393&scm {
394 /* TF-A firmware maps memory cached so mark dma-coherent to match. */
395 dma-coherent;
396};
397
398&sdhc_1 {
399 status = "okay";
400
401 pinctrl-names = "default", "sleep";
402 pinctrl-0 = <&sdc1_on>;
403 pinctrl-1 = <&sdc1_off>;
404 vmmc-supply = <&vreg_l19a_2p9>;
405 vqmmc-supply = <&vreg_l12a_1p8>;
406};
407
408&sdhc_2 {
409 status = "okay";
410
411 pinctrl-names = "default","sleep";
412 pinctrl-0 = <&sdc2_on>;
413 pinctrl-1 = <&sdc2_off>;
414 vmmc-supply = <&vreg_l9c_2p9>;
415 vqmmc-supply = <&vreg_l6c_2p9>;
416
417 cd-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
418};
419
420&uart3 {
421 status = "okay";
422
423 /delete-property/interrupts;
424 interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
425 <&tlmm 41 IRQ_TYPE_EDGE_FALLING>;
426
427 pinctrl-names = "default", "sleep";
428 pinctrl-1 = <&qup_uart3_sleep>;
429
430 bluetooth: bluetooth {
431 compatible = "qcom,wcn3990-bt";
432 vddio-supply = <&vreg_l10a_1p8>;
433 vddxo-supply = <&vreg_l1c_1p8>;
434 vddrf-supply = <&vreg_l2c_1p3>;
435 vddch0-supply = <&vreg_l10c_3p3>;
436 max-speed = <3200000>;
437 };
438};
439
440&uart8 {
441 status = "okay";
442};
443
444&usb_1 {
445 status = "okay";
446};
447
448&usb_1_dwc3 {
449 dr_mode = "host";
450};
451
452&usb_1_hsphy {
453 status = "okay";
454 vdd-supply = <&vreg_l4a_0p8>;
455 vdda-pll-supply = <&vreg_l11a_1p8>;
456 vdda-phy-dpdm-supply = <&vreg_l17a_3p0>;
457 qcom,imp-res-offset-value = <8>;
458 qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_15_PERCENT>;
459 qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
460 qcom,bias-ctrl-value = <0x22>;
461 qcom,charge-ctrl-value = <3>;
462 qcom,hsdisc-trim-value = <0>;
463};
464
465&usb_1_qmpphy {
466 status = "okay";
467 vdda-phy-supply = <&vreg_l3c_1p2>;
468 vdda-pll-supply = <&vreg_l4a_0p8>;
469};
470
471&venus {
472 video-firmware {
473 iommus = <&apps_smmu 0x0c42 0x0>;
474 };
475};
476
477&wifi {
478 status = "okay";
479 vdd-0.8-cx-mx-supply = <&vreg_l9a_0p6>;
480 vdd-1.8-xo-supply = <&vreg_l1c_1p8>;
481 vdd-1.3-rfa-supply = <&vreg_l2c_1p3>;
482 vdd-3.3-ch0-supply = <&vreg_l10c_3p3>;
483 vdd-3.3-ch1-supply = <&vreg_l11c_3p3>;
484 wifi-firmware {
485 iommus = <&apps_smmu 0xc2 0x1>;
486 };
487};
488
489/* PINCTRL - additions to nodes defined in sc7180.dtsi */
490
491&pm6150l_gpios {
492 disp_pins: disp-state {
493 pinconf {
494 pins = "gpio3";
495 function = PMIC_GPIO_FUNC_FUNC1;
496 qcom,drive-strength = <PMIC_GPIO_STRENGTH_MED>;
497 power-source = <0>;
498 bias-disable;
499 output-low;
500 };
501 };
502};
503
504&qspi_clk {
505 bias-disable;
506};
507
508&qspi_cs0 {
509 bias-disable;
510};
511
512&qspi_data0 {
513 bias-pull-up;
514};
515
516&qspi_data1 {
517 bias-pull-up;
518};
519
520&qup_i2c2_default {
521 drive-strength = <2>;
522
523 /* Has external pullup */
524 bias-disable;
525};
526
527&qup_i2c4_default {
528 drive-strength = <2>;
529
530 /* Has external pullup */
531 bias-disable;
532};
533
534&qup_i2c7_default {
535 drive-strength = <2>;
536
537 /* Has external pullup */
538 bias-disable;
539};
540
541&qup_i2c9_default {
542 drive-strength = <2>;
543
544 /* Has external pullup */
545 bias-disable;
546};
547
548&qup_uart3_cts {
549 /*
550 * Configure a pull-down on CTS to match the pull of
551 * the Bluetooth module.
552 */
553 bias-pull-down;
554};
555
556&qup_uart3_rts {
557 /* We'll drive RTS, so no pull */
558 drive-strength = <2>;
559 bias-disable;
560};
561
562&qup_uart3_tx {
563 /* We'll drive TX, so no pull */
564 drive-strength = <2>;
565 bias-disable;
566};
567
568&qup_uart3_rx {
569 /*
570 * Configure a pull-up on RX. This is needed to avoid
571 * garbage data when the TX pin of the Bluetooth module is
572 * in tri-state (module powered off or not driving the
573 * signal yet).
574 */
575 bias-pull-up;
576};
577
578&qup_uart8_tx {
579 drive-strength = <2>;
580 bias-disable;
581};
582
583&qup_uart8_rx {
584 drive-strength = <2>;
585 bias-pull-up;
586};
587
588&qup_spi0_spi {
589 drive-strength = <2>;
590 bias-disable;
591};
592
593&qup_spi0_cs {
594 drive-strength = <2>;
595 bias-disable;
596};
597
598&qup_spi6_spi {
599 drive-strength = <2>;
600 bias-disable;
601};
602
603&qup_spi6_cs {
604 drive-strength = <2>;
605 bias-disable;
606};
607
608&qup_spi10_spi {
609 drive-strength = <2>;
610 bias-disable;
611};
612
613&qup_spi10_cs {
614 drive-strength = <2>;
615 bias-disable;
616};
617
618&tlmm {
619 qup_uart3_sleep: qup-uart3-sleep-state {
620 cts-pins {
621 /*
622 * Configure a pull-down on CTS to match the pull of
623 * the Bluetooth module.
624 */
625 pins = "gpio38";
626 function = "gpio";
627 bias-pull-down;
628 };
629
630 rts-pins {
631 /*
632 * Configure pull-down on RTS. As RTS is active low
633 * signal, pull it low to indicate the BT SoC that it
634 * can wakeup the system anytime from suspend state by
635 * pulling RX low (by sending wakeup bytes).
636 */
637 pins = "gpio39";
638 function = "gpio";
639 bias-pull-down;
640 };
641
642 tx-pins {
643 /*
644 * Configure pull-up on TX when it isn't actively driven
645 * to prevent BT SoC from receiving garbage during sleep.
646 */
647 pins = "gpio40";
648 function = "gpio";
649 bias-pull-up;
650 };
651
652 rx-pins {
653 /*
654 * Configure a pull-up on RX. This is needed to avoid
655 * garbage data when the TX pin of the Bluetooth module
656 * is floating which may cause spurious wakeups.
657 */
658 pins = "gpio41";
659 function = "gpio";
660 bias-pull-up;
661 };
662 };
663
664 sdc1_on: sdc1-on-state {
665 clk-pins {
666 pins = "sdc1_clk";
667 bias-disable;
668 drive-strength = <16>;
669 };
670
671 cmd-pins {
672 pins = "sdc1_cmd";
673 bias-pull-up;
674 drive-strength = <10>;
675 };
676
677 data-pins {
678 pins = "sdc1_data";
679 bias-pull-up;
680 drive-strength = <10>;
681 };
682
683 rclk-pins {
684 pins = "sdc1_rclk";
685 bias-pull-down;
686 };
687 };
688
689 sdc1_off: sdc1-off-state {
690 clk-pins {
691 pins = "sdc1_clk";
692 bias-disable;
693 drive-strength = <2>;
694 };
695
696 cmd-pins {
697 pins = "sdc1_cmd";
698 bias-pull-up;
699 drive-strength = <2>;
700 };
701
702 data-pins {
703 pins = "sdc1_data";
704 bias-pull-up;
705 drive-strength = <2>;
706 };
707
708 rclk-pins {
709 pins = "sdc1_rclk";
710 bias-pull-down;
711 };
712 };
713
714 sdc2_on: sdc2-on-state {
715 clk-pins {
716 pins = "sdc2_clk";
717 bias-disable;
718 drive-strength = <16>;
719 };
720
721 cmd-pins {
722 pins = "sdc2_cmd";
723 bias-pull-up;
724 drive-strength = <10>;
725 };
726
727 data-pins {
728 pins = "sdc2_data";
729 bias-pull-up;
730 drive-strength = <10>;
731 };
732
733 sd-cd-pins {
734 pins = "gpio69";
735 function = "gpio";
736 bias-pull-up;
737 drive-strength = <2>;
738 };
739 };
740
741 sdc2_off: sdc2-off-state {
742 clk-pins {
743 pins = "sdc2_clk";
744 bias-disable;
745 drive-strength = <2>;
746 };
747
748 cmd-pins {
749 pins = "sdc2_cmd";
750 bias-pull-up;
751 drive-strength = <2>;
752 };
753
754 data-pins {
755 pins = "sdc2_data";
756 bias-pull-up;
757 drive-strength = <2>;
758 };
759
760 sd-cd-pins {
761 pins = "gpio69";
762 function = "gpio";
763 bias-pull-up;
764 drive-strength = <2>;
765 };
766 };
767};