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