1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2021, AngeloGioacchino Del Regno
4 *                     <angelogioacchino.delregno@somainline.org>
5 * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
6 */
7
8#include "msm8996.dtsi"
9#include "pm8994.dtsi"
10#include "pmi8994.dtsi"
11#include <dt-bindings/input/input.h>
12#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
14#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
15
16/delete-node/ &adsp_mem;
17/delete-node/ &slpi_mem;
18/delete-node/ &venus_mem;
19/delete-node/ &gpu_mem;
20
21/ {
22	qcom,msm-id = <246 0x30001>; /* MSM8996 V3.1 (Final) */
23	qcom,pmic-id = <0x20009 0x2000a 0 0>; /* PM8994 + PMI8994 */
24	qcom,board-id = <8 0>;
25
26	chosen {
27		/*
28		 * Due to an unknown-for-a-few-years regression,
29		 * SDHCI only works on MSM8996 in PIO (lame) mode.
30		 */
31		bootargs = "sdhci.debug_quirks=0x40 sdhci.debug_quirks2=0x4 maxcpus=2";
32	};
33
34	reserved-memory {
35		ramoops@a7f00000 {
36			compatible = "ramoops";
37			reg = <0 0xa7f00000 0 0x100000>;
38			record-size = <0x20000>;
39			console-size = <0x40000>;
40			ftrace-size = <0x20000>;
41			pmsg-size = <0x20000>;
42			ecc-size = <16>;
43		};
44
45		cont_splash_mem: memory@83401000 {
46			reg = <0 0x83401000 0 0x23ff000>;
47			no-map;
48		};
49
50		adsp_mem: adsp@8ea00000 {
51			reg = <0x0 0x8ea00000 0x0 0x1a00000>;
52			no-map;
53		};
54
55		gpu_mem: gpu@90400000 {
56			compatible = "shared-dma-pool";
57			reg = <0x0 0x90400000 0x0 0x2000>;
58			no-map;
59		};
60
61		slpi_mem: memory@90500000 {
62			reg = <0 0x90500000 0 0xa00000>;
63			no-map;
64		};
65
66		venus_mem: memory@90f00000 {
67			reg = <0 0x90f00000 0 0x500000>;
68			no-map;
69		};
70	};
71
72	panel_tvdd: tvdd-regulator {
73		compatible = "regulator-fixed";
74		regulator-name = "panel_tvdd";
75		gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
76		pinctrl-0 = <&tp_vddio_en>;
77		pinctrl-names = "default";
78	};
79
80	usb3_id: usb3-id {
81		compatible = "linux,extcon-usb-gpio";
82		id-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
83		pinctrl-names = "default";
84		pinctrl-0 = <&usb_detect>;
85	};
86
87	vph_pwr: vph-pwr-regulator {
88		compatible = "regulator-fixed";
89		regulator-min-microvolt = <3700000>;
90		regulator-max-microvolt = <3700000>;
91		regulator-name = "vph_pwr";
92		regulator-always-on;
93		regulator-boot-on;
94	};
95
96	wlan_en: wlan-en-1-8v {
97		compatible = "regulator-fixed";
98		regulator-name = "wlan-en-regulator";
99		regulator-min-microvolt = <1800000>;
100		regulator-max-microvolt = <1800000>;
101		gpio = <&tlmm 84 GPIO_ACTIVE_HIGH>;
102		pinctrl-names = "default";
103		pinctrl-0 = <&wl_reg_on>;
104
105		/* WLAN card specific delay */
106		startup-delay-us = <70000>;
107		enable-active-high;
108	};
109};
110
111&blsp1_i2c3 {
112	status = "okay";
113	clock-frequency = <355000>;
114
115	tof_sensor: vl53l0x@29 {
116		compatible = "st,vl53l0x";
117		reg = <0x29>;
118	};
119};
120
121&blsp1_uart2 {
122	status = "okay";
123};
124
125&blsp2_i2c5 {
126	status = "okay";
127	clock-frequency = <355000>;
128
129	/* FUSB301 USB-C controller */
130};
131
132&blsp2_i2c6 {
133	status = "okay";
134	clock-frequency = <355000>;
135
136	synaptics@2c {
137		compatible = "syna,rmi4-i2c";
138		reg = <0x2c>;
139		interrupt-parent = <&tlmm>;
140		interrupts = <125 IRQ_TYPE_EDGE_FALLING>;
141		vdd-supply = <&panel_tvdd>;
142
143		syna,reset-delay-ms = <220>;
144		syna,startup-delay-ms = <220>;
145		#address-cells = <1>;
146		#size-cells = <0>;
147
148		rmi4-f01@1 {
149			reg = <0x1>;
150			syna,nosleep-mode = <1>;
151		};
152
153		rmi4-f11@11 {
154			reg = <0x11>;
155			syna,sensor-type = <1>;
156		};
157	};
158};
159
160&blsp2_uart2 {
161	status = "okay";
162};
163
164&camera0_mclk {
165	drive-strength = <2>;
166	output-low;
167};
168
169&camera0_pwdn {
170	drive-strength = <2>;
171	output-low;
172};
173
174&camera0_rst {
175	pins = "gpio30";
176	drive-strength = <2>;
177	output-low;
178};
179
180&camera2_mclk {
181	drive-strength = <2>;
182	output-low;
183};
184
185&camera2_rst {
186	drive-strength = <2>;
187	output-low;
188};
189
190&hsusb_phy1 {
191	status = "okay";
192
193	vdd-supply = <&pm8994_l28>;
194	vdda-pll-supply = <&pm8994_l12>;
195	vdda-phy-dpdm-supply = <&pm8994_l24>;
196};
197
198&mmcc {
199	vdd-gfx-supply = <&vdd_gfx>;
200};
201
202&pcie0 {
203	status = "okay";
204	perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
205	wake-gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>;
206	vddpe-3v3-supply = <&wlan_en>;
207	vdda-supply = <&pm8994_l28>;
208};
209
210&pcie_phy {
211	status = "okay";
212
213	vdda-phy-supply = <&pm8994_l28>;
214	vdda-pll-supply = <&pm8994_l12>;
215};
216
217&pm8994_gpios {
218	pinctrl-names = "default";
219	pinctrl-0 = <&pm8994_gpios_defaults>;
220	gpio-line-names =
221		"NC",
222		"VOL_DOWN_N",
223		"VOL_UP_N",
224		"SNAPSHOT_N",
225		"FOCUS_N",
226		"NC",
227		"NFC_VEN",
228		"NC",
229		"NC",
230		"NC",
231		"NC",
232		"NC",
233		"EAR_EN",
234		"NC",
235		"PM_DIVCLK1",
236		"PMI_CLK",
237		"NC",
238		"WL_SLEEP_CLK",
239		"NC",
240		"PMIC_SPON",
241		"UIM_BATT_ALARM",
242		"PMK_SLEEP_CLK";
243
244	/*
245	 * We don't yet know for sure which GPIOs are of our interest, but what
246	 * we do know is that if a vendor sets the pins to a non-default state, there's
247	 * probably a reason for it, and just to be on the safe side, we follow suit.
248	 */
249	pm8994_gpios_defaults: pm8994-gpios-default-state {
250		pm8994-gpio1-nc {
251			pins = "gpio1";
252			function = PMIC_GPIO_FUNC_NORMAL;
253			drive-push-pull;
254			bias-high-impedance;
255		};
256
257		vol-down-n {
258			pins = "gpio2";
259			function = PMIC_GPIO_FUNC_NORMAL;
260			drive-push-pull;
261			input-enable;
262			bias-pull-up;
263			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
264			power-source = <PM8994_GPIO_S4>;
265		};
266
267		vol-up-n {
268			pins = "gpio3";
269			function = PMIC_GPIO_FUNC_NORMAL;
270			drive-push-pull;
271			input-enable;
272			bias-pull-up;
273			power-source = <PM8994_GPIO_S4>;
274		};
275
276		camera-snapshot-n {
277			pins = "gpio4";
278			function = PMIC_GPIO_FUNC_NORMAL;
279			drive-push-pull;
280			input-enable;
281			bias-pull-up;
282			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
283			power-source = <PM8994_GPIO_S4>;
284		};
285
286		camera-focus-n {
287			pins = "gpio5";
288			function = PMIC_GPIO_FUNC_NORMAL;
289			drive-push-pull;
290			input-enable;
291			bias-pull-up;
292			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
293			power-source = <PM8994_GPIO_S4>;
294		};
295
296		pm8994-gpio6-nc {
297			pins = "gpio6";
298			function = PMIC_GPIO_FUNC_NORMAL;
299			drive-push-pull;
300			bias-high-impedance;
301			power-source = <PM8994_GPIO_VPH>;
302		};
303
304		nfc-download {
305			pins = "gpio7";
306			function = PMIC_GPIO_FUNC_NORMAL;
307			output-low;
308			drive-push-pull;
309			bias-disable;
310			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
311			power-source = <PM8994_GPIO_S4>;
312		};
313
314		pm8994-gpio8-nc {
315			pins = "gpio8";
316			function = PMIC_GPIO_FUNC_NORMAL;
317			output-low;
318			drive-push-pull;
319			bias-high-impedance;
320			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
321			power-source = <PM8994_GPIO_VPH>;
322		};
323
324		pm8994-gpio9-nc {
325			pins = "gpio9";
326			function = PMIC_GPIO_FUNC_NORMAL;
327			output-high;
328			drive-push-pull;
329			bias-high-impedance;
330			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
331			power-source = <PM8994_GPIO_VPH>;
332		};
333
334		nfc-clock {
335			pins = "gpio10";
336			function = PMIC_GPIO_FUNC_NORMAL;
337			input-enable;
338			drive-push-pull;
339			bias-pull-down;
340			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
341			power-source = <PM8994_GPIO_S4>;
342		};
343
344		pm8994-gpio11-nc {
345			pins = "gpio11";
346			function = PMIC_GPIO_FUNC_NORMAL;
347			drive-push-pull;
348			bias-high-impedance;
349			power-source = <PM8994_GPIO_VPH>;
350		};
351
352		pm8994-gpio12-nc {
353			pins = "gpio12";
354			function = PMIC_GPIO_FUNC_NORMAL;
355			drive-push-pull;
356			bias-high-impedance;
357			power-source = <PM8994_GPIO_VPH>;
358		};
359
360		ear-enable {
361			pins = "gpio13";
362			function = PMIC_GPIO_FUNC_NORMAL;
363			output-high;
364			drive-push-pull;
365			bias-disable;
366			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
367			power-source = <PM8994_GPIO_S4>;
368		};
369
370		pm8994-gpio14-nc {
371			pins = "gpio14";
372			function = PMIC_GPIO_FUNC_NORMAL;
373			drive-push-pull;
374			input-enable;
375			bias-high-impedance;
376			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
377			power-source = <PM8994_GPIO_VPH>;
378		};
379
380		pm-divclk1-gpio {
381			pins = "gpio15";
382			function = "func1";
383			output-high;
384			drive-push-pull;
385			bias-high-impedance;
386			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
387			power-source = <PM8994_GPIO_VPH>;
388		};
389
390		pmi-clk-gpio {
391			pins = "gpio16";
392			function = PMIC_GPIO_FUNC_NORMAL;
393			drive-push-pull;
394		};
395
396		pm8994-gpio17-nc {
397			pins = "gpio17";
398			function = PMIC_GPIO_FUNC_NORMAL;
399			drive-push-pull;
400			bias-high-impedance;
401			power-source = <PM8994_GPIO_VPH>;
402		};
403
404		rome-sleep {
405			pins = "gpio18";
406			function = PMIC_GPIO_FUNC_FUNC2;
407			output-low;
408			drive-push-pull;
409			bias-disable;
410			qcom,drive-strength = <PMIC_GPIO_STRENGTH_MED>;
411			power-source = <PM8994_GPIO_S4>;
412		};
413
414		pm8994-gpio19-nc {
415			pins = "gpio19";
416			function = PMIC_GPIO_FUNC_NORMAL;
417			output-low;
418			drive-push-pull;
419			bias-high-impedance;
420			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
421			power-source = <PM8994_GPIO_VPH>;
422		};
423
424		pm8994-gpio22-nc {
425			pins = "gpio22";
426			function = PMIC_GPIO_FUNC_NORMAL;
427			drive-push-pull;
428			bias-high-impedance;
429			power-source = <PM8994_GPIO_VPH>;
430		};
431	};
432};
433
434&pm8994_mpps {
435	pinctrl-names = "default";
436	pinctrl-0 = <&pm8994_mpps_defaults>;
437
438	gpio-line-names =
439		"SDC_UIM_VBIAS",
440		"LCD_ID_ADC",
441		"VREF_DACX",
442		"NC",
443		"FLASH_THERM",
444		"NC",
445		"NC",
446		"RF_ID";
447
448	pm8994_mpps_defaults: pm8994-mpps-default-state {
449		lcd-id_adc-mpp {
450			pins = "mpp2";
451			function = "analog";
452			input-enable;
453			qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH6>;
454		};
455
456		pm-mpp4-nc {
457			pins = "mpp4";
458			function = "digital";
459			bias-high-impedance;
460			power-source = <PM8994_GPIO_VPH>;
461		};
462
463		flash-therm-mpp {
464			pins = "mpp5";
465			function = "analog";
466			input-enable;
467			qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>;
468		};
469
470		mpp6-nc {
471			pins = "mpp6";
472			function = "digital";
473			bias-high-impedance;
474		};
475
476		rf-id-mpp {
477			pins = "mpp8";
478			function = "analog";
479			input-enable;
480			qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH8>;
481		};
482	};
483};
484
485&pm8994_resin {
486	status = "okay";
487	linux,code = <KEY_VOLUMEUP>;
488};
489
490&pmi8994_gpios {
491	pinctrl-names = "default";
492	pinctrl-0 = <&pmi8994_gpios_defaults>;
493
494	gpio-line-names =
495		"VIB_LDO_EN",
496		"NC",
497		"NC",
498		"NC",
499		"NC",
500		"NC",
501		"NC",
502		"NC",
503		"USB_SWITCH_SEL",
504		"NC";
505
506	pmi8994_gpios_defaults: pmi8994-gpios-default-state {
507		vib-ldo-en-gpio {
508			pins = "gpio1";
509			function = PMIC_GPIO_FUNC_NORMAL;
510			drive-push-pull;
511			output-low;
512			bias-disable;
513			power-source = <PM8994_GPIO_S4>;
514		};
515
516		pmi-gpio2-nc {
517			pins = "gpio2";
518			function = PMIC_GPIO_FUNC_NORMAL;
519			drive-push-pull;
520			input-enable;
521			bias-high-impedance;
522			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
523			power-source = <PM8994_GPIO_VPH>;
524		};
525
526		pmi-gpio3-nc {
527			pins = "gpio3";
528			function = PMIC_GPIO_FUNC_NORMAL;
529			drive-push-pull;
530			input-enable;
531			bias-high-impedance;
532			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
533			power-source = <PM8994_GPIO_VPH>;
534		};
535
536		pmi-gpio4-nc {
537			pins = "gpio4";
538			function = PMIC_GPIO_FUNC_NORMAL;
539			drive-push-pull;
540			output-high;
541			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
542			power-source = <PM8994_GPIO_S4>;
543		};
544
545		pmi-gpio5-nc {
546			pins = "gpio5";
547			function = PMIC_GPIO_FUNC_NORMAL;
548			drive-push-pull;
549			output-high;
550			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
551			power-source = <PM8994_GPIO_S4>;
552		};
553
554		pmi-gpio6-nc {
555			pins = "gpio6";
556			function = PMIC_GPIO_FUNC_NORMAL;
557			drive-push-pull;
558			output-high;
559			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
560			power-source = <PM8994_GPIO_S4>;
561		};
562
563		pmi-gpio7-nc {
564			pins = "gpio7";
565			function = PMIC_GPIO_FUNC_NORMAL;
566			drive-push-pull;
567			output-high;
568			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
569			power-source = <PM8994_GPIO_S4>;
570		};
571
572		pmi-gpio8-nc {
573			pins = "gpio8";
574			function = PMIC_GPIO_FUNC_NORMAL;
575			drive-push-pull;
576			output-high;
577			qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
578			power-source = <PM8994_GPIO_S4>;
579		};
580
581		usb-switch-sel {
582			pins = "gpio9";
583			function = PMIC_GPIO_FUNC_NORMAL;
584			drive-push-pull;
585		};
586
587		pmi-gpio10-nc {
588			pins = "gpio10";
589			function = PMIC_GPIO_FUNC_NORMAL;
590			output-low;
591			drive-push-pull;
592			bias-disable;
593			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
594			power-source = <PM8994_GPIO_S4>;
595		};
596	};
597};
598
599&pm8994_spmi_regulators {
600	qcom,saw-reg = <&saw3>;
601
602	pm8994_s9: s9 {
603		qcom,saw-slave;
604	};
605
606	pm8994_s10: s10 {
607		qcom,saw-slave;
608	};
609
610	pm8994_s11: s11 {
611		qcom,saw-leader;
612		regulator-name = "vdd_apcc";
613		regulator-always-on;
614		regulator-min-microvolt = <470000>;
615		regulator-max-microvolt = <1140000>;
616	};
617};
618
619&pmi8994_spmi_regulators {
620	vdd_gfx:
621	pmi8994_s2: s2 {
622		/* Pinned to a high value for now to avoid random crashes. */
623		regulator-min-microvolt = <1015000>;
624		regulator-max-microvolt = <1015000>;
625		regulator-name = "vdd_gfx";
626		regulator-always-on;
627	};
628};
629
630&pmi8994_wled {
631	status = "okay";
632	default-brightness = <512>;
633	qcom,num-strings = <3>;
634};
635
636&rpm_requests {
637	pm8994-regulators {
638		compatible = "qcom,rpm-pm8994-regulators";
639
640		vdd_s1-supply = <&vph_pwr>;
641		vdd_s2-supply = <&vph_pwr>;
642		vdd_s3-supply = <&vph_pwr>;
643		vdd_s4-supply = <&vph_pwr>;
644		vdd_s5-supply = <&vph_pwr>;
645		vdd_s6-supply = <&vph_pwr>;
646		vdd_s7-supply = <&vph_pwr>;
647		vdd_s8-supply = <&vph_pwr>;
648		vdd_s9-supply = <&vph_pwr>;
649		vdd_s10-supply = <&vph_pwr>;
650		vdd_s11-supply = <&vph_pwr>;
651		vdd_s12-supply = <&vph_pwr>;
652		vdd_l1-supply = <&pm8994_s3>;
653		vdd_l2_l26_l28-supply = <&pm8994_s3>;
654		vdd_l3_l11-supply = <&pm8994_s3>;
655		vdd_l4_l27_l31-supply = <&pm8994_s3>;
656		vdd_l5_l7-supply = <&pm8994_s5>;
657		vdd_l6_l12_l32-supply = <&pm8994_s5>;
658		vdd_l8_l16_l30-supply = <&vph_pwr>;
659		vdd_l14_l15-supply = <&pm8994_s5>;
660		vdd_l20_l21-supply = <&pm8994_s5>;
661		vdd_l25-supply = <&pm8994_s3>;
662		vdd_lvs1_2-supply = <&pm8994_s4>;
663
664		pm8994_s3: s3 {
665			regulator-min-microvolt = <1300000>;
666			regulator-max-microvolt = <1300000>;
667		};
668
669		pm8994_s4: s4 {
670			regulator-min-microvolt = <1800000>;
671			regulator-max-microvolt = <1800000>;
672			regulator-system-load = <325000>;
673			regulator-always-on;
674		};
675
676		pm8994_s5: s5 {
677			regulator-min-microvolt = <2150000>;
678			regulator-max-microvolt = <2150000>;
679		};
680
681		pm8994_s7: s7 {
682			regulator-min-microvolt = <800000>;
683			regulator-max-microvolt = <800000>;
684		};
685
686		pm8994_l1: l1 {
687			regulator-min-microvolt = <1000000>;
688			regulator-max-microvolt = <1000000>;
689		};
690
691		pm8994_l2: l2 {
692			regulator-min-microvolt = <1250000>;
693			regulator-max-microvolt = <1250000>;
694		};
695
696		pm8994_l3: l3 {
697			regulator-min-microvolt = <1100000>;
698			regulator-max-microvolt = <1100000>;
699		};
700
701		pm8994_l4: l4 {
702			regulator-min-microvolt = <1225000>;
703			regulator-max-microvolt = <1225000>;
704		};
705
706		/* L6 and L7 seem unused. */
707
708		pm8994_l8: l8 {
709			regulator-min-microvolt = <1800000>;
710			regulator-max-microvolt = <1800000>;
711		};
712
713		pm8994_l9: l9 {
714			regulator-min-microvolt = <1800000>;
715			regulator-max-microvolt = <1800000>;
716		};
717
718		pm8994_l10: l10 {
719			regulator-min-microvolt = <1800000>;
720			regulator-max-microvolt = <1800000>;
721		};
722
723		pm8994_l11: l11 {
724			regulator-min-microvolt = <1100000>;
725			regulator-max-microvolt = <1100000>;
726		};
727
728		pm8994_l12: l12 {
729			regulator-min-microvolt = <1800000>;
730			regulator-max-microvolt = <1800000>;
731			regulator-allow-set-load;
732		};
733
734		pm8994_l13: l13 {
735			regulator-min-microvolt = <1800000>;
736			regulator-max-microvolt = <2950000>;
737			regulator-system-load = <22000>;
738			regulator-allow-set-load;
739		};
740
741		pm8994_l14: l14 {
742			regulator-min-microvolt = <1700000>;
743			regulator-max-microvolt = <1900000>;
744		};
745
746		pm8994_l15: l15 {
747			regulator-min-microvolt = <1800000>;
748			regulator-max-microvolt = <1800000>;
749		};
750
751		pm8994_l16: l16 {
752			regulator-min-microvolt = <2700000>;
753			regulator-max-microvolt = <2700000>;
754		};
755
756		pm8994_l17: l17 {
757			regulator-min-microvolt = <2200000>;
758			regulator-max-microvolt = <2500000>;
759		};
760
761		pm8994_l18: l18 {
762			regulator-min-microvolt = <1800000>;
763			regulator-max-microvolt = <1800000>;
764		};
765
766		pm8994_l19: l19 {
767			regulator-min-microvolt = <3000000>;
768			regulator-max-microvolt = <3000000>;
769		};
770
771		pm8994_l20: l20 {
772			regulator-min-microvolt = <2950000>;
773			regulator-max-microvolt = <2950000>;
774			regulator-system-load = <570000>;
775			regulator-allow-set-load;
776		};
777
778		pm8994_l21: l21 {
779			regulator-min-microvolt = <2950000>;
780			regulator-max-microvolt = <2950000>;
781			regulator-system-load = <800000>;
782			regulator-allow-set-load;
783		};
784
785		pm8994_l22: l22 {
786			regulator-min-microvolt = <3000000>;
787			regulator-max-microvolt = <3000000>;
788		};
789
790		pm8994_l23: l23 {
791			regulator-min-microvolt = <2700000>;
792			regulator-max-microvolt = <2700000>;
793		};
794
795		pm8994_l24: l24 {
796			regulator-min-microvolt = <3075000>;
797			regulator-max-microvolt = <3075000>;
798			regulator-allow-set-load;
799		};
800
801		pm8994_l25: l25 {
802			regulator-min-microvolt = <1200000>;
803			regulator-max-microvolt = <1200000>;
804			regulator-allow-set-load;
805		};
806
807		pm8994_l27: l27 {
808			regulator-min-microvolt = <1000000>;
809			regulator-max-microvolt = <1200000>;
810		};
811
812		pm8994_l28: l28 {
813			regulator-min-microvolt = <925000>;
814			regulator-max-microvolt = <925000>;
815			regulator-allow-set-load;
816		};
817
818		pm8994_l29: l29 {
819			regulator-min-microvolt = <2700000>;
820			regulator-max-microvolt = <2700000>;
821		};
822
823		pm8994_l30: l30 { };
824
825		pm8994_l32: l32 {
826			regulator-min-microvolt = <1800000>;
827			regulator-max-microvolt = <1800000>;
828		};
829	};
830};
831
832&sdhc1 {
833	/* eMMC doesn't seem to cooperate even in PIO mode.. */
834	status = "disabled";
835
836	vmmc-supply = <&pm8994_l20>;
837	vqmmc-supply = <&pm8994_s4>;
838	mmc-hs400-1_8v;
839	mmc-hs200-1_8v;
840};
841
842&sdhc2 {
843	status = "okay";
844
845	cd-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
846	vmmc-supply = <&pm8994_l21>;
847	vqmmc-supply = <&pm8994_l13>;
848};
849
850&tlmm {
851	gpio-reserved-ranges = <0 4>;
852	pinctrl-0 = <&sw_service_gpio>;
853	pinctrl-names = "default";
854
855	disp_reset_n_gpio: disp-reset-n {
856		pins = "gpio8";
857		function = "gpio";
858		drive-strength = <2>;
859		bias-disable;
860	};
861
862	mdp_vsync_p_gpio: mdp-vsync-p {
863		pins = "gpio10";
864		function = "mdp_vsync";
865		drive-strength = <2>;
866		bias-disable;
867	};
868
869	sw_service_gpio: sw-service-gpio {
870		pins = "gpio16";
871		function = "gpio";
872		drive-strength = <2>;
873		bias-pull-up;
874	};
875
876	usb_detect: usb-detect {
877		pins = "gpio25";
878		function = "gpio";
879		drive-strength = <2>;
880		bias-disable;
881		output-high;
882	};
883
884	uim_detect_en: uim-detect-en {
885		pins = "gpio29";
886		function = "gpio";
887		drive-strength = <2>;
888		bias-disable;
889		output-high;
890	};
891
892	tray_det_pin: tray-det {
893		pins = "gpio40";
894		function = "gpio";
895		drive-strength = <2>;
896		bias-disable;
897	};
898
899	tp_vddio_en: tp-vddio-en {
900		pins = "gpio50";
901		function = "gpio";
902		drive-strength = <2>;
903		bias-disable;
904		output-high;
905	};
906
907	lcd_vddio_en: lcd-vddio-en {
908		pins = "gpio51";
909		function = "gpio";
910		drive-strength = <2>;
911		bias-disable;
912		output-low;
913	};
914
915	wl_host_wake: wl-host-wake {
916		pins = "gpio79";
917		function = "gpio";
918		drive-strength = <2>;
919		bias-pull-down;
920		input-high;
921	};
922
923	wl_reg_on: wl-reg-on {
924		pins = "gpio84";
925		function = "gpio";
926		drive-strength = <2>;
927		bias-disable;
928		output-low;
929	};
930
931	ts_reset_n: ts-rst-n {
932		pins = "gpio89";
933		function = "gpio";
934		drive-strength = <2>;
935	};
936
937	touch_int_n: touch-int-n {
938		pins = "gpio125";
939		function = "gpio";
940		drive-strength = <2>;
941		bias-pull-up;
942	};
943
944	touch_int_sleep: touch-int-sleep {
945		pins = "gpio125";
946		function = "gpio";
947		drive-strength = <2>;
948		bias-pull-down;
949	};
950};
951
952/*
953 * For reasons that are currently unknown (but probably related to fusb301), USB takes about
954 * 6 minutes to wake up (nothing interesting in kernel logs), but then it works as it should.
955 */
956&usb3 {
957	status = "okay";
958	qcom,select-utmi-as-pipe-clk;
959};
960
961&usb3_dwc3 {
962	extcon = <&usb3_id>;
963	dr_mode = "peripheral";
964	phys = <&hsusb_phy1>;
965	phy-names = "usb2-phy";
966	snps,hird-threshold = /bits/ 8 <0>;
967};
968