blob: 8513be29712013fdbaa9cb125350af992b8773a4 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Google Trogdor device tree source (common between revisions)
4 *
5 * Copyright 2019 Google LLC.
6 */
7
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/input/gpio-keys.h>
10#include <dt-bindings/input/input.h>
11#include <dt-bindings/leds/common.h>
12#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
13#include <dt-bindings/sound/sc7180-lpass.h>
14
15#include "sc7180.dtsi"
16#include "sc7180-firmware-tfa.dtsi"
17/* PMICs depend on spmi_bus label and so must come after sc7180.dtsi */
18#include "pm6150.dtsi"
19#include "pm6150l.dtsi"
20
21/ {
22 thermal-zones {
23 charger_thermal: charger-thermal {
24 polling-delay-passive = <0>;
25 polling-delay = <0>;
26
27 thermal-sensors = <&pm6150_adc_tm 0>;
28
29 trips {
30 charger-crit {
31 temperature = <125000>;
32 hysteresis = <1000>;
33 type = "critical";
34 };
35 };
36 };
37 };
38};
39
40/*
41 * Reserved memory changes
42 *
43 * Delete all unused memory nodes and define the peripheral memory regions
44 * required by the board dts.
45 */
46
47/delete-node/ &hyp_mem;
48/delete-node/ &ipa_fw_mem;
49/delete-node/ &xbl_mem;
50/delete-node/ &aop_mem;
51/delete-node/ &sec_apps_mem;
52/delete-node/ &tz_mem;
53
54/* Increase the size from 2MB to 8MB */
55&rmtfs_mem {
56 reg = <0x0 0x94600000 0x0 0x800000>;
57};
58
59/ {
60 reserved-memory {
61 atf_mem: memory@80b00000 {
62 reg = <0x0 0x80b00000 0x0 0x100000>;
63 no-map;
64 };
65
66 mpss_mem: memory@86000000 {
67 reg = <0x0 0x86000000 0x0 0x2000000>;
68 no-map;
69 };
70
71 venus_mem: memory@8f600000 {
72 reg = <0 0x8f600000 0 0x500000>;
73 no-map;
74 };
75
76 wlan_mem: memory@94100000 {
77 reg = <0x0 0x94100000 0x0 0x200000>;
78 no-map;
79 };
80
81 mba_mem: memory@94400000 {
82 reg = <0x0 0x94400000 0x0 0x200000>;
83 no-map;
84 };
85
86 mdata_mem: mpss-metadata {
87 alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>;
88 size = <0x0 0x4000>;
89 no-map;
90 };
91 };
92
93 aliases {
94 bluetooth0 = &bluetooth;
95 hsuart0 = &uart3;
96 serial0 = &uart8;
97 wifi0 = &wifi;
98 };
99
100 chosen {
101 stdout-path = "serial0:115200n8";
102 };
103
104 /* FIXED REGULATORS - parents above children */
105
106 /* This is the top level supply and variable voltage */
107 ppvar_sys: ppvar-sys-regulator {
108 compatible = "regulator-fixed";
109 regulator-name = "ppvar_sys";
110 regulator-always-on;
111 regulator-boot-on;
112 };
113
114 /* This divides ppvar_sys by 2, so voltage is variable */
115 src_vph_pwr: src-vph-pwr-regulator {
116 compatible = "regulator-fixed";
117 regulator-name = "src_vph_pwr";
118
119 /* EC turns on with switchcap_on; always on for AP */
120 regulator-always-on;
121 regulator-boot-on;
122
123 vin-supply = <&ppvar_sys>;
124 };
125
126 pp5000_a: pp5000-a-regulator {
127 compatible = "regulator-fixed";
128 regulator-name = "pp5000_a";
129
130 /* EC turns on with en_pp5000_a; always on for AP */
131 regulator-always-on;
132 regulator-boot-on;
133 regulator-min-microvolt = <5000000>;
134 regulator-max-microvolt = <5000000>;
135
136 vin-supply = <&ppvar_sys>;
137 };
138
139 pp3300_a: pp3300-a-regulator {
140 compatible = "regulator-fixed";
141 regulator-name = "pp3300_a";
142
143 /* EC turns on with en_pp3300_a; always on for AP */
144 regulator-always-on;
145 regulator-boot-on;
146 regulator-min-microvolt = <3300000>;
147 regulator-max-microvolt = <3300000>;
148
149 /*
150 * Actually should be pp3300 but that's practically an alias for
151 * pp3300_a so we use pp3300's vin-supply here to avoid one more
152 * node.
153 */
154 vin-supply = <&ppvar_sys>;
155 };
156
157 pp1800_ec:
158 pp1800_sensors:
159 pp1800_ldo: pp1800-ldo-regulator {
160 compatible = "regulator-fixed";
161 regulator-name = "pp1800_ldo";
162
163 /* EC turns on with hibernate_l; always on for AP */
164 regulator-always-on;
165 regulator-boot-on;
166 regulator-min-microvolt = <1800000>;
167 regulator-max-microvolt = <1800000>;
168
169 /*
170 * Actually should be pp1800_h1 but we don't have any need to
171 * model that so we use the parent of pp1800_h1.
172 */
173 vin-supply = <&pp3300_a>;
174 };
175
176 pp1800_uf_cam: pp1800-uf-cam-regulator {
177 compatible = "regulator-fixed";
178 regulator-name = "pp1800_uf_cam";
179 status = "disabled";
180
181 regulator-min-microvolt = <1800000>;
182 regulator-max-microvolt = <1800000>;
183
184 gpio = <&tlmm 6 GPIO_ACTIVE_HIGH>;
185 enable-active-high;
186 pinctrl-names = "default";
187 pinctrl-0 = <&uf_cam_en>;
188
189 vin-supply = <&pp1800_ldo>;
190 regulator-enable-ramp-delay = <1000>;
191 };
192
193 pp1800_wf_cam: pp1800-wf-cam-regulator {
194 compatible = "regulator-fixed";
195 regulator-name = "pp1800_wf_cam";
196 status = "disabled";
197
198 regulator-min-microvolt = <1800000>;
199 regulator-max-microvolt = <1800000>;
200
201 gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
202 enable-active-high;
203 pinctrl-names = "default";
204 pinctrl-0 = <&wf_cam_en>;
205
206 vin-supply = <&pp1800_ldo>;
207 regulator-enable-ramp-delay = <1000>;
208 };
209
210 pp2800_uf_cam: pp2800-uf-cam-regulator {
211 compatible = "regulator-fixed";
212 regulator-name = "pp2800_uf_cam";
213 status = "disabled";
214
215 regulator-min-microvolt = <2850000>;
216 regulator-max-microvolt = <2850000>;
217
218 gpio = <&tlmm 6 GPIO_ACTIVE_HIGH>;
219 enable-active-high;
220 /*
221 * The pinconf can only be referenced once so we put it on the
222 * first regulator and comment it out here.
223 * pinctrl-names = "default";
224 * pinctrl-0 = <&uf_cam_en>;
225 */
226
227 vin-supply = <&pp3300_a>;
228 };
229
230 pp2800_vcm_wf_cam:
231 pp2800_wf_cam: pp2800-wf-cam-regulator {
232 compatible = "regulator-fixed";
233 regulator-name = "pp2800_wf_cam";
234 status = "disabled";
235
236 regulator-min-microvolt = <2850000>;
237 regulator-max-microvolt = <2850000>;
238
239 gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
240 enable-active-high;
241 /*
242 * The pinconf can only be referenced once so we put it on the
243 * first regulator and comment it out here.
244 * pinctrl-names = "default";
245 * pinctrl-0 = <&wf_cam_en>;
246 */
247
248 vin-supply = <&pp3300_a>;
249 };
250
251 pp3300_audio:
252 pp3300_codec: pp3300-codec-regulator {
253 compatible = "regulator-fixed";
254 regulator-name = "pp3300_codec";
255
256 regulator-min-microvolt = <3300000>;
257 regulator-max-microvolt = <3300000>;
258
259 gpio = <&tlmm 83 GPIO_ACTIVE_HIGH>;
260 enable-active-high;
261 pinctrl-names = "default";
262 pinctrl-0 = <&en_pp3300_codec>;
263
264 vin-supply = <&pp3300_a>;
265 };
266
267 pp3300_dx_edp:
268 pp3300_ts: pp3300-dx-edp-regulator {
269 compatible = "regulator-fixed";
270 regulator-name = "pp3300_dx_edp";
271
272 regulator-min-microvolt = <3300000>;
273 regulator-max-microvolt = <3300000>;
274
275 gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
276 enable-active-high;
277 pinctrl-names = "default";
278 pinctrl-0 = <&en_pp3300_dx_edp>;
279
280 vin-supply = <&pp3300_a>;
281 };
282
283 pp3300_fp_tp: pp3300-fp-tp-regulator {
284 compatible = "regulator-fixed";
285 regulator-name = "pp3300_fp_tp";
286
287 regulator-min-microvolt = <3300000>;
288 regulator-max-microvolt = <3300000>;
289
290 /* AP turns on with PP1800_VIO_OUT; always on for AP */
291 regulator-always-on;
292 regulator-boot-on;
293
294 vin-supply = <&pp3300_a>;
295 };
296
297 pp3300_hub: pp3300-hub-regulator {
298 compatible = "regulator-fixed";
299 regulator-name = "pp3300_hub";
300
301 regulator-min-microvolt = <3300000>;
302 regulator-max-microvolt = <3300000>;
303
304 gpio = <&tlmm 84 GPIO_ACTIVE_HIGH>;
305 enable-active-high;
306 pinctrl-names = "default";
307 pinctrl-0 = <&en_pp3300_hub>;
308
309 /* The BIOS leaves this regulator on */
310 regulator-boot-on;
311
312 vin-supply = <&pp3300_a>;
313 };
314
315 /* BOARD-SPECIFIC TOP LEVEL NODES */
316
317 backlight: backlight {
318 compatible = "pwm-backlight";
319
320 /* The panels don't seem to like anything below ~ 5% */
321 brightness-levels = <
322 196 256 324 400 484 576 676 784 900 1024 1156 1296
323 1444 1600 1764 1936 2116 2304 2500 2704 2916 3136
324 3364 3600 3844 4096
325 >;
326 num-interpolated-steps = <64>;
327 default-brightness-level = <951>;
328
329 pwms = <&cros_ec_pwm 1>;
330 enable-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
331 power-supply = <&ppvar_sys>;
332 pinctrl-names = "default";
333 pinctrl-0 = <&ap_edp_bklten>;
334 };
335
336 gpio_keys: gpio-keys {
337 compatible = "gpio-keys";
338 status = "disabled";
339 pinctrl-names = "default";
340 pinctrl-0 = <&pen_pdct_l>;
341
342 pen_insert: switch-pen-insert {
343 label = "Pen Insert";
344
345 /* Insert = low, eject = high */
346 gpios = <&tlmm 52 GPIO_ACTIVE_LOW>;
347 linux,code = <SW_PEN_INSERTED>;
348 linux,input-type = <EV_SW>;
349 wakeup-event-action = <EV_ACT_DEASSERTED>;
350 wakeup-source;
351 };
352 };
353
354 max98360a: audio-codec-0 {
355 compatible = "maxim,max98360a";
356 pinctrl-names = "default";
357 pinctrl-0 = <&amp_en>;
358 sdmode-gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>;
359 #sound-dai-cells = <0>;
360 };
361
362 pwmleds {
363 compatible = "pwm-leds";
364 keyboard_backlight: led-0 {
365 status = "disabled";
366 label = "cros_ec::kbd_backlight";
367 function = LED_FUNCTION_KBD_BACKLIGHT;
368 pwms = <&cros_ec_pwm 0>;
369 max-brightness = <1023>;
370 };
371 };
372
373 sound: sound {
374 compatible = "google,sc7180-trogdor";
375
376 audio-routing =
377 "Headphone Jack", "HPOL",
378 "Headphone Jack", "HPOR";
379
380 #address-cells = <1>;
381 #size-cells = <0>;
382
383 dai-link@0 {
384 link-name = "MultiMedia0";
385 reg = <MI2S_PRIMARY>;
386 cpu {
387 sound-dai = <&lpass_cpu MI2S_PRIMARY>;
388 };
389
390 sound_multimedia0_codec: codec {
391 sound-dai = <&alc5682 0 /* aif1 */>;
392 };
393 };
394
395 dai-link@1 {
396 link-name = "MultiMedia1";
397 reg = <MI2S_SECONDARY>;
398 cpu {
399 sound-dai = <&lpass_cpu MI2S_SECONDARY>;
400 };
401
402 sound_multimedia1_codec: codec {
403 sound-dai = <&max98360a>;
404 };
405 };
406
407 dai-link@5 {
408 link-name = "MultiMedia2";
409 reg = <LPASS_DP_RX>;
410 cpu {
411 sound-dai = <&lpass_cpu LPASS_DP_RX>;
412 };
413
414 codec {
415 sound-dai = <&mdss_dp>;
416 };
417 };
418 };
419};
420
421&qfprom {
422 vcc-supply = <&pp1800_l11a>;
423};
424
425&qspi {
426 status = "okay";
427 pinctrl-names = "default", "sleep";
428 pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
429 pinctrl-1 = <&qspi_sleep>;
430
431 flash@0 {
432 compatible = "jedec,spi-nor";
433 reg = <0>;
434
435 spi-max-frequency = <37500000>;
436 spi-tx-bus-width = <2>;
437 spi-rx-bus-width = <2>;
438 };
439};
440
441&apps_rsc {
442 regulators-0 {
443 compatible = "qcom,pm6150-rpmh-regulators";
444 qcom,pmic-id = "a";
445
446 vddpx_1:
447 vdd2:
448 pp1125_s1a: smps1 {
449 regulator-min-microvolt = <1128000>;
450 regulator-max-microvolt = <1128000>;
451 };
452
453 vdd_qlink_lv:
454 vdd_qlink_lv_ck:
455 vdd_qusb_hs0_core:
456 vdd_ufs1_core:
457 vdda_mipi_csi0_0p9:
458 vdda_mipi_csi1_0p9:
459 vdda_mipi_csi2_0p9:
460 vdda_mipi_csi3_0p9:
461 vdda_mipi_dsi0_pll:
462 vdda_pll_cc_ebi01:
463 vdda_qrefs_0p9:
464 vdda_usb_ss_dp_core:
465 pp900_l4a: ldo4 {
466 regulator-min-microvolt = <824000>;
467 regulator-max-microvolt = <928000>;
468 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
469 };
470
471 vdd_cx_wlan:
472 pp800_l9a: ldo9 {
473 regulator-min-microvolt = <488000>;
474 regulator-max-microvolt = <800000>;
475 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
476 };
477
478 vdd1:
479 vddpx_3:
480 vddpx_7:
481 vio_in:
482 pp1800_l10a: ldo10 {
483 regulator-min-microvolt = <1800000>;
484 regulator-max-microvolt = <1800000>;
485 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
486 };
487
488 vdd_qfprom:
489 vdda_apc1_cs_1p8:
490 vdda_qrefs_1p8:
491 vdda_qusb_hs0_1p8:
492 vddpx_11:
493 vreg_bb_clk:
494 pp1800_l11a: ldo11 {
495 regulator-min-microvolt = <1800000>;
496 regulator-max-microvolt = <1800000>;
497 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
498 };
499
500 mcp_vccq:
501 pp1800_l12a_r: ldo12 {
502 regulator-min-microvolt = <1800000>;
503 regulator-max-microvolt = <1800000>;
504 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
505 };
506
507 /*
508 * On trogdor this needs to match l10a since we use it to
509 * give power to things like SPI flash which communicate back
510 * on lines powered by l10a. Thus we force to 1.8V.
511 */
512 pp1800_l13a: ldo13 {
513 regulator-min-microvolt = <1800000>;
514 regulator-max-microvolt = <1800000>;
515 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
516 regulator-always-on;
517 regulator-boot-on;
518 };
519
520 pp1800_prox:
521 pp1800_l14a: ldo14 {
522 regulator-min-microvolt = <1800000>;
523 regulator-max-microvolt = <1800000>;
524 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
525 };
526
527 pp1800_alc5682:
528 pp1800_l15a: ldo15 {
529 regulator-min-microvolt = <1800000>;
530 regulator-max-microvolt = <1800000>;
531 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
532 };
533
534 vdda_qusb_hs0_3p1:
535 vdd_pdphy:
536 pp3100_l17a: ldo17 {
537 regulator-min-microvolt = <2920000>;
538 regulator-max-microvolt = <3232000>;
539 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
540 };
541
542 pp1800_pen:
543 pp1800_l18a: ldo18 {
544 regulator-min-microvolt = <1800000>;
545 regulator-max-microvolt = <1800000>;
546 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
547 };
548
549 mcp_vcc:
550 pp2850_l19a: ldo19 {
551 regulator-min-microvolt = <2960000>;
552 regulator-max-microvolt = <2960000>;
553 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
554 };
555 };
556
557 regulators-1 {
558 compatible = "qcom,pm6150l-rpmh-regulators";
559 qcom,pmic-id = "c";
560
561 pp1300_s8c: smps8 {
562 regulator-min-microvolt = <1120000>;
563 regulator-max-microvolt = <1408000>;
564 };
565
566 pp1800_l1c: ldo1 {
567 regulator-min-microvolt = <1616000>;
568 regulator-max-microvolt = <1984000>;
569 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
570 };
571
572 vdd_wcss_adc_dac:
573 pp1300_l2c: ldo2 {
574 regulator-min-microvolt = <1168000>;
575 regulator-max-microvolt = <1304000>;
576 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
577 };
578
579 pp1200_brij:
580 vdd_ufs1_1p2:
581 vdda_csi0_1p25:
582 vdda_csi1_1p25:
583 vdda_csi2_1p25:
584 vdda_csi3_1p25:
585 vdda_hv_ebi0:
586 vdda_mipi_dsi0_1p2:
587 vdda_usb_ss_dp_1p2:
588 vddpx_10:
589 pp1200_l3c: ldo3 {
590 regulator-min-microvolt = <1200000>;
591 regulator-max-microvolt = <1200000>;
592 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
593 };
594
595 vddpx_2:
596 ppvar_l6c: ldo6 {
597 regulator-min-microvolt = <1800000>;
598 regulator-max-microvolt = <2952000>;
599 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
600 };
601
602 pp3300_l7c: ldo7 {
603 regulator-min-microvolt = <3304000>;
604 regulator-max-microvolt = <3304000>;
605 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
606 };
607
608 pp1800_brij_vccio:
609 pp1800_edp_vpll:
610 pp1800_l8c: ldo8 {
611 regulator-min-microvolt = <1800000>;
612 regulator-max-microvolt = <1800000>;
613 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
614 };
615
616 pp2950_l9c: ldo9 {
617 regulator-min-microvolt = <2952000>;
618 regulator-max-microvolt = <2952000>;
619 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
620 };
621
622 pp3300_l10c: ldo10 {
623 regulator-min-microvolt = <3000000>;
624 regulator-max-microvolt = <3400000>;
625 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
626 };
627
628 pp3300_l11c: ldo11 {
629 regulator-min-microvolt = <3000000>;
630 regulator-max-microvolt = <3400000>;
631 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
632 };
633
634 src_vreg_bob: bob {
635 regulator-min-microvolt = <3008000>;
636 regulator-max-microvolt = <3960000>;
637 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
638 };
639 };
640};
641
642ap_ec_spi: &spi6 {
643 status = "okay";
644 cros_ec: ec@0 {
645 compatible = "google,cros-ec-spi";
646 reg = <0>;
647 interrupt-parent = <&tlmm>;
648 interrupts = <94 IRQ_TYPE_LEVEL_LOW>;
649 pinctrl-names = "default";
650 pinctrl-0 = <&ap_ec_int_l>;
651 spi-max-frequency = <3000000>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600652 wakeup-source;
Tom Rini53633a82024-02-29 12:33:36 -0500653
654 cros_ec_pwm: pwm {
655 compatible = "google,cros-ec-pwm";
656 #pwm-cells = <1>;
657 };
658
659 i2c_tunnel: i2c-tunnel {
660 compatible = "google,cros-ec-i2c-tunnel";
661 google,remote-bus = <0>;
662 #address-cells = <1>;
663 #size-cells = <0>;
664 };
665
666 typec {
667 compatible = "google,cros-ec-typec";
668 #address-cells = <1>;
669 #size-cells = <0>;
670
671 usb_c0: connector@0 {
672 compatible = "usb-c-connector";
673 reg = <0>;
674 label = "left";
675 power-role = "dual";
676 data-role = "host";
677 try-power-role = "source";
678 };
679
680 usb_c1: connector@1 {
681 compatible = "usb-c-connector";
682 reg = <1>;
683 label = "right";
684 power-role = "dual";
685 data-role = "host";
686 try-power-role = "source";
687 };
688 };
689 };
690};
691
692ap_h1_spi: &spi0 {
693 status = "okay";
694 cr50: tpm@0 {
695 compatible = "google,cr50";
696 reg = <0>;
697 pinctrl-names = "default";
698 pinctrl-0 = <&h1_ap_int_odl>;
699 spi-max-frequency = <800000>;
700 interrupt-parent = <&tlmm>;
701 interrupts = <42 IRQ_TYPE_EDGE_RISING>;
702 };
703};
704
705&camcc {
706 status = "disabled";
707};
708
709ap_sar_sensor_i2c: &i2c5 {
710 clock-frequency = <400000>;
711
712 ap_sar_sensor: proximity@28 {
713 compatible = "semtech,sx9310";
714 reg = <0x28>;
715 #io-channel-cells = <1>;
716 pinctrl-names = "default";
717 pinctrl-0 = <&p_sensor_int_l>;
718
719 interrupt-parent = <&tlmm>;
720 interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
721
722 vdd-supply = <&pp3300_a>;
723 svdd-supply = <&pp1800_prox>;
724
725 label = "proximity-wifi";
726 };
727};
728
729ap_tp_i2c: &i2c7 {
730 clock-frequency = <400000>;
731
732 trackpad: trackpad@15 {
733 compatible = "elan,ekth3000";
734 reg = <0x15>;
735 pinctrl-names = "default";
736 pinctrl-0 = <&tp_int_odl>;
737
738 interrupt-parent = <&tlmm>;
739 interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
740
741 vcc-supply = <&pp3300_fp_tp>;
742
743 wakeup-source;
744 };
745};
746
747hp_i2c: &i2c9 {
748 status = "okay";
749 clock-frequency = <400000>;
750};
751
752&lpasscc {
753 status = "okay";
754};
755
756&lpass_cpu {
757 status = "okay";
758
759 pinctrl-names = "default";
760 pinctrl-0 = <&sec_mi2s_active>, <&pri_mi2s_active>, <&pri_mi2s_mclk_active>;
761
762 #address-cells = <1>;
763 #size-cells = <0>;
764
765 dai-link@0 {
766 reg = <MI2S_PRIMARY>;
767 qcom,playback-sd-lines = <1>;
768 qcom,capture-sd-lines = <0>;
769 };
770
771 secondary_mi2s: dai-link@1 {
772 reg = <MI2S_SECONDARY>;
773 qcom,playback-sd-lines = <0>;
774 };
775
776 dai-link@5 {
777 reg = <LPASS_DP_RX>;
778 };
779};
780
781&lpass_hm {
782 status = "okay";
783};
784
785&mdss {
786 status = "okay";
787};
788
789&mdss_dp {
790 status = "okay";
791 pinctrl-names = "default";
792 pinctrl-0 = <&dp_hot_plug_det>;
793};
794
795&mdss_dp_out {
796 data-lanes = <0 1>;
797 link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000>;
798};
799
800&mdss_dsi0 {
801 status = "okay";
802 vdda-supply = <&vdda_mipi_dsi0_1p2>;
803};
804
805&mdss_dsi0_out {
806 data-lanes = <0 1 2 3>;
807};
808
809&mdss_dsi0_phy {
810 status = "okay";
811 vdds-supply = <&vdda_mipi_dsi0_pll>;
812};
813
814&pm6150_adc {
815 channel@4f {
816 reg = <ADC5_AMUX_THM3_100K_PU>;
817 qcom,ratiometric;
818 qcom,hw-settle-time = <200>;
819 label = "charger_therm";
820 };
821};
822
823&pm6150_adc_tm {
824 status = "okay";
825
826 charger-thermistor@0 {
827 reg = <0>;
828 io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
829 qcom,ratiometric;
830 qcom,hw-settle-time-us = <200>;
831 };
832};
833
834&pm6150_pon {
835 status = "disabled";
836};
837
838&qupv3_id_0 {
839 status = "okay";
840};
841
842&qupv3_id_1 {
843 status = "okay";
844};
845
846&remoteproc_mpss {
847 status = "okay";
848 compatible = "qcom,sc7180-mss-pil";
849 reg = <0 0x04080000 0 0x4040>, <0 0x04180000 0 0x48>;
850 reg-names = "qdsp6", "rmb";
851
852 clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
853 <&gcc GCC_MSS_Q6_MEMNOC_AXI_CLK>,
854 <&gcc GCC_MSS_NAV_AXI_CLK>,
855 <&gcc GCC_MSS_SNOC_AXI_CLK>,
856 <&gcc GCC_MSS_MFAB_AXIS_CLK>,
857 <&rpmhcc RPMH_CXO_CLK>;
858 clock-names = "iface", "bus", "nav", "snoc_axi", "mnoc_axi", "xo";
859
860 iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
861 memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;
862
863 /* This gets overridden for SKUs with LTE support. */
864 firmware-name = "qcom/sc7180-trogdor/modem-nolte/mba.mbn",
865 "qcom/sc7180-trogdor/modem-nolte/qdsp6sw.mbn";
866
867 resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
868 <&pdc_reset PDC_MODEM_SYNC_RESET>;
869 reset-names = "mss_restart", "pdc_reset";
870
871 qcom,halt-regs = <&tcsr_regs_1 0x3000 0x5000 0x4000>;
872 qcom,spare-regs = <&tcsr_regs_2 0xb3e4>;
873};
874
875&scm {
876 /* TF-A firmware maps memory cached so mark dma-coherent to match. */
877 dma-coherent;
878};
879
880&sdhc_1 {
881 status = "okay";
882
883 pinctrl-names = "default", "sleep";
884 pinctrl-0 = <&sdc1_on>;
885 pinctrl-1 = <&sdc1_off>;
886 vmmc-supply = <&mcp_vcc>;
887 vqmmc-supply = <&mcp_vccq>;
888};
889
890&sdhc_2 {
891 pinctrl-names = "default", "sleep";
892 pinctrl-0 = <&sdc2_on>;
893 pinctrl-1 = <&sdc2_off>;
894 vmmc-supply = <&pp2950_l9c>;
895 vqmmc-supply = <&ppvar_l6c>;
896
897 cd-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
898};
899
900&spi0 {
901 pinctrl-0 = <&qup_spi0_spi>, <&qup_spi0_cs_gpio>;
902 cs-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
903};
904
905&spi6 {
906 pinctrl-0 = <&qup_spi6_spi>, <&qup_spi6_cs_gpio>;
907 cs-gpios = <&tlmm 62 GPIO_ACTIVE_LOW>;
908};
909
910ap_spi_fp: &spi10 {
911 pinctrl-0 = <&qup_spi10_spi>, <&qup_spi10_cs_gpio>;
912 cs-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
913
914 cros_ec_fp: ec@0 {
915 compatible = "google,cros-ec-fp", "google,cros-ec-spi";
916 reg = <0>;
917 interrupt-parent = <&tlmm>;
918 interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
919 pinctrl-names = "default";
920 pinctrl-0 = <&fp_to_ap_irq_l>, <&fp_rst_l>, <&fpmcu_boot0>;
921 boot0-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
922 reset-gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
923 spi-max-frequency = <3000000>;
924 vdd-supply = <&pp3300_fp_tp>;
925 };
926};
927
928#include <arm/cros-ec-sbs.dtsi>
929
930&uart3 {
931 status = "okay";
932
933 /delete-property/interrupts;
934 interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
935 <&tlmm 41 IRQ_TYPE_EDGE_FALLING>;
936
937 pinctrl-names = "default", "sleep";
938 pinctrl-1 = <&qup_uart3_sleep>;
939
940 bluetooth: bluetooth {
941 compatible = "qcom,wcn3991-bt";
942 vddio-supply = <&pp1800_l10a>;
943 vddxo-supply = <&pp1800_l1c>;
944 vddrf-supply = <&pp1300_l2c>;
945 vddch0-supply = <&pp3300_l10c>;
946 max-speed = <3200000>;
Tom Rini6bb92fc2024-05-20 09:54:58 -0600947
948 qcom,local-bd-address-broken;
Tom Rini53633a82024-02-29 12:33:36 -0500949 };
950};
951
952&uart8 {
953 status = "okay";
954};
955
956&usb_1 {
957 status = "okay";
958};
959
960&usb_1_dwc3 {
961 dr_mode = "host";
962 #address-cells = <1>;
963 #size-cells = <0>;
964
965 /* 2.x hub on port 1 */
966 usb_hub_2_x: hub@1 {
967 compatible = "usbbda,5411";
968 reg = <1>;
969 vdd-supply = <&pp3300_hub>;
970 peer-hub = <&usb_hub_3_x>;
971 };
972
973 /* 3.x hub on port 2 */
974 usb_hub_3_x: hub@2 {
975 compatible = "usbbda,411";
976 reg = <2>;
977 vdd-supply = <&pp3300_hub>;
978 peer-hub = <&usb_hub_2_x>;
979 };
980};
981
982&usb_1_hsphy {
983 status = "okay";
984 vdd-supply = <&vdd_qusb_hs0_core>;
985 vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
986 vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
987 qcom,imp-res-offset-value = <8>;
988 qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_15_PERCENT>;
989 qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
990 qcom,bias-ctrl-value = <0x22>;
991 qcom,charge-ctrl-value = <3>;
992 qcom,hsdisc-trim-value = <0>;
993};
994
995&usb_1_qmpphy {
996 status = "okay";
997 vdda-phy-supply = <&vdda_usb_ss_dp_1p2>;
998 vdda-pll-supply = <&vdda_usb_ss_dp_core>;
999};
1000
1001&venus {
1002 video-firmware {
1003 iommus = <&apps_smmu 0x0c42 0x0>;
1004 };
1005};
1006
1007&wifi {
1008 status = "okay";
1009 vdd-0.8-cx-mx-supply = <&vdd_cx_wlan>;
1010 vdd-1.8-xo-supply = <&pp1800_l1c>;
1011 vdd-1.3-rfa-supply = <&pp1300_l2c>;
1012 vdd-3.3-ch0-supply = <&pp3300_l10c>;
1013 vdd-3.3-ch1-supply = <&pp3300_l11c>;
1014
1015 wifi-firmware {
1016 iommus = <&apps_smmu 0xc2 0x1>;
1017 };
1018};
1019
1020/* PINCTRL - additions to nodes defined in sc7180.dtsi */
1021
1022&dp_hot_plug_det {
1023 bias-disable;
1024};
1025
1026&pri_mi2s_active {
1027 drive-strength = <2>;
1028 bias-pull-down;
1029};
1030
1031&pri_mi2s_mclk_active {
1032 drive-strength = <2>;
1033 bias-pull-down;
1034};
1035
1036&qspi_cs0 {
1037 bias-disable; /* External pullup */
1038};
1039
1040&qspi_clk {
1041 drive-strength = <8>;
1042 bias-disable; /* Rely on Cr50 internal pulldown */
1043};
1044
1045&qspi_data0 {
1046 bias-disable; /* Rely on Cr50 internal pulldown */
1047};
1048
1049&qspi_data1 {
1050 bias-pull-down;
1051};
1052
1053&qup_i2c2_default {
1054 drive-strength = <2>;
1055
1056 /* Has external pullup */
1057 bias-disable;
1058};
1059
1060&qup_i2c4_default {
1061 drive-strength = <2>;
1062
1063 /* Has external pullup */
1064 bias-disable;
1065};
1066
1067&qup_i2c5_default {
1068 drive-strength = <2>;
1069
1070 /* Has external pullup */
1071 bias-disable;
1072};
1073
1074&qup_i2c7_default {
1075 drive-strength = <2>;
1076
1077 /* Has external pullup */
1078 bias-disable;
1079};
1080
1081&qup_i2c9_default {
1082 drive-strength = <2>;
1083
1084 /* Has external pullup */
1085 bias-disable;
1086};
1087
1088&qup_spi0_spi {
1089 drive-strength = <2>;
1090 bias-disable;
1091};
1092
1093&qup_spi0_cs_gpio {
1094 drive-strength = <2>;
1095 bias-disable;
1096};
1097
1098&qup_spi6_spi {
1099 drive-strength = <2>;
1100 bias-disable;
1101};
1102
1103&qup_spi6_cs_gpio {
1104 drive-strength = <2>;
1105 bias-disable;
1106};
1107
1108&qup_spi10_spi {
1109 drive-strength = <2>;
1110 bias-disable;
1111};
1112
1113&qup_spi10_cs_gpio {
1114 drive-strength = <2>;
1115 bias-disable;
1116};
1117
1118&qup_uart3_cts {
1119 /*
1120 * Configure a pull-down on CTS to match the pull of
1121 * the Bluetooth module.
1122 */
1123 bias-pull-down;
1124};
1125
1126&qup_uart3_rts {
1127 /* We'll drive RTS, so no pull */
1128 drive-strength = <2>;
1129 bias-disable;
1130};
1131
1132&qup_uart3_tx {
1133 /* We'll drive TX, so no pull */
1134 drive-strength = <2>;
1135 bias-disable;
1136};
1137
1138&qup_uart3_rx {
1139 /*
1140 * Configure a pull-up on RX. This is needed to avoid
1141 * garbage data when the TX pin of the Bluetooth module is
1142 * in tri-state (module powered off or not driving the
1143 * signal yet).
1144 */
1145 bias-pull-up;
1146};
1147
1148&qup_uart8_tx {
1149 drive-strength = <2>;
1150 bias-disable;
1151};
1152
1153&qup_uart8_rx {
1154 drive-strength = <2>;
1155 bias-pull-up;
1156};
1157
1158&sec_mi2s_active {
1159 drive-strength = <2>;
1160 bias-pull-down;
1161};
1162
1163/* PINCTRL - board-specific pinctrl */
1164
1165&pm6150_gpios {
1166 status = "disabled"; /* No GPIOs are connected */
1167};
1168
1169&pm6150l_gpios {
Tom Rini762f85b2024-07-20 11:15:10 -06001170 status = "disabled"; /* No GPIOs are consumed or configured */
Tom Rini53633a82024-02-29 12:33:36 -05001171 gpio-line-names = "AP_SUSPEND",
1172 "",
1173 "",
1174 "",
1175 "",
1176 "",
1177 "",
1178 "",
1179 "",
1180 "",
1181 "",
1182 "";
1183};
1184
1185&tlmm {
1186 /*
1187 * pinctrl settings for pins that have no real owners.
1188 */
1189 pinctrl-names = "default";
1190 pinctrl-0 = <&bios_flash_wp_l>, <&ap_suspend_l_neuter>;
1191
1192 amp_en: amp-en-state {
1193 pins = "gpio23";
1194 function = "gpio";
1195 bias-pull-down;
1196 };
1197
1198 ap_ec_int_l: ap-ec-int-l-state {
1199 pins = "gpio94";
1200 function = "gpio";
1201 bias-pull-up;
1202 };
1203
1204 ap_edp_bklten: ap-edp-bklten-state {
1205 pins = "gpio12";
1206 function = "gpio";
1207 drive-strength = <2>;
1208 bias-disable;
1209
1210 /* Force backlight to be disabled to match state at boot. */
1211 output-low;
1212 };
1213
1214 ap_suspend_l_neuter: ap-suspend-l-neuter-state {
1215 pins = "gpio27";
1216 function = "gpio";
1217 bias-disable;
1218 };
1219
1220 bios_flash_wp_l: bios-flash-wp-l-state {
1221 pins = "gpio66";
1222 function = "gpio";
1223 bias-disable;
1224 };
1225
1226 edp_brij_en: edp-brij-en-state {
1227 pins = "gpio104";
1228 function = "gpio";
1229 drive-strength = <2>;
1230 bias-disable;
1231 };
1232
1233 en_pp3300_codec: en-pp3300-codec-state {
1234 pins = "gpio83";
1235 function = "gpio";
1236 drive-strength = <2>;
1237 bias-disable;
1238 };
1239
1240 en_pp3300_dx_edp: en-pp3300-dx-edp-state {
1241 pins = "gpio30";
1242 function = "gpio";
1243 drive-strength = <2>;
1244 bias-disable;
1245 };
1246
1247 en_pp3300_hub: en-pp3300-hub-state {
1248 pins = "gpio84";
1249 function = "gpio";
1250 drive-strength = <2>;
1251 bias-disable;
1252 };
1253
1254 fp_rst_l: fp-rst-l-state {
1255 pins = "gpio22";
1256 function = "gpio";
1257 bias-disable;
1258 drive-strength = <2>;
1259 };
1260
1261 fp_to_ap_irq_l: fp-to-ap-irq-l-state {
1262 pins = "gpio4";
1263 function = "gpio";
1264
1265 /* Has external pullup */
1266 bias-disable;
1267 };
1268
1269 fpmcu_boot0: fpmcu-boot0-state {
1270 pins = "gpio10";
1271 function = "gpio";
1272 bias-disable;
1273 };
1274
1275 h1_ap_int_odl: h1-ap-int-odl-state {
1276 pins = "gpio42";
1277 function = "gpio";
1278 bias-pull-up;
1279 };
1280
1281 hp_irq: hp-irq-state {
1282 pins = "gpio28";
1283 function = "gpio";
1284 bias-pull-up;
1285 };
1286
1287 pen_irq_l: pen-irq-l-state {
1288 pins = "gpio21";
1289 function = "gpio";
1290
1291 /* Has external pullup */
1292 bias-disable;
1293 };
1294
1295 pen_pdct_l: pen-pdct-l-state-state {
1296 pins = "gpio52";
1297 function = "gpio";
1298
1299 /* Has external pullup */
1300 bias-disable;
1301 };
1302
1303 pen_rst_odl: pen-rst-odl-state {
1304 pins = "gpio18";
1305 function = "gpio";
1306 bias-disable;
1307 drive-strength = <2>;
1308
1309 /*
1310 * The pen driver doesn't currently support
1311 * driving this reset line. By specifying
1312 * output-high here we're relying on the fact
1313 * that this pin has a default pulldown at boot
1314 * (which makes sure the pen was in reset if it
1315 * was powered) and then we set it high here to
1316 * take it out of reset. Better would be if the
1317 * pen driver could control this and we could
1318 * remove "output-high" here.
1319 */
1320 output-high; /* TODO: Remove this? */
1321 };
1322
1323 p_sensor_int_l: p-sensor-int-l-state {
1324 pins = "gpio24";
1325 function = "gpio";
1326
1327 /* Has external pullup */
1328 bias-disable;
1329 };
1330
1331 qspi_sleep: qspi-sleep-state {
1332 pins = "gpio63", "gpio64", "gpio65", "gpio68";
1333
1334 /*
1335 * When we're not actively transferring we want pins as GPIOs
1336 * with output disabled so that the quad SPI IP block stops
1337 * driving them. We rely on the normal pulls configured in
1338 * the active state and don't redefine them here. Also note
1339 * that we don't need the reverse (output-enable) in the
1340 * normal mode since the "output-enable" only matters for
1341 * GPIO function.
1342 */
1343 function = "gpio";
1344 output-disable;
1345 };
1346
1347 qup_uart3_sleep: qup-uart3-sleep-state {
1348 cts-pins {
1349 /*
1350 * Configure a pull-down on CTS to match the pull of
1351 * the Bluetooth module.
1352 */
1353 pins = "gpio38";
1354 function = "gpio";
1355 bias-pull-down;
1356 };
1357
1358 rts-pins {
1359 /*
1360 * Configure pull-down on RTS. As RTS is active low
1361 * signal, pull it low to indicate the BT SoC that it
1362 * can wakeup the system anytime from suspend state by
1363 * pulling RX low (by sending wakeup bytes).
1364 */
1365 pins = "gpio39";
1366 function = "gpio";
1367 bias-pull-down;
1368 };
1369
1370 tx-pins {
1371 /*
1372 * Configure pull-up on TX when it isn't actively driven
1373 * to prevent BT SoC from receiving garbage during sleep.
1374 */
1375 pins = "gpio40";
1376 function = "gpio";
1377 bias-pull-up;
1378 };
1379
1380 rx-pins {
1381 /*
1382 * Configure a pull-up on RX. This is needed to avoid
1383 * garbage data when the TX pin of the Bluetooth module
1384 * is floating which may cause spurious wakeups.
1385 */
1386 pins = "gpio41";
1387 function = "gpio";
1388 bias-pull-up;
1389 };
1390 };
1391
1392 /* Named trackpad_int_1v8_odl on earlier revision schematics */
1393 trackpad_int_1v8_odl:
1394 tp_int_odl: tp-int-odl-state {
1395 pins = "gpio0";
1396 function = "gpio";
1397
1398 /* Has external pullup */
1399 bias-disable;
1400 };
1401
1402 ts_int_l: ts-int-l-state {
1403 pins = "gpio9";
1404 function = "gpio";
1405 bias-pull-up;
1406 };
1407
1408 ts_reset_l: ts-reset-l-state {
1409 pins = "gpio8";
1410 function = "gpio";
1411 bias-disable;
1412
1413 /*
1414 * The reset GPIO to the touchscreen takes almost 2ms to drop
1415 * at the default drive strength. When we bump it up to 8mA it
1416 * falls in under 500us. We want this to be fast since the Elan
1417 * datasheet (and any drivers written based on it) talk about using
1418 * a 500 us reset pulse.
1419 */
1420 drive-strength = <8>;
1421 };
1422
1423 sdc1_on: sdc1-on-state {
1424 clk-pins {
1425 pins = "sdc1_clk";
1426 bias-disable;
1427 drive-strength = <16>;
1428 };
1429
1430 cmd-pins {
1431 pins = "sdc1_cmd";
1432 bias-pull-up;
1433 drive-strength = <16>;
1434 };
1435
1436 data-pins {
1437 pins = "sdc1_data";
1438 bias-pull-up;
1439 drive-strength = <16>;
1440 };
1441
1442 rclk-pins {
1443 pins = "sdc1_rclk";
1444 bias-pull-down;
1445 };
1446 };
1447
1448 sdc1_off: sdc1-off-state {
1449 clk-pins {
1450 pins = "sdc1_clk";
1451 bias-disable;
1452 drive-strength = <2>;
1453 };
1454
1455 cmd-pins {
1456 pins = "sdc1_cmd";
1457 bias-pull-up;
1458 drive-strength = <2>;
1459 };
1460
1461 data-pins {
1462 pins = "sdc1_data";
1463 bias-pull-up;
1464 drive-strength = <2>;
1465 };
1466
1467 rclk-pins {
1468 pins = "sdc1_rclk";
1469 bias-pull-down;
1470 };
1471 };
1472
1473 sdc2_on: sdc2-on-state {
1474 clk-pins {
1475 pins = "sdc2_clk";
1476 bias-disable;
1477 drive-strength = <16>;
1478 };
1479
1480 cmd-pins {
1481 pins = "sdc2_cmd";
1482 bias-pull-up;
1483 drive-strength = <10>;
1484 };
1485
1486 data-pins {
1487 pins = "sdc2_data";
1488 bias-pull-up;
1489 drive-strength = <10>;
1490 };
1491
1492 sd-cd-pins {
1493 pins = "gpio69";
1494 function = "gpio";
1495 bias-pull-up;
1496 drive-strength = <2>;
1497 };
1498 };
1499
1500 sdc2_off: sdc2-off-state {
1501 clk-pins {
1502 pins = "sdc2_clk";
1503 bias-disable;
1504 drive-strength = <2>;
1505 };
1506
1507 cmd-pins {
1508 pins = "sdc2_cmd";
1509 bias-pull-up;
1510 drive-strength = <2>;
1511 };
1512
1513 data-pins {
1514 pins = "sdc2_data";
1515 bias-pull-up;
1516 drive-strength = <2>;
1517 };
1518
1519 sd-cd-pins {
1520 pins = "gpio69";
1521 function = "gpio";
1522 bias-pull-up;
1523 drive-strength = <2>;
1524 };
1525 };
1526
1527 uf_cam_en: uf-cam-en-state {
1528 pins = "gpio6";
1529 function = "gpio";
1530 drive-strength = <2>;
1531
1532 /* External pull down */
1533 bias-disable;
1534 };
1535
1536 wf_cam_en: wf-cam-en-state {
1537 pins = "gpio7";
1538 function = "gpio";
1539 drive-strength = <2>;
1540
1541 /* External pull down */
1542 bias-disable;
1543 };
1544};