1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Copyright (c) 2019, Linaro Ltd.
4 */
5
6 /dts-v1/;
7
8 #include <dt-bindings/leds/common.h>
9 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
10 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
11 #include <dt-bindings/sound/qcom,q6afe.h>
12 #include <dt-bindings/sound/qcom,q6asm.h>
13 #include "sdm845.dtsi"
14 #include "pm8998.dtsi"
15 #include "pmi8998.dtsi"
16
17 / {
18 model = "Thundercomm Dragonboard 845c";
19 compatible = "thundercomm,db845c", "qcom,sdm845";
20 qcom,msm-id = <341 0x20001>;
21 qcom,board-id = <8 0>;
22
23 aliases {
24 serial0 = &uart9;
25 hsuart0 = &uart6;
26 };
27
28 chosen {
29 stdout-path = "serial0:115200n8";
30 };
31
32 /* Fixed crystal oscillator dedicated to MCP2517FD */
33 clk40M: can-clock {
34 compatible = "fixed-clock";
35 #clock-cells = <0>;
36 clock-frequency = <40000000>;
37 };
38
39 dc12v: dc12v-regulator {
40 compatible = "regulator-fixed";
41 regulator-name = "DC12V";
42 regulator-min-microvolt = <12000000>;
43 regulator-max-microvolt = <12000000>;
44 regulator-always-on;
45 };
46
47 gpio-keys {
48 compatible = "gpio-keys";
49 autorepeat;
50
51 pinctrl-names = "default";
52 pinctrl-0 = <&vol_up_pin_a>;
53
54 key-vol-up {
55 label = "Volume Up";
56 linux,code = <KEY_VOLUMEUP>;
57 gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
58 };
59 };
60
61 leds {
62 compatible = "gpio-leds";
63
64 led-0 {
65 label = "green:user4";
66 function = LED_FUNCTION_INDICATOR;
67 color = <LED_COLOR_ID_GREEN>;
68 gpios = <&pm8998_gpio 13 GPIO_ACTIVE_HIGH>;
69 linux,default-trigger = "panic-indicator";
70 default-state = "off";
71 };
72
73 led-1 {
74 label = "yellow:wlan";
75 function = LED_FUNCTION_WLAN;
76 color = <LED_COLOR_ID_YELLOW>;
77 gpios = <&pm8998_gpio 9 GPIO_ACTIVE_HIGH>;
78 linux,default-trigger = "phy0tx";
79 default-state = "off";
80 };
81
82 led-2 {
83 label = "blue:bt";
84 function = LED_FUNCTION_BLUETOOTH;
85 color = <LED_COLOR_ID_BLUE>;
86 gpios = <&pm8998_gpio 5 GPIO_ACTIVE_HIGH>;
87 linux,default-trigger = "bluetooth-power";
88 default-state = "off";
89 };
90 };
91
92 hdmi-out {
93 compatible = "hdmi-connector";
94 type = "a";
95
96 port {
97 hdmi_con: endpoint {
98 remote-endpoint = <<9611_out>;
99 };
100 };
101 };
102
103 lt9611_1v8: lt9611-vdd18-regulator {
104 compatible = "regulator-fixed";
105 regulator-name = "LT9611_1V8";
106
107 vin-supply = <&vdc_5v>;
108 regulator-min-microvolt = <1800000>;
109 regulator-max-microvolt = <1800000>;
110
111 gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
112 enable-active-high;
113 };
114
115 lt9611_3v3: lt9611-3v3 {
116 compatible = "regulator-fixed";
117 regulator-name = "LT9611_3V3";
118
119 vin-supply = <&vdc_3v3>;
120 regulator-min-microvolt = <3300000>;
121 regulator-max-microvolt = <3300000>;
122
123 // TODO: make it possible to drive same GPIO from two clients
124 // gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
125 // enable-active-high;
126 };
127
128 pcie0_1p05v: pcie-0-1p05v-regulator {
129 compatible = "regulator-fixed";
130 regulator-name = "PCIE0_1.05V";
131
132 vin-supply = <&vbat>;
133 regulator-min-microvolt = <1050000>;
134 regulator-max-microvolt = <1050000>;
135
136 // TODO: make it possible to drive same GPIO from two clients
137 // gpio = <&tlmm 90 GPIO_ACTIVE_HIGH>;
138 // enable-active-high;
139 };
140
141 cam0_dvdd_1v2: reg_cam0_dvdd_1v2 {
142 compatible = "regulator-fixed";
143 regulator-name = "CAM0_DVDD_1V2";
144 regulator-min-microvolt = <1200000>;
145 regulator-max-microvolt = <1200000>;
146 enable-active-high;
147 gpio = <&pm8998_gpio 12 GPIO_ACTIVE_HIGH>;
148 pinctrl-names = "default";
149 pinctrl-0 = <&cam0_dvdd_1v2_en_default>;
150 vin-supply = <&vbat>;
151 };
152
153 cam0_avdd_2v8: reg_cam0_avdd_2v8 {
154 compatible = "regulator-fixed";
155 regulator-name = "CAM0_AVDD_2V8";
156 regulator-min-microvolt = <2800000>;
157 regulator-max-microvolt = <2800000>;
158 enable-active-high;
159 gpio = <&pm8998_gpio 10 GPIO_ACTIVE_HIGH>;
160 pinctrl-names = "default";
161 pinctrl-0 = <&cam0_avdd_2v8_en_default>;
162 vin-supply = <&vbat>;
163 };
164
165 /* This regulator is enabled when the VREG_LVS1A_1P8 trace is enabled */
166 cam3_avdd_2v8: reg_cam3_avdd_2v8 {
167 compatible = "regulator-fixed";
168 regulator-name = "CAM3_AVDD_2V8";
169 regulator-min-microvolt = <2800000>;
170 regulator-max-microvolt = <2800000>;
171 regulator-always-on;
172 vin-supply = <&vbat>;
173 };
174
175 pcie0_3p3v_dual: vldo-3v3-regulator {
176 compatible = "regulator-fixed";
177 regulator-name = "VLDO_3V3";
178
179 vin-supply = <&vbat>;
180 regulator-min-microvolt = <3300000>;
181 regulator-max-microvolt = <3300000>;
182
183 gpio = <&tlmm 90 GPIO_ACTIVE_HIGH>;
184 enable-active-high;
185
186 pinctrl-names = "default";
187 pinctrl-0 = <&pcie0_pwren_state>;
188 };
189
190 v5p0_hdmiout: v5p0-hdmiout-regulator {
191 compatible = "regulator-fixed";
192 regulator-name = "V5P0_HDMIOUT";
193
194 vin-supply = <&vdc_5v>;
195 regulator-min-microvolt = <500000>;
196 regulator-max-microvolt = <500000>;
197
198 // TODO: make it possible to drive same GPIO from two clients
199 // gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
200 // enable-active-high;
201 };
202
203 vbat: vbat-regulator {
204 compatible = "regulator-fixed";
205 regulator-name = "VBAT";
206
207 vin-supply = <&dc12v>;
208 regulator-min-microvolt = <4200000>;
209 regulator-max-microvolt = <4200000>;
210 regulator-always-on;
211 };
212
213 vbat_som: vbat-som-regulator {
214 compatible = "regulator-fixed";
215 regulator-name = "VBAT_SOM";
216
217 vin-supply = <&dc12v>;
218 regulator-min-microvolt = <4200000>;
219 regulator-max-microvolt = <4200000>;
220 regulator-always-on;
221 };
222
223 vdc_3v3: vdc-3v3-regulator {
224 compatible = "regulator-fixed";
225 regulator-name = "VDC_3V3";
226 vin-supply = <&dc12v>;
227 regulator-min-microvolt = <3300000>;
228 regulator-max-microvolt = <3300000>;
229 regulator-always-on;
230 };
231
232 vdc_5v: vdc-5v-regulator {
233 compatible = "regulator-fixed";
234 regulator-name = "VDC_5V";
235
236 vin-supply = <&dc12v>;
237 regulator-min-microvolt = <500000>;
238 regulator-max-microvolt = <500000>;
239 regulator-always-on;
240 };
241
242 vreg_s4a_1p8: vreg-s4a-1p8 {
243 compatible = "regulator-fixed";
244 regulator-name = "vreg_s4a_1p8";
245
246 regulator-min-microvolt = <1800000>;
247 regulator-max-microvolt = <1800000>;
248 regulator-always-on;
249 };
250
251 vph_pwr: vph-pwr-regulator {
252 compatible = "regulator-fixed";
253 regulator-name = "vph_pwr";
254
255 vin-supply = <&vbat_som>;
256 };
257 };
258
259 &adsp_pas {
260 status = "okay";
261
262 firmware-name = "qcom/sdm845/adsp.mbn";
263 };
264
265 &apps_rsc {
266 pm8998-rpmh-regulators {
267 compatible = "qcom,pm8998-rpmh-regulators";
268 qcom,pmic-id = "a";
269 vdd-s1-supply = <&vph_pwr>;
270 vdd-s2-supply = <&vph_pwr>;
271 vdd-s3-supply = <&vph_pwr>;
272 vdd-s4-supply = <&vph_pwr>;
273 vdd-s5-supply = <&vph_pwr>;
274 vdd-s6-supply = <&vph_pwr>;
275 vdd-s7-supply = <&vph_pwr>;
276 vdd-s8-supply = <&vph_pwr>;
277 vdd-s9-supply = <&vph_pwr>;
278 vdd-s10-supply = <&vph_pwr>;
279 vdd-s11-supply = <&vph_pwr>;
280 vdd-s12-supply = <&vph_pwr>;
281 vdd-s13-supply = <&vph_pwr>;
282 vdd-l1-l27-supply = <&vreg_s7a_1p025>;
283 vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
284 vdd-l3-l11-supply = <&vreg_s7a_1p025>;
285 vdd-l4-l5-supply = <&vreg_s7a_1p025>;
286 vdd-l6-supply = <&vph_pwr>;
287 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
288 vdd-l9-supply = <&vreg_bob>;
289 vdd-l10-l23-l25-supply = <&vreg_bob>;
290 vdd-l13-l19-l21-supply = <&vreg_bob>;
291 vdd-l16-l28-supply = <&vreg_bob>;
292 vdd-l18-l22-supply = <&vreg_bob>;
293 vdd-l20-l24-supply = <&vreg_bob>;
294 vdd-l26-supply = <&vreg_s3a_1p35>;
295 vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
296
297 vreg_s3a_1p35: smps3 {
298 regulator-min-microvolt = <1352000>;
299 regulator-max-microvolt = <1352000>;
300 };
301
302 vreg_s5a_2p04: smps5 {
303 regulator-min-microvolt = <1904000>;
304 regulator-max-microvolt = <2040000>;
305 };
306
307 vreg_s7a_1p025: smps7 {
308 regulator-min-microvolt = <900000>;
309 regulator-max-microvolt = <1028000>;
310 };
311
312 vreg_l1a_0p875: ldo1 {
313 regulator-min-microvolt = <880000>;
314 regulator-max-microvolt = <880000>;
315 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
316 };
317
318 vreg_l5a_0p8: ldo5 {
319 regulator-min-microvolt = <800000>;
320 regulator-max-microvolt = <800000>;
321 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
322 };
323
324 vreg_l12a_1p8: ldo12 {
325 regulator-min-microvolt = <1800000>;
326 regulator-max-microvolt = <1800000>;
327 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
328 };
329
330 vreg_l7a_1p8: ldo7 {
331 regulator-min-microvolt = <1800000>;
332 regulator-max-microvolt = <1800000>;
333 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
334 };
335
336 vreg_l13a_2p95: ldo13 {
337 regulator-min-microvolt = <1800000>;
338 regulator-max-microvolt = <2960000>;
339 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
340 };
341
342 vreg_l17a_1p3: ldo17 {
343 regulator-min-microvolt = <1304000>;
344 regulator-max-microvolt = <1304000>;
345 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
346 };
347
348 vreg_l20a_2p95: ldo20 {
349 regulator-min-microvolt = <2960000>;
350 regulator-max-microvolt = <2968000>;
351 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
352 };
353
354 vreg_l21a_2p95: ldo21 {
355 regulator-min-microvolt = <2960000>;
356 regulator-max-microvolt = <2968000>;
357 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
358 };
359
360 vreg_l24a_3p075: ldo24 {
361 regulator-min-microvolt = <3088000>;
362 regulator-max-microvolt = <3088000>;
363 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
364 };
365
366 vreg_l25a_3p3: ldo25 {
367 regulator-min-microvolt = <3300000>;
368 regulator-max-microvolt = <3312000>;
369 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
370 };
371
372 vreg_l26a_1p2: ldo26 {
373 regulator-min-microvolt = <1200000>;
374 regulator-max-microvolt = <1200000>;
375 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
376 };
377
378 vreg_lvs1a_1p8: lvs1 {
379 regulator-min-microvolt = <1800000>;
380 regulator-max-microvolt = <1800000>;
381 regulator-always-on;
382 };
383
384 vreg_lvs2a_1p8: lvs2 {
385 regulator-min-microvolt = <1800000>;
386 regulator-max-microvolt = <1800000>;
387 regulator-always-on;
388 };
389 };
390
391 pmi8998-rpmh-regulators {
392 compatible = "qcom,pmi8998-rpmh-regulators";
393 qcom,pmic-id = "b";
394
395 vdd-bob-supply = <&vph_pwr>;
396
397 vreg_bob: bob {
398 regulator-min-microvolt = <3312000>;
399 regulator-max-microvolt = <3600000>;
400 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
401 regulator-allow-bypass;
402 };
403 };
404 };
405
406 &cdsp_pas {
407 status = "okay";
408 firmware-name = "qcom/sdm845/cdsp.mbn";
409 };
410
411 &dsi0 {
412 status = "okay";
413 vdda-supply = <&vreg_l26a_1p2>;
414
415 ports {
416 port@1 {
417 endpoint {
418 remote-endpoint = <<9611_a>;
419 data-lanes = <0 1 2 3>;
420 };
421 };
422 };
423 };
424
425 &dsi0_phy {
426 status = "okay";
427 vdds-supply = <&vreg_l1a_0p875>;
428 };
429
430 &gcc {
431 protected-clocks = <GCC_QSPI_CORE_CLK>,
432 <GCC_QSPI_CORE_CLK_SRC>,
433 <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
434 <GCC_LPASS_Q6_AXI_CLK>,
435 <GCC_LPASS_SWAY_CLK>;
436 };
437
438 &gmu {
439 status = "okay";
440 };
441
442 &gpi_dma0 {
443 status = "okay";
444 };
445
446 &gpi_dma1 {
447 status = "okay";
448 };
449
450 &gpu {
451 status = "okay";
452 zap-shader {
453 memory-region = <&gpu_mem>;
454 firmware-name = "qcom/sdm845/a630_zap.mbn";
455 };
456 };
457
458 &i2c10 {
459 status = "okay";
460 clock-frequency = <400000>;
461
462 lt9611_codec: hdmi-bridge@3b {
463 compatible = "lontium,lt9611";
464 reg = <0x3b>;
465 #sound-dai-cells = <1>;
466
467 interrupts-extended = <&tlmm 84 IRQ_TYPE_EDGE_FALLING>;
468
469 reset-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
470
471 vdd-supply = <<9611_1v8>;
472 vcc-supply = <<9611_3v3>;
473
474 pinctrl-names = "default";
475 pinctrl-0 = <<9611_irq_pin>, <&dsi_sw_sel>;
476
477 ports {
478 #address-cells = <1>;
479 #size-cells = <0>;
480
481 port@0 {
482 reg = <0>;
483
484 lt9611_a: endpoint {
485 remote-endpoint = <&dsi0_out>;
486 };
487 };
488
489 port@2 {
490 reg = <2>;
491
492 lt9611_out: endpoint {
493 remote-endpoint = <&hdmi_con>;
494 };
495 };
496 };
497 };
498 };
499
500 &i2c11 {
501 /* On Low speed expansion */
502 clock-frequency = <100000>;
503 label = "LS-I2C1";
504 status = "okay";
505 };
506
507 &i2c14 {
508 /* On Low speed expansion */
509 clock-frequency = <100000>;
510 label = "LS-I2C0";
511 status = "okay";
512 };
513
514 &mdss {
515 status = "okay";
516 };
517
518 &mss_pil {
519 status = "okay";
520 firmware-name = "qcom/sdm845/mba.mbn", "qcom/sdm845/modem.mbn";
521 };
522
523 &pcie0 {
524 status = "okay";
525 perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
526 enable-gpio = <&tlmm 134 GPIO_ACTIVE_HIGH>;
527
528 vddpe-3v3-supply = <&pcie0_3p3v_dual>;
529
530 pinctrl-names = "default";
531 pinctrl-0 = <&pcie0_default_state>;
532 };
533
534 &pcie0_phy {
535 status = "okay";
536
537 vdda-phy-supply = <&vreg_l1a_0p875>;
538 vdda-pll-supply = <&vreg_l26a_1p2>;
539 };
540
541 &pcie1 {
542 status = "okay";
543 perst-gpio = <&tlmm 102 GPIO_ACTIVE_LOW>;
544
545 pinctrl-names = "default";
546 pinctrl-0 = <&pcie1_default_state>;
547 };
548
549 &pcie1_phy {
550 status = "okay";
551
552 vdda-phy-supply = <&vreg_l1a_0p875>;
553 vdda-pll-supply = <&vreg_l26a_1p2>;
554 };
555
556 &pm8998_gpio {
557 gpio-line-names =
558 "NC",
559 "NC",
560 "WLAN_SW_CTRL",
561 "NC",
562 "PM_GPIO5_BLUE_BT_LED",
563 "VOL_UP_N",
564 "NC",
565 "ADC_IN1",
566 "PM_GPIO9_YEL_WIFI_LED",
567 "CAM0_AVDD_EN",
568 "NC",
569 "CAM0_DVDD_EN",
570 "PM_GPIO13_GREEN_U4_LED",
571 "DIV_CLK2",
572 "NC",
573 "NC",
574 "NC",
575 "SMB_STAT",
576 "NC",
577 "NC",
578 "ADC_IN2",
579 "OPTION1",
580 "WCSS_PWR_REQ",
581 "PM845_GPIO24",
582 "OPTION2",
583 "PM845_SLB";
584
585 cam0_dvdd_1v2_en_default: cam0-dvdd-1v2-en-state {
586 pins = "gpio12";
587 function = "normal";
588
589 bias-pull-up;
590 drive-push-pull;
591 qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
592 };
593
594 cam0_avdd_2v8_en_default: cam0-avdd-2v8-en-state {
595 pins = "gpio10";
596 function = "normal";
597
598 bias-pull-up;
599 drive-push-pull;
600 qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
601 };
602
603 vol_up_pin_a: vol-up-active-state {
604 pins = "gpio6";
605 function = "normal";
606 input-enable;
607 bias-pull-up;
608 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
609 };
610 };
611
612 &pm8998_pon {
613 resin {
614 compatible = "qcom,pm8941-resin";
615 interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
616 debounce = <15625>;
617 bias-pull-up;
618 linux,code = <KEY_VOLUMEDOWN>;
619 };
620 };
621
622 &pmi8998_lpg {
623 status = "okay";
624
625 qcom,power-source = <1>;
626
627 led@3 {
628 reg = <3>;
629 color = <LED_COLOR_ID_GREEN>;
630 function = LED_FUNCTION_HEARTBEAT;
631 function-enumerator = <3>;
632
633 linux,default-trigger = "heartbeat";
634 default-state = "on";
635 };
636
637 led@4 {
638 reg = <4>;
639 color = <LED_COLOR_ID_GREEN>;
640 function = LED_FUNCTION_INDICATOR;
641 function-enumerator = <2>;
642 };
643
644 led@5 {
645 reg = <5>;
646 color = <LED_COLOR_ID_GREEN>;
647 function = LED_FUNCTION_INDICATOR;
648 function-enumerator = <1>;
649 };
650 };
651
652 /* QUAT I2S Uses 4 I2S SD Lines for audio on LT9611 HDMI Bridge */
653 &q6afedai {
654 qi2s@22 {
655 reg = <QUATERNARY_MI2S_RX>;
656 qcom,sd-lines = <0 1 2 3>;
657 };
658 };
659
660 &q6asmdai {
661 dai@0 {
662 reg = <0>;
663 };
664
665 dai@1 {
666 reg = <1>;
667 };
668
669 dai@2 {
670 reg = <2>;
671 };
672
673 dai@3 {
674 reg = <3>;
675 direction = <2>;
676 is-compress-dai;
677 };
678 };
679
680 &qupv3_id_0 {
681 status = "okay";
682 };
683
684 &qupv3_id_1 {
685 status = "okay";
686 };
687
688 &sdhc_2 {
689 status = "okay";
690
691 pinctrl-names = "default";
692 pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
693
694 vmmc-supply = <&vreg_l21a_2p95>;
695 vqmmc-supply = <&vreg_l13a_2p95>;
696
697 bus-width = <4>;
698 cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
699 };
700
701 &sound {
702 compatible = "qcom,db845c-sndcard";
703 pinctrl-0 = <&quat_mi2s_active
704 &quat_mi2s_sd0_active
705 &quat_mi2s_sd1_active
706 &quat_mi2s_sd2_active
707 &quat_mi2s_sd3_active>;
708 pinctrl-names = "default";
709 model = "DB845c";
710 audio-routing =
711 "RX_BIAS", "MCLK",
712 "AMIC1", "MIC BIAS1",
713 "AMIC2", "MIC BIAS2",
714 "DMIC0", "MIC BIAS1",
715 "DMIC1", "MIC BIAS1",
716 "DMIC2", "MIC BIAS3",
717 "DMIC3", "MIC BIAS3",
718 "SpkrLeft IN", "SPK1 OUT",
719 "SpkrRight IN", "SPK2 OUT",
720 "MM_DL1", "MultiMedia1 Playback",
721 "MM_DL2", "MultiMedia2 Playback",
722 "MM_DL4", "MultiMedia4 Playback",
723 "MultiMedia3 Capture", "MM_UL3";
724
725 mm1-dai-link {
726 link-name = "MultiMedia1";
727 cpu {
728 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
729 };
730 };
731
732 mm2-dai-link {
733 link-name = "MultiMedia2";
734 cpu {
735 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
736 };
737 };
738
739 mm3-dai-link {
740 link-name = "MultiMedia3";
741 cpu {
742 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
743 };
744 };
745
746 mm4-dai-link {
747 link-name = "MultiMedia4";
748 cpu {
749 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
750 };
751 };
752
753 hdmi-dai-link {
754 link-name = "HDMI Playback";
755 cpu {
756 sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
757 };
758
759 platform {
760 sound-dai = <&q6routing>;
761 };
762
763 codec {
764 sound-dai = <<9611_codec 0>;
765 };
766 };
767
768 slim-dai-link {
769 link-name = "SLIM Playback";
770 cpu {
771 sound-dai = <&q6afedai SLIMBUS_0_RX>;
772 };
773
774 platform {
775 sound-dai = <&q6routing>;
776 };
777
778 codec {
779 sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
780 };
781 };
782
783 slimcap-dai-link {
784 link-name = "SLIM Capture";
785 cpu {
786 sound-dai = <&q6afedai SLIMBUS_0_TX>;
787 };
788
789 platform {
790 sound-dai = <&q6routing>;
791 };
792
793 codec {
794 sound-dai = <&wcd9340 1>;
795 };
796 };
797 };
798
799 &spi0 {
800 status = "okay";
801 pinctrl-names = "default";
802 pinctrl-0 = <&qup_spi0_default>;
803 cs-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
804
805 can@0 {
806 compatible = "microchip,mcp2517fd";
807 reg = <0>;
808 clocks = <&clk40M>;
809 interrupts-extended = <&tlmm 104 IRQ_TYPE_LEVEL_LOW>;
810 spi-max-frequency = <10000000>;
811 vdd-supply = <&vdc_5v>;
812 xceiver-supply = <&vdc_5v>;
813 };
814 };
815
816 &spi2 {
817 /* On Low speed expansion */
818 label = "LS-SPI0";
819 status = "okay";
820 };
821
822 &tlmm {
823 cam0_default: cam0_default {
824 rst {
825 pins = "gpio9";
826 function = "gpio";
827
828 drive-strength = <16>;
829 bias-disable;
830 };
831
832 mclk0 {
833 pins = "gpio13";
834 function = "cam_mclk";
835
836 drive-strength = <16>;
837 bias-disable;
838 };
839 };
840
841 cam3_default: cam3_default {
842 rst {
843 function = "gpio";
844 pins = "gpio21";
845
846 drive-strength = <16>;
847 bias-disable;
848 };
849
850 mclk3 {
851 function = "cam_mclk";
852 pins = "gpio16";
853
854 drive-strength = <16>;
855 bias-disable;
856 };
857 };
858
859 dsi_sw_sel: dsi-sw-sel {
860 pins = "gpio120";
861 function = "gpio";
862
863 drive-strength = <2>;
864 bias-disable;
865 output-high;
866 };
867
868 lt9611_irq_pin: lt9611-irq {
869 pins = "gpio84";
870 function = "gpio";
871 bias-disable;
872 };
873
874 pcie0_default_state: pcie0-default {
875 clkreq {
876 pins = "gpio36";
877 function = "pci_e0";
878 bias-pull-up;
879 };
880
881 reset-n {
882 pins = "gpio35";
883 function = "gpio";
884
885 drive-strength = <2>;
886 output-low;
887 bias-pull-down;
888 };
889
890 wake-n {
891 pins = "gpio37";
892 function = "gpio";
893
894 drive-strength = <2>;
895 bias-pull-up;
896 };
897 };
898
899 pcie0_pwren_state: pcie0-pwren {
900 pins = "gpio90";
901 function = "gpio";
902
903 drive-strength = <2>;
904 bias-disable;
905 };
906
907 pcie1_default_state: pcie1-default {
908 perst-n {
909 pins = "gpio102";
910 function = "gpio";
911
912 drive-strength = <16>;
913 bias-disable;
914 };
915
916 clkreq {
917 pins = "gpio103";
918 function = "pci_e1";
919 bias-pull-up;
920 };
921
922 wake-n {
923 pins = "gpio11";
924 function = "gpio";
925
926 drive-strength = <2>;
927 bias-pull-up;
928 };
929
930 reset-n {
931 pins = "gpio75";
932 function = "gpio";
933
934 drive-strength = <16>;
935 bias-pull-up;
936 output-high;
937 };
938 };
939
940 sdc2_default_state: sdc2-default {
941 clk {
942 pins = "sdc2_clk";
943 bias-disable;
944
945 /*
946 * It seems that mmc_test reports errors if drive
947 * strength is not 16 on clk, cmd, and data pins.
948 */
949 drive-strength = <16>;
950 };
951
952 cmd {
953 pins = "sdc2_cmd";
954 bias-pull-up;
955 drive-strength = <10>;
956 };
957
958 data {
959 pins = "sdc2_data";
960 bias-pull-up;
961 drive-strength = <10>;
962 };
963 };
964
965 sdc2_card_det_n: sd-card-det-n {
966 pins = "gpio126";
967 function = "gpio";
968 bias-pull-up;
969 };
970
971 wcd_intr_default: wcd_intr_default {
972 pins = <54>;
973 function = "gpio";
974
975 input-enable;
976 bias-pull-down;
977 drive-strength = <2>;
978 };
979 };
980
981 &uart3 {
982 label = "LS-UART0";
983 status = "disabled";
984 };
985
986 &uart6 {
987 status = "okay";
988
989 bluetooth {
990 compatible = "qcom,wcn3990-bt";
991
992 vddio-supply = <&vreg_s4a_1p8>;
993 vddxo-supply = <&vreg_l7a_1p8>;
994 vddrf-supply = <&vreg_l17a_1p3>;
995 vddch0-supply = <&vreg_l25a_3p3>;
996 max-speed = <3200000>;
997 };
998 };
999
1000 &uart9 {
1001 label = "LS-UART1";
1002 status = "okay";
1003 };
1004
1005 &usb_1 {
1006 status = "okay";
1007 };
1008
1009 &usb_1_dwc3 {
1010 dr_mode = "peripheral";
1011 };
1012
1013 &usb_1_hsphy {
1014 status = "okay";
1015
1016 vdd-supply = <&vreg_l1a_0p875>;
1017 vdda-pll-supply = <&vreg_l12a_1p8>;
1018 vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
1019
1020 qcom,imp-res-offset-value = <8>;
1021 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
1022 qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
1023 qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
1024 };
1025
1026 &usb_1_qmpphy {
1027 status = "okay";
1028
1029 vdda-phy-supply = <&vreg_l26a_1p2>;
1030 vdda-pll-supply = <&vreg_l1a_0p875>;
1031 };
1032
1033 &usb_2 {
1034 status = "okay";
1035 };
1036
1037 &usb_2_dwc3 {
1038 dr_mode = "host";
1039 };
1040
1041 &usb_2_hsphy {
1042 status = "okay";
1043
1044 vdd-supply = <&vreg_l1a_0p875>;
1045 vdda-pll-supply = <&vreg_l12a_1p8>;
1046 vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
1047
1048 qcom,imp-res-offset-value = <8>;
1049 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_22_8_MA>;
1050 };
1051
1052 &usb_2_qmpphy {
1053 status = "okay";
1054
1055 vdda-phy-supply = <&vreg_l26a_1p2>;
1056 vdda-pll-supply = <&vreg_l1a_0p875>;
1057 };
1058
1059 &ufs_mem_hc {
1060 status = "okay";
1061
1062 reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
1063
1064 vcc-supply = <&vreg_l20a_2p95>;
1065 vcc-max-microamp = <800000>;
1066 };
1067
1068 &ufs_mem_phy {
1069 status = "okay";
1070
1071 vdda-phy-supply = <&vreg_l1a_0p875>;
1072 vdda-pll-supply = <&vreg_l26a_1p2>;
1073 };
1074
1075 &venus {
1076 status = "okay";
1077 };
1078
1079 &wcd9340{
1080 pinctrl-0 = <&wcd_intr_default>;
1081 pinctrl-names = "default";
1082 clock-names = "extclk";
1083 clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
1084 reset-gpios = <&tlmm 64 0>;
1085 vdd-buck-supply = <&vreg_s4a_1p8>;
1086 vdd-buck-sido-supply = <&vreg_s4a_1p8>;
1087 vdd-tx-supply = <&vreg_s4a_1p8>;
1088 vdd-rx-supply = <&vreg_s4a_1p8>;
1089 vdd-io-supply = <&vreg_s4a_1p8>;
1090
1091 swm: swm@c85 {
1092 left_spkr: wsa8810-left{
1093 compatible = "sdw10217201000";
1094 reg = <0 1>;
1095 powerdown-gpios = <&wcdgpio 1 GPIO_ACTIVE_HIGH>;
1096 #thermal-sensor-cells = <0>;
1097 sound-name-prefix = "SpkrLeft";
1098 #sound-dai-cells = <0>;
1099 };
1100
1101 right_spkr: wsa8810-right{
1102 compatible = "sdw10217201000";
1103 powerdown-gpios = <&wcdgpio 1 GPIO_ACTIVE_HIGH>;
1104 reg = <0 2>;
1105 #thermal-sensor-cells = <0>;
1106 sound-name-prefix = "SpkrRight";
1107 #sound-dai-cells = <0>;
1108 };
1109 };
1110 };
1111
1112 &wifi {
1113 status = "okay";
1114
1115 vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
1116 vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
1117 vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
1118 vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
1119
1120 qcom,snoc-host-cap-8bit-quirk;
1121 qcom,ath10k-calibration-variant = "Thundercomm_DB845C";
1122 };
1123
1124 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
1125 &qup_spi2_default {
1126 drive-strength = <16>;
1127 };
1128
1129 &qup_uart3_default{
1130 pinmux {
1131 pins = "gpio41", "gpio42", "gpio43", "gpio44";
1132 function = "qup3";
1133 };
1134 };
1135
1136 &qup_i2c10_default {
1137 pinconf {
1138 pins = "gpio55", "gpio56";
1139 drive-strength = <2>;
1140 bias-disable;
1141 };
1142 };
1143
1144 &qup_uart6_default {
1145 pinmux {
1146 pins = "gpio45", "gpio46", "gpio47", "gpio48";
1147 function = "qup6";
1148 };
1149
1150 cts {
1151 pins = "gpio45";
1152 bias-disable;
1153 };
1154
1155 rts-tx {
1156 pins = "gpio46", "gpio47";
1157 drive-strength = <2>;
1158 bias-disable;
1159 };
1160
1161 rx {
1162 pins = "gpio48";
1163 bias-pull-up;
1164 };
1165 };
1166
1167 &qup_uart9_default {
1168 pinconf-tx {
1169 pins = "gpio4";
1170 drive-strength = <2>;
1171 bias-disable;
1172 };
1173
1174 pinconf-rx {
1175 pins = "gpio5";
1176 drive-strength = <2>;
1177 bias-pull-up;
1178 };
1179 };
1180
1181 &pm8998_gpio {
1182
1183 };
1184
1185 &cci {
1186 status = "okay";
1187 };
1188
1189 &camss {
1190 vdda-phy-supply = <&vreg_l1a_0p875>;
1191 vdda-pll-supply = <&vreg_l26a_1p2>;
1192
1193 status = "ok";
1194
1195 ports {
1196 #address-cells = <1>;
1197 #size-cells = <0>;
1198 port@0 {
1199 reg = <0>;
1200 csiphy0_ep: endpoint {
1201 data-lanes = <0 1 2 3>;
1202 remote-endpoint = <&ov8856_ep>;
1203 };
1204 };
1205 };
1206 };
1207
1208 &cci_i2c0 {
1209 camera@10 {
1210 compatible = "ovti,ov8856";
1211 reg = <0x10>;
1212
1213 // CAM0_RST_N
1214 reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
1215 pinctrl-names = "default";
1216 pinctrl-0 = <&cam0_default>;
1217 gpios = <&tlmm 13 0>,
1218 <&tlmm 9 GPIO_ACTIVE_LOW>;
1219
1220 clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
1221 clock-names = "xvclk";
1222 clock-frequency = <19200000>;
1223
1224 /* The &vreg_s4a_1p8 trace is powered on as a,
1225 * so it is represented by a fixed regulator.
1226 *
1227 * The 2.8V vdda-supply and 1.2V vddd-supply regulators
1228 * both have to be enabled through the power management
1229 * gpios.
1230 */
1231 power-domains = <&clock_camcc TITAN_TOP_GDSC>;
1232
1233 dovdd-supply = <&vreg_lvs1a_1p8>;
1234 avdd-supply = <&cam0_avdd_2v8>;
1235 dvdd-supply = <&cam0_dvdd_1v2>;
1236
1237 status = "ok";
1238
1239 port {
1240 ov8856_ep: endpoint {
1241 link-frequencies = /bits/ 64
1242 <360000000 180000000>;
1243 data-lanes = <1 2 3 4>;
1244 remote-endpoint = <&csiphy0_ep>;
1245 };
1246 };
1247 };
1248 };
1249
1250 &cci_i2c1 {
1251 camera@60 {
1252 compatible = "ovti,ov7251";
1253
1254 // I2C address as per ov7251.txt linux documentation
1255 reg = <0x60>;
1256
1257 // CAM3_RST_N
1258 enable-gpios = <&tlmm 21 0>;
1259 pinctrl-names = "default";
1260 pinctrl-0 = <&cam3_default>;
1261 gpios = <&tlmm 16 0>,
1262 <&tlmm 21 0>;
1263
1264 clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
1265 clock-names = "xclk";
1266 clock-frequency = <24000000>;
1267
1268 /* The &vreg_s4a_1p8 trace always powered on.
1269 *
1270 * The 2.8V vdda-supply regulator is enabled when the
1271 * vreg_s4a_1p8 trace is pulled high.
1272 * It too is represented by a fixed regulator.
1273 *
1274 * No 1.2V vddd-supply regulator is used.
1275 */
1276 power-domains = <&clock_camcc TITAN_TOP_GDSC>;
1277
1278 vdddo-supply = <&vreg_lvs1a_1p8>;
1279 vdda-supply = <&cam3_avdd_2v8>;
1280
1281 status = "disable";
1282
1283 port {
1284 ov7251_ep: endpoint {
1285 data-lanes = <0 1>;
1286 // remote-endpoint = <&csiphy3_ep>;
1287 };
1288 };
1289 };
1290 };
1291
1292 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
1293 &qup_spi0_default {
1294 config {
1295 drive-strength = <6>;
1296 bias-disable;
1297 };
1298 };
Cache object: d68c95f91d07ff96267151eb1642c8d9
|