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