blob: 0ab5e8f53ac9f8fdee1c962d3e568c8ca06a9d5f [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Google Cheza device tree source (common between revisions)
4 *
5 * Copyright 2018 Google LLC.
6 */
7
8#include <dt-bindings/input/input.h>
9#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
10#include "sdm845.dtsi"
11
12/* PMICs depend on spmi_bus label and so must come after SoC */
13#include "pm8005.dtsi"
14#include "pm8998.dtsi"
15
16/ {
17 aliases {
18 bluetooth0 = &bluetooth;
19 serial1 = &uart6;
20 serial0 = &uart9;
21 wifi0 = &wifi;
22 };
23
24 chosen {
25 stdout-path = "serial0:115200n8";
26 };
27
28 backlight: backlight {
29 compatible = "pwm-backlight";
30 pwms = <&cros_ec_pwm 0>;
31 enable-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
32 power-supply = <&ppvar_sys>;
33 pinctrl-names = "default";
34 pinctrl-0 = <&ap_edp_bklten>;
35 };
36
37 /* FIXED REGULATORS - parents above children */
38
39 /* This is the top level supply and variable voltage */
40 ppvar_sys: ppvar-sys-regulator {
41 compatible = "regulator-fixed";
42 regulator-name = "ppvar_sys";
43 regulator-always-on;
44 regulator-boot-on;
45 };
46
47 /* This divides ppvar_sys by 2, so voltage is variable */
48 src_vph_pwr: src-vph-pwr-regulator {
49 compatible = "regulator-fixed";
50 regulator-name = "src_vph_pwr";
51
52 /* EC turns on with switchcap_on_l; always on for AP */
53 regulator-always-on;
54 regulator-boot-on;
55
56 vin-supply = <&ppvar_sys>;
57 };
58
59 pp5000_a: pp5000-a-regulator {
60 compatible = "regulator-fixed";
61 regulator-name = "pp5000_a";
62
63 /* EC turns on with en_pp5000_a; always on for AP */
64 regulator-always-on;
65 regulator-boot-on;
66 regulator-min-microvolt = <5000000>;
67 regulator-max-microvolt = <5000000>;
68
69 vin-supply = <&ppvar_sys>;
70 };
71
72 src_vreg_bob: src-vreg-bob-regulator {
73 compatible = "regulator-fixed";
74 regulator-name = "src_vreg_bob";
75
76 /* EC turns on with vbob_en; always on for AP */
77 regulator-always-on;
78 regulator-boot-on;
79 regulator-min-microvolt = <3600000>;
80 regulator-max-microvolt = <3600000>;
81
82 vin-supply = <&ppvar_sys>;
83 };
84
85 pp3300_dx_edp: pp3300-dx-edp-regulator {
86 compatible = "regulator-fixed";
87 regulator-name = "pp3300_dx_edp";
88
89 regulator-min-microvolt = <3300000>;
90 regulator-max-microvolt = <3300000>;
91
92 gpio = <&tlmm 43 GPIO_ACTIVE_HIGH>;
93 enable-active-high;
94 pinctrl-names = "default";
95 pinctrl-0 = <&en_pp3300_dx_edp>;
96 };
97
98 /*
99 * Apparently RPMh does not provide support for PM8998 S4 because it
100 * is always-on; model it as a fixed regulator.
101 */
102 src_pp1800_s4a: pm8998-smps4 {
103 compatible = "regulator-fixed";
104 regulator-name = "src_pp1800_s4a";
105
106 regulator-min-microvolt = <1800000>;
107 regulator-max-microvolt = <1800000>;
108
109 regulator-always-on;
110 regulator-boot-on;
111
112 vin-supply = <&src_vph_pwr>;
113 };
114
115 /* BOARD-SPECIFIC TOP LEVEL NODES */
116
117 gpio-keys {
118 compatible = "gpio-keys";
119 pinctrl-names = "default";
120 pinctrl-0 = <&pen_eject_odl>;
121
122 switch-pen-insert {
123 label = "Pen Insert";
124 /* Insert = low, eject = high */
125 gpios = <&tlmm 119 GPIO_ACTIVE_LOW>;
126 linux,code = <SW_PEN_INSERTED>;
127 linux,input-type = <EV_SW>;
128 wakeup-source;
129 };
130 };
131
132 panel: panel {
133 compatible = "innolux,p120zdg-bf1";
134 power-supply = <&pp3300_dx_edp>;
135 backlight = <&backlight>;
136 no-hpd;
137
138 panel_in: port {
139 panel_in_edp: endpoint {
140 remote-endpoint = <&sn65dsi86_out>;
141 };
142 };
143 };
144};
145
146&cpufreq_hw {
147 /delete-property/ interrupts-extended; /* reference to lmh_cluster[01] */
148};
149
150&psci {
151 /delete-node/ power-domain-cpu0;
152 /delete-node/ power-domain-cpu1;
153 /delete-node/ power-domain-cpu2;
154 /delete-node/ power-domain-cpu3;
155 /delete-node/ power-domain-cpu4;
156 /delete-node/ power-domain-cpu5;
157 /delete-node/ power-domain-cpu6;
158 /delete-node/ power-domain-cpu7;
159 /delete-node/ power-domain-cluster;
160};
161
162&cpus {
163 /delete-node/ domain-idle-states;
164};
165
166&cpu_idle_states {
167 LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 {
168 compatible = "arm,idle-state";
169 idle-state-name = "little-power-down";
170 arm,psci-suspend-param = <0x40000003>;
171 entry-latency-us = <350>;
172 exit-latency-us = <461>;
173 min-residency-us = <1890>;
174 local-timer-stop;
175 };
176
177 LITTLE_CPU_SLEEP_1: cpu-sleep-0-1 {
178 compatible = "arm,idle-state";
179 idle-state-name = "little-rail-power-down";
180 arm,psci-suspend-param = <0x40000004>;
181 entry-latency-us = <360>;
182 exit-latency-us = <531>;
183 min-residency-us = <3934>;
184 local-timer-stop;
185 };
186
187 BIG_CPU_SLEEP_0: cpu-sleep-1-0 {
188 compatible = "arm,idle-state";
189 idle-state-name = "big-power-down";
190 arm,psci-suspend-param = <0x40000003>;
191 entry-latency-us = <264>;
192 exit-latency-us = <621>;
193 min-residency-us = <952>;
194 local-timer-stop;
195 };
196
197 BIG_CPU_SLEEP_1: cpu-sleep-1-1 {
198 compatible = "arm,idle-state";
199 idle-state-name = "big-rail-power-down";
200 arm,psci-suspend-param = <0x40000004>;
201 entry-latency-us = <702>;
202 exit-latency-us = <1061>;
203 min-residency-us = <4488>;
204 local-timer-stop;
205 };
206
207 CLUSTER_SLEEP_0: cluster-sleep-0 {
208 compatible = "arm,idle-state";
209 idle-state-name = "cluster-power-down";
210 arm,psci-suspend-param = <0x400000F4>;
211 entry-latency-us = <3263>;
212 exit-latency-us = <6562>;
213 min-residency-us = <9987>;
214 local-timer-stop;
215 };
216};
217
218&CPU0 {
219 /delete-property/ power-domains;
220 /delete-property/ power-domain-names;
221 cpu-idle-states = <&LITTLE_CPU_SLEEP_0
222 &LITTLE_CPU_SLEEP_1
223 &CLUSTER_SLEEP_0>;
224};
225
226&CPU1 {
227 /delete-property/ power-domains;
228 /delete-property/ power-domain-names;
229 cpu-idle-states = <&LITTLE_CPU_SLEEP_0
230 &LITTLE_CPU_SLEEP_1
231 &CLUSTER_SLEEP_0>;
232};
233
234&CPU2 {
235 /delete-property/ power-domains;
236 /delete-property/ power-domain-names;
237 cpu-idle-states = <&LITTLE_CPU_SLEEP_0
238 &LITTLE_CPU_SLEEP_1
239 &CLUSTER_SLEEP_0>;
240};
241
242&CPU3 {
243 /delete-property/ power-domains;
244 /delete-property/ power-domain-names;
245 cpu-idle-states = <&LITTLE_CPU_SLEEP_0
246 &LITTLE_CPU_SLEEP_1
247 &CLUSTER_SLEEP_0>;
248};
249
250&CPU4 {
251 /delete-property/ power-domains;
252 /delete-property/ power-domain-names;
253 cpu-idle-states = <&BIG_CPU_SLEEP_0
254 &BIG_CPU_SLEEP_1
255 &CLUSTER_SLEEP_0>;
256};
257
258&CPU5 {
259 /delete-property/ power-domains;
260 /delete-property/ power-domain-names;
261 cpu-idle-states = <&BIG_CPU_SLEEP_0
262 &BIG_CPU_SLEEP_1
263 &CLUSTER_SLEEP_0>;
264};
265
266&CPU6 {
267 /delete-property/ power-domains;
268 /delete-property/ power-domain-names;
269 cpu-idle-states = <&BIG_CPU_SLEEP_0
270 &BIG_CPU_SLEEP_1
271 &CLUSTER_SLEEP_0>;
272};
273
274&CPU7 {
275 /delete-property/ power-domains;
276 /delete-property/ power-domain-names;
277 cpu-idle-states = <&BIG_CPU_SLEEP_0
278 &BIG_CPU_SLEEP_1
279 &CLUSTER_SLEEP_0>;
280};
281
282&lmh_cluster0 {
283 status = "disabled";
284};
285
286&lmh_cluster1 {
287 status = "disabled";
288};
289
290/*
291 * Reserved memory changes
292 *
293 * Putting this all together (out of order with the rest of the file) to keep
294 * all modifications to the memory map (from sdm845.dtsi) in one place.
295 */
296
297/*
298 * Our mpss_region is 8MB bigger than the default one and that conflicts
299 * with venus_mem and cdsp_mem.
300 *
301 * For venus_mem we'll delete and re-create at a different address.
302 *
303 * cdsp_mem isn't used on cheza right now so we won't bother re-creating it; but
304 * that also means we need to delete cdsp_pas.
305 */
306/delete-node/ &venus_mem;
307/delete-node/ &cdsp_mem;
308/delete-node/ &cdsp_pas;
309/delete-node/ &gpu_mem;
310
311/* Increase the size from 120 MB to 128 MB */
312&mpss_region {
313 reg = <0 0x8e000000 0 0x8000000>;
314};
315
316/* Increase the size from 2MB to 8MB */
317&rmtfs_mem {
318 reg = <0 0x88f00000 0 0x800000>;
319};
320
321/ {
322 reserved-memory {
323 venus_mem: memory@96000000 {
324 reg = <0 0x96000000 0 0x500000>;
325 no-map;
326 };
327 };
328};
329
330&qspi {
331 status = "okay";
332 pinctrl-names = "default", "sleep";
333 pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
334 pinctrl-1 = <&qspi_sleep>;
335
336 flash@0 {
337 compatible = "jedec,spi-nor";
338 reg = <0>;
339
340 /*
341 * In theory chip supports up to 104 MHz and controller up
342 * to 80 MHz, but above 25 MHz wasn't reliable so we'll use
343 * that for now. b:117440651
344 */
345 spi-max-frequency = <25000000>;
346 spi-tx-bus-width = <2>;
347 spi-rx-bus-width = <2>;
348 };
349};
350
351
352&apps_rsc {
353 /delete-property/ power-domains;
354
355 regulators-0 {
356 compatible = "qcom,pm8998-rpmh-regulators";
357 qcom,pmic-id = "a";
358
359 vdd-s1-supply = <&src_vph_pwr>;
360 vdd-s2-supply = <&src_vph_pwr>;
361 vdd-s3-supply = <&src_vph_pwr>;
362 vdd-s4-supply = <&src_vph_pwr>;
363 vdd-s5-supply = <&src_vph_pwr>;
364 vdd-s6-supply = <&src_vph_pwr>;
365 vdd-s7-supply = <&src_vph_pwr>;
366 vdd-s8-supply = <&src_vph_pwr>;
367 vdd-s9-supply = <&src_vph_pwr>;
368 vdd-s10-supply = <&src_vph_pwr>;
369 vdd-s11-supply = <&src_vph_pwr>;
370 vdd-s12-supply = <&src_vph_pwr>;
371 vdd-s13-supply = <&src_vph_pwr>;
372 vdd-l1-l27-supply = <&src_pp1025_s7a>;
373 vdd-l2-l8-l17-supply = <&src_pp1350_s3a>;
374 vdd-l3-l11-supply = <&src_pp1025_s7a>;
375 vdd-l4-l5-supply = <&src_pp1025_s7a>;
376 vdd-l6-supply = <&src_vph_pwr>;
377 vdd-l7-l12-l14-l15-supply = <&src_pp2040_s5a>;
378 vdd-l9-supply = <&src_pp2040_s5a>;
379 vdd-l10-l23-l25-supply = <&src_vreg_bob>;
380 vdd-l13-l19-l21-supply = <&src_vreg_bob>;
381 vdd-l16-l28-supply = <&src_vreg_bob>;
382 vdd-l18-l22-supply = <&src_vreg_bob>;
383 vdd-l20-l24-supply = <&src_vreg_bob>;
384 vdd-l26-supply = <&src_pp1350_s3a>;
385 vin-lvs-1-2-supply = <&src_pp1800_s4a>;
386
387 src_pp1125_s2a: smps2 {
388 regulator-min-microvolt = <1100000>;
389 regulator-max-microvolt = <1100000>;
390 };
391
392 src_pp1350_s3a: smps3 {
393 regulator-min-microvolt = <1352000>;
394 regulator-max-microvolt = <1352000>;
395 };
396
397 src_pp2040_s5a: smps5 {
398 regulator-min-microvolt = <1904000>;
399 regulator-max-microvolt = <2040000>;
400 };
401
402 src_pp1025_s7a: smps7 {
403 regulator-min-microvolt = <900000>;
404 regulator-max-microvolt = <1028000>;
405 };
406
407 vdd_qusb_hs0:
408 vdda_hp_pcie_core:
409 vdda_mipi_csi0_0p9:
410 vdda_mipi_csi1_0p9:
411 vdda_mipi_csi2_0p9:
412 vdda_mipi_dsi0_pll:
413 vdda_mipi_dsi1_pll:
414 vdda_qlink_lv:
415 vdda_qlink_lv_ck:
416 vdda_qrefs_0p875:
417 vdda_pcie_core:
418 vdda_pll_cc_ebi01:
419 vdda_pll_cc_ebi23:
420 vdda_sp_sensor:
421 vdda_ufs1_core:
422 vdda_ufs2_core:
423 vdda_usb1_ss_core:
424 vdda_usb2_ss_core:
425 src_pp875_l1a: ldo1 {
426 regulator-min-microvolt = <880000>;
427 regulator-max-microvolt = <880000>;
428 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
429 };
430
431 vddpx_10:
432 src_pp1200_l2a: ldo2 {
433 regulator-min-microvolt = <1200000>;
434 regulator-max-microvolt = <1200000>;
435 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
436
437 /* TODO: why??? */
438 regulator-always-on;
439 };
440
441 pp1000_l3a_sdr845: ldo3 {
442 regulator-min-microvolt = <1000000>;
443 regulator-max-microvolt = <1000000>;
444 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
445 };
446
447 vdd_wcss_cx:
448 vdd_wcss_mx:
449 vdda_wcss_pll:
450 src_pp800_l5a: ldo5 {
451 regulator-min-microvolt = <800000>;
452 regulator-max-microvolt = <800000>;
453 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
454 };
455
456 vddpx_13:
457 src_pp1800_l6a: ldo6 {
458 regulator-min-microvolt = <1856000>;
459 regulator-max-microvolt = <1856000>;
460 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
461 };
462
463 pp1800_l7a_wcn3990: ldo7 {
464 regulator-min-microvolt = <1800000>;
465 regulator-max-microvolt = <1800000>;
466 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
467 };
468
469 src_pp1200_l8a: ldo8 {
470 regulator-min-microvolt = <1200000>;
471 regulator-max-microvolt = <1248000>;
472 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
473 };
474
475 pp1800_dx_pen:
476 src_pp1800_l9a: ldo9 {
477 regulator-min-microvolt = <1800000>;
478 regulator-max-microvolt = <1800000>;
479 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
480 };
481
482 src_pp1800_l10a: ldo10 {
483 regulator-min-microvolt = <1800000>;
484 regulator-max-microvolt = <1800000>;
485 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
486 };
487
488 pp1000_l11a_sdr845: ldo11 {
489 regulator-min-microvolt = <1000000>;
490 regulator-max-microvolt = <1048000>;
491 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
492 };
493
494 vdd_qfprom:
495 vdd_qfprom_sp:
496 vdda_apc1_cs_1p8:
497 vdda_gfx_cs_1p8:
498 vdda_qrefs_1p8:
499 vdda_qusb_hs0_1p8:
500 vddpx_11:
501 src_pp1800_l12a: ldo12 {
502 regulator-min-microvolt = <1800000>;
503 regulator-max-microvolt = <1800000>;
504 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
505 };
506
507 vddpx_2:
508 src_pp2950_l13a: ldo13 {
509 regulator-min-microvolt = <1800000>;
510 regulator-max-microvolt = <2960000>;
511 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
512 };
513
514 src_pp1800_l14a: ldo14 {
515 regulator-min-microvolt = <1800000>;
516 regulator-max-microvolt = <1800000>;
517 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
518 };
519
520 src_pp1800_l15a: ldo15 {
521 regulator-min-microvolt = <1800000>;
522 regulator-max-microvolt = <1800000>;
523 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
524 };
525
526 pp2700_l16a: ldo16 {
527 regulator-min-microvolt = <2704000>;
528 regulator-max-microvolt = <2704000>;
529 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
530 };
531
532 src_pp1300_l17a: ldo17 {
533 regulator-min-microvolt = <1304000>;
534 regulator-max-microvolt = <1304000>;
535 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
536 };
537
538 pp2700_l18a: ldo18 {
539 regulator-min-microvolt = <2704000>;
540 regulator-max-microvolt = <2960000>;
541 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
542 };
543
544 /*
545 * NOTE: this rail should have been called
546 * src_pp3300_l19a in the schematic
547 */
548 src_pp3000_l19a: ldo19 {
549 regulator-min-microvolt = <3304000>;
550 regulator-max-microvolt = <3304000>;
551
552 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
553 };
554
555 src_pp2950_l20a: ldo20 {
556 regulator-min-microvolt = <2704000>;
557 regulator-max-microvolt = <2960000>;
558 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
559 };
560
561 src_pp2950_l21a: ldo21 {
562 regulator-min-microvolt = <2704000>;
563 regulator-max-microvolt = <2960000>;
564 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
565 };
566
567 pp3300_hub:
568 src_pp3300_l22a: ldo22 {
569 regulator-min-microvolt = <3304000>;
570 regulator-max-microvolt = <3304000>;
571 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
572 /*
573 * HACK: Should add a usb hub node and driver
574 * to turn this on and off at suspend/resume time
575 */
576 regulator-boot-on;
577 regulator-always-on;
578 };
579
580 pp3300_l23a_ch1_wcn3990: ldo23 {
581 regulator-min-microvolt = <3000000>;
582 regulator-max-microvolt = <3312000>;
583 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
584 };
585
586 vdda_qusb_hs0_3p1:
587 src_pp3075_l24a: ldo24 {
588 regulator-min-microvolt = <3088000>;
589 regulator-max-microvolt = <3088000>;
590 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
591 };
592
593 pp3300_l25a_ch0_wcn3990: ldo25 {
594 regulator-min-microvolt = <3304000>;
595 regulator-max-microvolt = <3304000>;
596 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
597 };
598
599 pp1200_hub:
600 vdda_hp_pcie_1p2:
601 vdda_hv_ebi0:
602 vdda_hv_ebi1:
603 vdda_hv_ebi2:
604 vdda_hv_ebi3:
605 vdda_mipi_csi_1p25:
606 vdda_mipi_dsi0_1p2:
607 vdda_mipi_dsi1_1p2:
608 vdda_pcie_1p2:
609 vdda_ufs1_1p2:
610 vdda_ufs2_1p2:
611 vdda_usb1_ss_1p2:
612 vdda_usb2_ss_1p2:
613 src_pp1200_l26a: ldo26 {
614 regulator-min-microvolt = <1200000>;
615 regulator-max-microvolt = <1200000>;
616 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
617 };
618
619 pp3300_dx_pen:
620 src_pp3300_l28a: ldo28 {
621 regulator-min-microvolt = <3304000>;
622 regulator-max-microvolt = <3304000>;
623 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
624 };
625
626 src_pp1800_lvs1: lvs1 {
627 regulator-min-microvolt = <1800000>;
628 regulator-max-microvolt = <1800000>;
629 };
630
631 src_pp1800_lvs2: lvs2 {
632 regulator-min-microvolt = <1800000>;
633 regulator-max-microvolt = <1800000>;
634 };
635 };
636
637 regulators-1 {
638 compatible = "qcom,pm8005-rpmh-regulators";
639 qcom,pmic-id = "c";
640
641 vdd-s1-supply = <&src_vph_pwr>;
642 vdd-s2-supply = <&src_vph_pwr>;
643 vdd-s3-supply = <&src_vph_pwr>;
644 vdd-s4-supply = <&src_vph_pwr>;
645
646 src_pp600_s3c: smps3 {
647 regulator-min-microvolt = <600000>;
648 regulator-max-microvolt = <600000>;
649 };
650 };
651};
652
653edp_brij_i2c: &i2c3 {
654 status = "okay";
655 clock-frequency = <400000>;
656
657 sn65dsi86_bridge: bridge@2d {
658 compatible = "ti,sn65dsi86";
659 reg = <0x2d>;
660 pinctrl-names = "default";
661 pinctrl-0 = <&edp_brij_en &edp_brij_irq>;
662
663 interrupt-parent = <&tlmm>;
664 interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
665
666 enable-gpios = <&tlmm 102 GPIO_ACTIVE_HIGH>;
667
668 vpll-supply = <&src_pp1800_s4a>;
669 vccio-supply = <&src_pp1800_s4a>;
670 vcca-supply = <&src_pp1200_l2a>;
671 vcc-supply = <&src_pp1200_l2a>;
672
673 clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
674 clock-names = "refclk";
675
676 no-hpd;
677
678 ports {
679 #address-cells = <1>;
680 #size-cells = <0>;
681
682 port@0 {
683 reg = <0>;
684 sn65dsi86_in: endpoint {
685 remote-endpoint = <&mdss_dsi0_out>;
686 };
687 };
688
689 port@1 {
690 reg = <1>;
691 sn65dsi86_out: endpoint {
692 remote-endpoint = <&panel_in_edp>;
693 };
694 };
695 };
696 };
697};
698
699ap_pen_1v8: &i2c11 {
700 status = "okay";
701 clock-frequency = <400000>;
702
703 digitizer@9 {
704 compatible = "wacom,w9013", "hid-over-i2c";
705 reg = <0x9>;
706 pinctrl-names = "default";
707 pinctrl-0 = <&pen_irq_l>, <&pen_pdct_l>, <&pen_rst_l>;
708
709 vdd-supply = <&pp3300_dx_pen>;
710 vddl-supply = <&pp1800_dx_pen>;
711 post-power-on-delay-ms = <100>;
712
713 interrupt-parent = <&tlmm>;
714 interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
715
716 hid-descr-addr = <0x1>;
717 };
718};
719
720amp_i2c: &i2c12 {
721 status = "okay";
722 clock-frequency = <400000>;
723};
724
725ap_ts_i2c: &i2c14 {
726 status = "okay";
727 clock-frequency = <400000>;
728
729 touchscreen@10 {
730 compatible = "elan,ekth3500";
731 reg = <0x10>;
732 pinctrl-names = "default";
733 pinctrl-0 = <&ts_int_l &ts_reset_l>;
734
735 interrupt-parent = <&tlmm>;
736 interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
737
738 vcc33-supply = <&src_pp3300_l28a>;
739
740 reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
741 };
742};
743
744&gmu {
745 status = "okay";
746};
747
748&gpu {
749 status = "okay";
750};
751
752&ipa {
753 qcom,gsi-loader = "modem";
754 status = "okay";
755};
756
757&lpasscc {
758 status = "okay";
759};
760
761&mdss {
762 status = "okay";
763};
764
765&mdss_dsi0 {
766 status = "okay";
767 vdda-supply = <&vdda_mipi_dsi0_1p2>;
768
769 ports {
770 port@1 {
771 endpoint {
772 remote-endpoint = <&sn65dsi86_in>;
773 data-lanes = <0 1 2 3>;
774 };
775 };
776 };
777};
778
779&mdss_dsi0_phy {
780 status = "okay";
781 vdds-supply = <&vdda_mipi_dsi0_pll>;
782};
783
784/*
785 * Cheza fw does not properly program the GPU aperture to allow the
786 * GPU to update the SMMU pagetables for context switches. Work
787 * around this by dropping the "qcom,adreno-smmu" compat string.
788 */
789&adreno_smmu {
790 compatible = "qcom,sdm845-smmu-v2", "qcom,smmu-v2";
791};
792
793&mss_pil {
794 status = "okay";
795
796 iommus = <&apps_smmu 0x781 0x0>,
797 <&apps_smmu 0x724 0x3>;
798};
799
800&pm8998_pwrkey {
801 status = "disabled";
802};
803
804&qupv3_id_0 {
805 status = "okay";
806 iommus = <&apps_smmu 0x0 0x3>;
807};
808
809&qupv3_id_1 {
810 status = "okay";
811 iommus = <&apps_smmu 0x6c0 0x3>;
812};
813
814&sdhc_2 {
815 status = "okay";
816
817 pinctrl-names = "default";
818 pinctrl-0 = <&sdc2_clk &sdc2_cmd &sdc2_data &sd_cd_odl>;
819
820 vmmc-supply = <&src_pp2950_l21a>;
821 vqmmc-supply = <&vddpx_2>;
822
823 cd-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>;
824};
825
826&spi0 {
827 status = "okay";
828};
829
830&spi5 {
831 status = "okay";
832
833 tpm@0 {
834 compatible = "google,cr50";
835 reg = <0>;
836 pinctrl-names = "default";
837 pinctrl-0 = <&h1_ap_int_odl>;
838 spi-max-frequency = <800000>;
839 interrupt-parent = <&tlmm>;
840 interrupts = <129 IRQ_TYPE_EDGE_RISING>;
841 };
842};
843
844&spi10 {
845 status = "okay";
846
847 cros_ec: ec@0 {
848 compatible = "google,cros-ec-spi";
849 reg = <0>;
850 interrupt-parent = <&tlmm>;
851 interrupts = <122 IRQ_TYPE_LEVEL_LOW>;
852 pinctrl-names = "default";
853 pinctrl-0 = <&ec_ap_int_l>;
854 spi-max-frequency = <3000000>;
855
856 cros_ec_pwm: pwm {
857 compatible = "google,cros-ec-pwm";
858 #pwm-cells = <1>;
859 };
860
861 i2c_tunnel: i2c-tunnel {
862 compatible = "google,cros-ec-i2c-tunnel";
863 google,remote-bus = <0>;
864 #address-cells = <1>;
865 #size-cells = <0>;
866 };
867 };
868};
869
870#include <arm/cros-ec-keyboard.dtsi>
871#include <arm/cros-ec-sbs.dtsi>
872
873&uart6 {
874 status = "okay";
875
876 pinctrl-0 = <&qup_uart6_4pin>;
877
878 bluetooth: bluetooth {
879 compatible = "qcom,wcn3990-bt";
880 vddio-supply = <&src_pp1800_s4a>;
881 vddxo-supply = <&pp1800_l7a_wcn3990>;
882 vddrf-supply = <&src_pp1300_l17a>;
883 vddch0-supply = <&pp3300_l25a_ch0_wcn3990>;
884 max-speed = <3200000>;
885 };
886};
887
888&uart9 {
889 status = "okay";
890};
891
892&ufs_mem_hc {
893 status = "okay";
894
895 reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
896
897 vcc-supply = <&src_pp2950_l20a>;
898 vcc-max-microamp = <600000>;
899};
900
901&ufs_mem_phy {
902 status = "okay";
903
904 vdda-phy-supply = <&vdda_ufs1_core>;
905 vdda-pll-supply = <&vdda_ufs1_1p2>;
906};
907
908&usb_1 {
909 status = "okay";
910
911 /* We'll use this as USB 2.0 only */
912 qcom,select-utmi-as-pipe-clk;
913};
914
915&usb_1_dwc3 {
916 /*
917 * The hardware design intends this port to be hooked up in peripheral
918 * mode, so we'll hardcode it here. Some details:
919 * - SDM845 expects only a single Type C connector so it has only one
920 * native Type C port but cheza has two Type C connectors.
921 * - The only source of DP is the single native Type C port.
922 * - On cheza we want to be able to hook DP up to _either_ of the
923 * two Type C connectors and want to be able to achieve 4 lanes of DP.
924 * - When you configure a Type C port for 4 lanes of DP you lose USB3.
925 * - In order to make everything work, the native Type C port is always
926 * configured as 4-lanes DP so it's always available.
927 * - The extra USB3 port on SDM845 goes to a USB 3 hub which is then
928 * sent to the two Type C connectors.
929 * - The extra USB2 lines from the native Type C port are always
930 * setup as "peripheral" so that we can mux them over to one connector
931 * or the other if someone needs the connector configured as a gadget
932 * (but they only get USB2 speeds).
933 *
934 * All the hardware muxes would allow us to hook things up in different
935 * ways to some potential benefit for static configurations (you could
936 * achieve extra USB2 bandwidth by using two different ports for the
937 * two connectors or possibly even get USB3 peripheral mode), but in
938 * each case you end up forcing to disconnect/reconnect an in-use
939 * USB session in some cases depending on what you hotplug into the
940 * other connector. Thus hardcoding this as peripheral makes sense.
941 */
942 dr_mode = "peripheral";
943
944 /*
945 * We always need the high speed pins as 4-lanes DP in case someone
946 * hotplugs a DP peripheral. Thus limit this port to a max of high
947 * speed.
948 */
949 maximum-speed = "high-speed";
950
951 /*
952 * We don't need the usb3-phy since we run in highspeed mode always, so
953 * re-define these properties removing the superspeed USB PHY reference.
954 */
955 phys = <&usb_1_hsphy>;
956 phy-names = "usb2-phy";
957};
958
959&usb_1_hsphy {
960 status = "okay";
961
962 vdd-supply = <&vdda_usb1_ss_core>;
963 vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
964 vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
965
966 qcom,imp-res-offset-value = <8>;
967 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
968 qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
969 qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
970};
971
972&usb_2 {
973 status = "okay";
974};
975
976&usb_2_dwc3 {
977 /* We have this hooked up to a hub and we always use in host mode */
978 dr_mode = "host";
979};
980
981&usb_2_hsphy {
982 status = "okay";
983
984 vdd-supply = <&vdda_usb2_ss_core>;
985 vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
986 vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
987
988 qcom,imp-res-offset-value = <8>;
989 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_22_8_MA>;
990};
991
992&usb_2_qmpphy {
993 status = "okay";
994
995 vdda-phy-supply = <&vdda_usb2_ss_1p2>;
996 vdda-pll-supply = <&vdda_usb2_ss_core>;
997};
998
999&wifi {
1000 status = "okay";
1001
1002 vdd-0.8-cx-mx-supply = <&src_pp800_l5a >;
1003 vdd-1.8-xo-supply = <&pp1800_l7a_wcn3990>;
1004 vdd-1.3-rfa-supply = <&src_pp1300_l17a>;
1005 vdd-3.3-ch0-supply = <&pp3300_l25a_ch0_wcn3990>;
1006};
1007
1008/* PINCTRL - additions to nodes defined in sdm845.dtsi */
1009
1010&qspi_cs0 {
1011 bias-disable; /* External pullup */
1012};
1013
1014&qspi_clk {
1015 bias-disable; /* Rely on Cr50 internal pulldown */
1016};
1017
1018&qspi_data0 {
1019 bias-disable; /* Rely on Cr50 internal pulldown */
1020};
1021
1022&qspi_data1 {
1023 bias-pull-down;
1024};
1025
1026&qup_i2c3_default {
1027 drive-strength = <2>;
1028
1029 /* Has external pullup */
1030 bias-disable;
1031};
1032
1033&qup_i2c11_default {
1034 drive-strength = <2>;
1035
1036 /* Has external pullup */
1037 bias-disable;
1038};
1039
1040&qup_i2c12_default {
1041 drive-strength = <2>;
1042
1043 /* Has external pullup */
1044 bias-disable;
1045};
1046
1047&qup_i2c14_default {
1048 drive-strength = <2>;
1049
1050 /* Has external pullup */
1051 bias-disable;
1052};
1053
1054&qup_spi0_default {
1055 drive-strength = <2>;
1056 bias-disable;
1057};
1058
1059&qup_spi5_default {
1060 drive-strength = <2>;
1061 bias-disable;
1062};
1063
1064&qup_spi10_default {
1065 drive-strength = <2>;
1066 bias-disable;
1067};
1068
1069&qup_uart9_rx {
1070 drive-strength = <2>;
1071 bias-pull-up;
1072};
1073
1074&qup_uart9_tx {
1075 drive-strength = <2>;
1076 bias-disable;
1077};
1078
1079/* PINCTRL - board-specific pinctrl */
1080&pm8005_gpios {
1081 gpio-line-names = "",
1082 "",
1083 "SLB",
1084 "";
1085};
1086
1087&pm8998_adc {
1088 channel@4d {
1089 reg = <ADC5_AMUX_THM1_100K_PU>;
1090 label = "sdm_temp";
1091 };
1092
1093 channel@4e {
1094 reg = <ADC5_AMUX_THM2_100K_PU>;
1095 label = "quiet_temp";
1096 };
1097
1098 channel@4f {
1099 reg = <ADC5_AMUX_THM3_100K_PU>;
1100 label = "lte_temp_1";
1101 };
1102
1103 channel@50 {
1104 reg = <ADC5_AMUX_THM4_100K_PU>;
1105 label = "lte_temp_2";
1106 };
1107
1108 channel@51 {
1109 reg = <ADC5_AMUX_THM5_100K_PU>;
1110 label = "charger_temp";
1111 };
1112};
1113
1114&pm8998_gpios {
1115 gpio-line-names = "",
1116 "",
1117 "SW_CTRL",
1118 "",
1119 "",
1120 "",
1121 "",
1122 "",
1123 "",
1124 "",
1125 "",
1126 "",
1127 "",
1128 "",
1129 "",
1130 "",
1131 "",
1132 "",
1133 "",
1134 "",
1135 "",
1136 "CFG_OPT1",
1137 "WCSS_PWR_REQ",
1138 "",
1139 "CFG_OPT2",
1140 "SLB";
1141};
1142
1143&tlmm {
1144 /*
1145 * pinctrl settings for pins that have no real owners.
1146 */
1147 pinctrl-names = "default", "sleep";
1148 pinctrl-0 = <&bios_flash_wp_r_l>,
1149 <&ap_suspend_l_deassert>;
1150
1151 pinctrl-1 = <&bios_flash_wp_r_l>,
1152 <&ap_suspend_l_assert>;
1153
1154 /*
1155 * Hogs prevent usermode from changing the value. A GPIO can be both
1156 * here and in the pinctrl section.
1157 */
1158 ap-suspend-l-hog {
1159 gpio-hog;
1160 gpios = <126 GPIO_ACTIVE_LOW>;
1161 output-low;
1162 };
1163
1164 ap_edp_bklten: ap-edp-bklten-state {
1165 pins = "gpio37";
1166 function = "gpio";
1167 drive-strength = <2>;
1168 bias-disable;
1169 };
1170
1171 bios_flash_wp_r_l: bios-flash-wp-r-l-state {
1172 pins = "gpio128";
1173 function = "gpio";
1174 bias-disable;
1175 };
1176
1177 ec_ap_int_l: ec-ap-int-l-state {
1178 pins = "gpio122";
1179 function = "gpio";
1180 bias-pull-up;
1181 };
1182
1183 edp_brij_en: edp-brij-en-state {
1184 pins = "gpio102";
1185 function = "gpio";
1186 drive-strength = <2>;
1187 bias-disable;
1188 };
1189
1190 edp_brij_irq: edp-brij-irq-state {
1191 pins = "gpio10";
1192 function = "gpio";
1193 drive-strength = <2>;
1194 bias-pull-down;
1195 };
1196
1197 en_pp3300_dx_edp: en-pp3300-dx-edp-state {
1198 pins = "gpio43";
1199 function = "gpio";
1200 drive-strength = <2>;
1201 bias-disable;
1202 };
1203
1204 h1_ap_int_odl: h1-ap-int-odl-state {
1205 pins = "gpio129";
1206 function = "gpio";
1207 bias-pull-up;
1208 };
1209
1210 pen_eject_odl: pen-eject-odl-state {
1211 pins = "gpio119";
1212 function = "gpio";
1213 bias-pull-up;
1214 };
1215
1216 pen_irq_l: pen-irq-l-state {
1217 pins = "gpio24";
1218 function = "gpio";
1219
1220 /* Has external pullup */
1221 bias-disable;
1222 };
1223
1224 pen_pdct_l: pen-pdct-l-state {
1225 pins = "gpio63";
1226 function = "gpio";
1227
1228 /* Has external pullup */
1229 bias-disable;
1230 };
1231
1232 pen_rst_l: pen-rst-l-state {
1233 pins = "gpio23";
1234 function = "gpio";
1235 bias-disable;
1236 drive-strength = <2>;
1237
1238 /*
1239 * The pen driver doesn't currently support
1240 * driving this reset line. By specifying
1241 * output-high here we're relying on the fact
1242 * that this pin has a default pulldown at boot
1243 * (which makes sure the pen was in reset if it
1244 * was powered) and then we set it high here to
1245 * take it out of reset. Better would be if the
1246 * pen driver could control this and we could
1247 * remove "output-high" here.
1248 */
1249 output-high;
1250 };
1251
1252 qspi_sleep: qspi-sleep-state {
1253 pins = "gpio90", "gpio91", "gpio92", "gpio95";
1254
1255 /*
1256 * When we're not actively transferring we want pins as GPIOs
1257 * with output disabled so that the quad SPI IP block stops
1258 * driving them. We rely on the normal pulls configured in
1259 * the active state and don't redefine them here. Also note
1260 * that we don't need the reverse (output-enable) in the
1261 * normal mode since the "output-enable" only matters for
1262 * GPIO function.
1263 */
1264 function = "gpio";
1265 output-disable;
1266 };
1267
1268 sdc2_clk: sdc2-clk-state {
1269 pins = "sdc2_clk";
1270 bias-disable;
1271
1272 /*
1273 * It seems that mmc_test reports errors if drive
1274 * strength is not 16.
1275 */
1276 drive-strength = <16>;
1277 };
1278
1279 sdc2_cmd: sdc2-cmd-state {
1280 pins = "sdc2_cmd";
1281 bias-pull-up;
1282 drive-strength = <16>;
1283 };
1284
1285 sdc2_data: sdc2-data-state {
1286 pins = "sdc2_data";
1287 bias-pull-up;
1288 drive-strength = <16>;
1289 };
1290
1291 sd_cd_odl: sd-cd-odl-state {
1292 pins = "gpio44";
1293 function = "gpio";
1294 bias-pull-up;
1295 };
1296
1297 ts_int_l: ts-int-l-state {
1298 pins = "gpio125";
1299 function = "gpio";
1300 bias-pull-up;
1301 };
1302
1303 ts_reset_l: ts-reset-l-state {
1304 pins = "gpio118";
1305 function = "gpio";
1306 bias-disable;
1307 drive-strength = <2>;
1308 };
1309
1310 ap_suspend_l_assert: ap-suspend-l-assert-state {
1311 pins = "gpio126";
1312 function = "gpio";
1313 bias-disable;
1314 drive-strength = <2>;
1315 output-low;
1316 };
1317
1318 ap_suspend_l_deassert: ap-suspend-l-deassert-state {
1319 pins = "gpio126";
1320 function = "gpio";
1321 bias-disable;
1322 drive-strength = <2>;
1323 output-high;
1324 };
1325};
1326
1327&venus {
1328 status = "okay";
1329
1330 video-firmware {
1331 iommus = <&apps_smmu 0x10b2 0x0>;
1332 };
1333};