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		#sound-dai-cells = <0>;
277		#address-cells = <1>;
278		#size-cells = <0>;
279
280		dai-link@0 {
281			link-name = "MultiMedia0";
282			reg = <MI2S_PRIMARY>;
283			cpu {
284				sound-dai = <&lpass_cpu MI2S_PRIMARY>;
285			};
286
287			sound_multimedia0_codec: codec {
288				sound-dai = <&alc5682 0 /* aif1 */>;
289			};
290		};
291
292		dai-link@1 {
293			link-name = "MultiMedia1";
294			reg = <MI2S_SECONDARY>;
295			cpu {
296				sound-dai = <&lpass_cpu MI2S_SECONDARY>;
297			};
298
299			sound_multimedia1_codec: codec {
300				sound-dai = <&max98360a>;
301			};
302		};
303
304		dai-link@2 {
305			link-name = "MultiMedia2";
306			reg = <2>;
307			cpu {
308				sound-dai = <&lpass_cpu 2>;
309			};
310
311			codec {
312				sound-dai = <&mdss_dp>;
313			};
314		};
315	};
316};
317
318&qfprom {
319	vcc-supply = <&pp1800_l11a>;
320};
321
322&qspi {
323	status = "okay";
324	pinctrl-names = "default";
325	pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data01>;
326
327	flash@0 {
328		compatible = "jedec,spi-nor";
329		reg = <0>;
330
331		spi-max-frequency = <37500000>;
332		spi-tx-bus-width = <2>;
333		spi-rx-bus-width = <2>;
334	};
335};
336
337&apps_rsc {
338	pm6150-rpmh-regulators {
339		compatible = "qcom,pm6150-rpmh-regulators";
340		qcom,pmic-id = "a";
341
342		vddpx_1:
343		vdd2:
344		pp1125_s1a: smps1 {
345			regulator-min-microvolt = <1128000>;
346			regulator-max-microvolt = <1128000>;
347		};
348
349		vdd_qlink_lv:
350		vdd_qlink_lv_ck:
351		vdd_qusb_hs0_core:
352		vdd_ufs1_core:
353		vdda_mipi_csi0_0p9:
354		vdda_mipi_csi1_0p9:
355		vdda_mipi_csi2_0p9:
356		vdda_mipi_csi3_0p9:
357		vdda_mipi_dsi0_pll:
358		vdda_pll_cc_ebi01:
359		vdda_qrefs_0p9:
360		vdda_usb_ss_dp_core:
361		pp900_l4a: ldo4 {
362			regulator-min-microvolt = <824000>;
363			regulator-max-microvolt = <928000>;
364			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
365		};
366
367		vdd_cx_wlan:
368		pp800_l9a: ldo9 {
369			regulator-min-microvolt = <488000>;
370			regulator-max-microvolt = <800000>;
371			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
372		};
373
374		vdd1:
375		vddpx_3:
376		vddpx_7:
377		vio_in:
378		pp1800_l10a: ldo10 {
379			regulator-min-microvolt = <1800000>;
380			regulator-max-microvolt = <1800000>;
381			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
382		};
383
384		vdd_qfprom:
385		vdda_apc1_cs_1p8:
386		vdda_qrefs_1p8:
387		vdda_qusb_hs0_1p8:
388		vddpx_11:
389		vreg_bb_clk:
390		pp1800_l11a: ldo11 {
391			regulator-min-microvolt = <1800000>;
392			regulator-max-microvolt = <1800000>;
393			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
394		};
395
396		mcp_vccq:
397		pp1800_l12a_r: ldo12 {
398			regulator-min-microvolt = <1800000>;
399			regulator-max-microvolt = <1800000>;
400			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
401		};
402
403		/*
404		 * On trogdor this needs to match l10a since we use it to
405		 * give power to things like SPI flash which communicate back
406		 * on lines powered by l10a.  Thus we force to 1.8V.
407		 */
408		pp1800_l13a: ldo13 {
409			regulator-min-microvolt = <1800000>;
410			regulator-max-microvolt = <1800000>;
411			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
412		};
413
414		pp1800_prox:
415		pp1800_l14a: ldo14 {
416			regulator-min-microvolt = <1800000>;
417			regulator-max-microvolt = <1800000>;
418			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
419		};
420
421		pp1800_alc5682:
422		pp1800_l15a: ldo15 {
423			regulator-min-microvolt = <1800000>;
424			regulator-max-microvolt = <1800000>;
425			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
426		};
427
428		vdda_qusb_hs0_3p1:
429		vdd_pdphy:
430		pp3100_l17a: ldo17 {
431			regulator-min-microvolt = <2920000>;
432			regulator-max-microvolt = <3232000>;
433			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
434		};
435
436		pp1800_pen:
437		pp1800_l18a: ldo18 {
438			regulator-min-microvolt = <1800000>;
439			regulator-max-microvolt = <1800000>;
440			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
441		};
442
443		mcp_vcc:
444		pp2850_l19a: ldo19 {
445			regulator-min-microvolt = <2960000>;
446			regulator-max-microvolt = <2960000>;
447			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
448		};
449	};
450
451	pm6150l-rpmh-regulators {
452		compatible = "qcom,pm6150l-rpmh-regulators";
453		qcom,pmic-id = "c";
454
455		pp1300_s8c: smps8 {
456			regulator-min-microvolt = <1120000>;
457			regulator-max-microvolt = <1408000>;
458		};
459
460		pp1800_l1c: ldo1 {
461			regulator-min-microvolt = <1616000>;
462			regulator-max-microvolt = <1984000>;
463			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
464		};
465
466		vdd_wcss_adc_dac:
467		pp1300_l2c: ldo2 {
468			regulator-min-microvolt = <1168000>;
469			regulator-max-microvolt = <1304000>;
470			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
471		};
472
473		pp1200_brij:
474		vdd_ufs1_1p2:
475		vdda_csi0_1p25:
476		vdda_csi1_1p25:
477		vdda_csi2_1p25:
478		vdda_csi3_1p25:
479		vdda_hv_ebi0:
480		vdda_mipi_dsi0_1p2:
481		vdda_usb_ss_dp_1p2:
482		vddpx_10:
483		pp1200_l3c: ldo3 {
484			regulator-min-microvolt = <1200000>;
485			regulator-max-microvolt = <1200000>;
486			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
487		};
488
489		vddpx_2:
490		ppvar_l6c: ldo6 {
491			regulator-min-microvolt = <1800000>;
492			regulator-max-microvolt = <2952000>;
493			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
494		};
495
496		pp3300_l7c: ldo7 {
497			regulator-min-microvolt = <3304000>;
498			regulator-max-microvolt = <3304000>;
499			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
500		};
501
502		pp1800_brij_vccio:
503		pp1800_edp_vpll:
504		pp1800_l8c: ldo8 {
505			regulator-min-microvolt = <1800000>;
506			regulator-max-microvolt = <1800000>;
507			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
508		};
509
510		pp2950_l9c: ldo9 {
511			regulator-min-microvolt = <2952000>;
512			regulator-max-microvolt = <2952000>;
513			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
514		};
515
516		pp3300_l10c: ldo10 {
517			regulator-min-microvolt = <3000000>;
518			regulator-max-microvolt = <3400000>;
519			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
520		};
521
522		pp3300_l11c: ldo11 {
523			regulator-min-microvolt = <3000000>;
524			regulator-max-microvolt = <3400000>;
525			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
526		};
527
528		src_vreg_bob: bob {
529			regulator-min-microvolt = <3008000>;
530			regulator-max-microvolt = <3960000>;
531			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
532		};
533	};
534};
535
536&ap_ec_spi {
537	status = "okay";
538	cros_ec: ec@0 {
539		compatible = "google,cros-ec-spi";
540		reg = <0>;
541		interrupt-parent = <&tlmm>;
542		interrupts = <94 IRQ_TYPE_LEVEL_LOW>;
543		pinctrl-names = "default";
544		pinctrl-0 = <&ap_ec_int_l>;
545		spi-max-frequency = <3000000>;
546
547		cros_ec_pwm: ec-pwm {
548			compatible = "google,cros-ec-pwm";
549			#pwm-cells = <1>;
550		};
551
552		i2c_tunnel: i2c-tunnel {
553			compatible = "google,cros-ec-i2c-tunnel";
554			google,remote-bus = <0>;
555			#address-cells = <1>;
556			#size-cells = <0>;
557		};
558
559		typec {
560			compatible = "google,cros-ec-typec";
561			#address-cells = <1>;
562			#size-cells = <0>;
563
564			usb_c0: connector@0 {
565				compatible = "usb-c-connector";
566				reg = <0>;
567				label = "left";
568				power-role = "dual";
569				data-role = "host";
570				try-power-role = "source";
571			};
572
573			usb_c1: connector@1 {
574				compatible = "usb-c-connector";
575				reg = <1>;
576				label = "right";
577				power-role = "dual";
578				data-role = "host";
579				try-power-role = "source";
580			};
581		};
582	};
583};
584
585&ap_h1_spi {
586	status = "okay";
587	cr50: tpm@0 {
588		compatible = "google,cr50";
589		reg = <0>;
590		pinctrl-names = "default";
591		pinctrl-0 = <&h1_ap_int_odl>;
592		spi-max-frequency = <800000>;
593		interrupt-parent = <&tlmm>;
594		interrupts = <42 IRQ_TYPE_EDGE_RISING>;
595	};
596};
597
598&camcc {
599	status = "disabled";
600};
601
602&dsi0 {
603	status = "okay";
604	vdda-supply = <&vdda_mipi_dsi0_1p2>;
605
606	ports {
607		port@1 {
608			endpoint {
609				remote-endpoint = <&sn65dsi86_in>;
610				data-lanes = <0 1 2 3>;
611			};
612		};
613	};
614};
615
616&dsi_phy {
617	status = "okay";
618	vdds-supply = <&vdda_mipi_dsi0_pll>;
619};
620
621edp_brij_i2c: &i2c2 {
622	status = "okay";
623	clock-frequency = <400000>;
624
625	sn65dsi86_bridge: bridge@2d {
626		compatible = "ti,sn65dsi86";
627		reg = <0x2d>;
628		pinctrl-names = "default";
629		pinctrl-0 = <&edp_brij_en>, <&edp_brij_irq>;
630		gpio-controller;
631		#gpio-cells = <2>;
632
633		interrupt-parent = <&tlmm>;
634		interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
635
636		enable-gpios = <&tlmm 104 GPIO_ACTIVE_HIGH>;
637
638		vpll-supply = <&pp1800_edp_vpll>;
639		vccio-supply = <&pp1800_brij_vccio>;
640		vcca-supply = <&pp1200_brij>;
641		vcc-supply = <&pp1200_brij>;
642
643		clocks = <&rpmhcc RPMH_LN_BB_CLK3>;
644		clock-names = "refclk";
645
646		no-hpd;
647
648		ports {
649			#address-cells = <1>;
650			#size-cells = <0>;
651
652			port@0 {
653				reg = <0>;
654				sn65dsi86_in: endpoint {
655					remote-endpoint = <&dsi0_out>;
656				};
657			};
658
659			port@1 {
660				reg = <1>;
661				sn65dsi86_out: endpoint {
662					data-lanes = <0 1>;
663					remote-endpoint = <&panel_in_edp>;
664				};
665			};
666		};
667
668		aux-bus {
669			panel: panel {
670				/* Compatible will be filled in per-board */
671				power-supply = <&pp3300_dx_edp>;
672				backlight = <&backlight>;
673				hpd-gpios = <&sn65dsi86_bridge 2 GPIO_ACTIVE_HIGH>;
674
675				port {
676					panel_in_edp: endpoint {
677						remote-endpoint = <&sn65dsi86_out>;
678					};
679				};
680			};
681		};
682	};
683};
684
685ap_sar_sensor_i2c: &i2c5 {
686	clock-frequency = <400000>;
687
688	ap_sar_sensor: proximity@28 {
689		compatible = "semtech,sx9310";
690		reg = <0x28>;
691		#io-channel-cells = <1>;
692		pinctrl-names = "default";
693		pinctrl-0 = <&p_sensor_int_l>;
694
695		interrupt-parent = <&tlmm>;
696		interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
697
698		vdd-supply = <&pp3300_a>;
699		svdd-supply = <&pp1800_prox>;
700
701		status = "disabled";
702		label = "proximity-wifi";
703	};
704};
705
706ap_tp_i2c: &i2c7 {
707	status = "okay";
708	clock-frequency = <400000>;
709
710	trackpad: trackpad@15 {
711		compatible = "elan,ekth3000";
712		reg = <0x15>;
713		pinctrl-names = "default";
714		pinctrl-0 = <&tp_int_odl>;
715
716		interrupt-parent = <&tlmm>;
717		interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
718
719		vcc-supply = <&pp3300_fp_tp>;
720
721		wakeup-source;
722	};
723};
724
725hp_i2c: &i2c9 {
726	status = "okay";
727	clock-frequency = <400000>;
728
729	alc5682: codec@1a {
730		compatible = "realtek,rt5682i";
731		reg = <0x1a>;
732		pinctrl-names = "default";
733		pinctrl-0 = <&hp_irq>;
734
735		#sound-dai-cells = <1>;
736
737		interrupt-parent = <&tlmm>;
738		/*
739		 * This will get ignored because the interrupt type
740		 * is set in rt5682.c.
741		 */
742		interrupts = <28 IRQ_TYPE_EDGE_BOTH>;
743
744		AVDD-supply = <&pp1800_alc5682>;
745		MICVDD-supply = <&pp3300_codec>;
746		VBAT-supply = <&pp3300_audio>;
747
748		realtek,dmic1-data-pin = <1>;
749		realtek,dmic1-clk-pin = <1>;
750		realtek,jd-src = <1>;
751	};
752};
753
754&ipa {
755	status = "okay";
756
757	/*
758	 * Trogdor doesn't have QHEE (Qualcomm's EL2 blob), so the
759	 * modem needs to cover certain init steps (GSI init), and
760	 * the AP needs to wait for it.
761	 */
762	modem-init;
763};
764
765&lpass_cpu {
766	status = "okay";
767
768	pinctrl-names = "default";
769	pinctrl-0 = <&sec_mi2s_active>, <&pri_mi2s_active>, <&pri_mi2s_mclk_active>;
770
771	#address-cells = <1>;
772	#size-cells = <0>;
773
774	mi2s@0 {
775		reg = <MI2S_PRIMARY>;
776		qcom,playback-sd-lines = <1>;
777		qcom,capture-sd-lines = <0>;
778	};
779
780	secondary_mi2s: mi2s@1 {
781		reg = <MI2S_SECONDARY>;
782		qcom,playback-sd-lines = <0>;
783	};
784
785	hdmi-primary@0 {
786		reg = <LPASS_DP_RX>;
787	};
788};
789
790&mdp {
791	status = "okay";
792};
793
794&mdss {
795	status = "okay";
796};
797
798&mdss_dp {
799	status = "okay";
800	pinctrl-names = "default";
801	pinctrl-0 = <&dp_hot_plug_det>;
802	data-lanes = <0 1>;
803	vdda-1p2-supply = <&vdda_usb_ss_dp_1p2>;
804	vdda-0p9-supply = <&vdda_usb_ss_dp_core>;
805};
806
807&pm6150_adc {
808	charger-thermistor@4f {
809		reg = <ADC5_AMUX_THM3_100K_PU>;
810		qcom,ratiometric;
811		qcom,hw-settle-time = <200>;
812	};
813};
814
815&pm6150_adc_tm {
816	status = "okay";
817
818	charger-thermistor@0 {
819		reg = <0>;
820		io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
821		qcom,ratiometric;
822		qcom,hw-settle-time-us = <200>;
823	};
824};
825
826&pm6150_pon {
827	status = "disabled";
828};
829
830&qupv3_id_0 {
831	status = "okay";
832};
833
834&qupv3_id_1 {
835	status = "okay";
836};
837
838&remoteproc_mpss {
839	status = "okay";
840	compatible = "qcom,sc7180-mss-pil";
841	iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
842	memory-region = <&mba_mem &mpss_mem>;
843
844	/* This gets overridden for SKUs with LTE support. */
845	firmware-name = "qcom/sc7180-trogdor/modem-nolte/mba.mbn",
846			"qcom/sc7180-trogdor/modem-nolte/qdsp6sw.mbn";
847};
848
849&sdhc_1 {
850	status = "okay";
851
852	pinctrl-names = "default", "sleep";
853	pinctrl-0 = <&sdc1_on>;
854	pinctrl-1 = <&sdc1_off>;
855	vmmc-supply = <&mcp_vcc>;
856	vqmmc-supply = <&mcp_vccq>;
857};
858
859&sdhc_2 {
860	pinctrl-names = "default", "sleep";
861	pinctrl-0 = <&sdc2_on>;
862	pinctrl-1 = <&sdc2_off>;
863	vmmc-supply = <&pp2950_l9c>;
864	vqmmc-supply = <&ppvar_l6c>;
865
866	cd-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
867};
868
869&spi0 {
870	pinctrl-0 = <&qup_spi0_cs_gpio_init_high>, <&qup_spi0_cs_gpio>;
871	cs-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
872};
873
874&spi6 {
875	pinctrl-0 = <&qup_spi6_cs_gpio_init_high>, <&qup_spi6_cs_gpio>;
876	cs-gpios = <&tlmm 62 GPIO_ACTIVE_LOW>;
877};
878
879ap_spi_fp: &spi10 {
880	pinctrl-0 = <&qup_spi10_cs_gpio_init_high>, <&qup_spi10_cs_gpio>;
881	cs-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
882
883	cros_ec_fp: ec@0 {
884		compatible = "google,cros-ec-spi";
885		reg = <0>;
886		interrupt-parent = <&tlmm>;
887		interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
888		pinctrl-names = "default";
889		pinctrl-0 = <&fp_to_ap_irq_l>;
890		spi-max-frequency = <3000000>;
891	};
892};
893
894#include <arm/cros-ec-keyboard.dtsi>
895#include <arm/cros-ec-sbs.dtsi>
896
897&uart3 {
898	status = "okay";
899
900	/delete-property/interrupts;
901	interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
902				<&tlmm 41 IRQ_TYPE_EDGE_FALLING>;
903
904	pinctrl-names = "default", "sleep";
905	pinctrl-1 = <&qup_uart3_sleep>;
906
907	bluetooth: bluetooth {
908		compatible = "qcom,wcn3991-bt";
909		vddio-supply = <&pp1800_l10a>;
910		vddxo-supply = <&pp1800_l1c>;
911		vddrf-supply = <&pp1300_l2c>;
912		vddch0-supply = <&pp3300_l10c>;
913		max-speed = <3200000>;
914	};
915};
916
917&uart8 {
918	status = "okay";
919};
920
921&usb_1 {
922	status = "okay";
923};
924
925&usb_1_dwc3 {
926	dr_mode = "host";
927};
928
929&usb_1_hsphy {
930	status = "okay";
931	vdd-supply = <&vdd_qusb_hs0_core>;
932	vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
933	vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
934	qcom,imp-res-offset-value = <8>;
935	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_15_PERCENT>;
936	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
937	qcom,bias-ctrl-value = <0x22>;
938	qcom,charge-ctrl-value = <3>;
939	qcom,hsdisc-trim-value = <0>;
940};
941
942&usb_1_qmpphy {
943	status = "okay";
944	vdda-phy-supply = <&vdda_usb_ss_dp_1p2>;
945	vdda-pll-supply = <&vdda_usb_ss_dp_core>;
946};
947
948&venus {
949	video-firmware {
950		iommus = <&apps_smmu 0x0c42 0x0>;
951	};
952};
953
954&wifi {
955	status = "okay";
956	vdd-0.8-cx-mx-supply = <&vdd_cx_wlan>;
957	vdd-1.8-xo-supply = <&pp1800_l1c>;
958	vdd-1.3-rfa-supply = <&pp1300_l2c>;
959	vdd-3.3-ch0-supply = <&pp3300_l10c>;
960	vdd-3.3-ch1-supply = <&pp3300_l11c>;
961
962	wifi-firmware {
963		iommus = <&apps_smmu 0xc2 0x1>;
964	};
965};
966
967/* PINCTRL - additions to nodes defined in sc7180.dtsi */
968
969&dp_hot_plug_det {
970	pinconf {
971		pins = "gpio117";
972		bias-disable;
973	};
974};
975
976&pri_mi2s_active {
977	pinconf {
978		pins = "gpio53", "gpio54", "gpio55", "gpio56";
979		drive-strength = <2>;
980		bias-pull-down;
981	};
982};
983
984&pri_mi2s_mclk_active {
985	pinconf {
986		pins = "gpio57";
987		drive-strength = <2>;
988		bias-pull-down;
989	};
990};
991
992&qspi_cs0 {
993	pinconf {
994		pins = "gpio68";
995		bias-disable;
996	};
997};
998
999&qspi_clk {
1000	pinconf {
1001		pins = "gpio63";
1002		drive-strength = <8>;
1003		bias-disable;
1004	};
1005};
1006
1007&qspi_data01 {
1008	pinconf {
1009		pins = "gpio64", "gpio65";
1010
1011		/* High-Z when no transfers; nice to park the lines */
1012		bias-pull-up;
1013	};
1014};
1015
1016&qup_i2c2_default {
1017	pinconf {
1018		pins = "gpio15", "gpio16";
1019		drive-strength = <2>;
1020
1021		/* Has external pullup */
1022		bias-disable;
1023	};
1024};
1025
1026&qup_i2c4_default {
1027	pinconf {
1028		pins = "gpio115", "gpio116";
1029		drive-strength = <2>;
1030
1031		/* Has external pullup */
1032		bias-disable;
1033	};
1034};
1035
1036&qup_i2c5_default {
1037	pinconf {
1038		pins = "gpio25", "gpio26";
1039		drive-strength = <2>;
1040
1041		/* Has external pullup */
1042		bias-disable;
1043	};
1044};
1045
1046&qup_i2c7_default {
1047	pinconf {
1048		pins = "gpio6", "gpio7";
1049		drive-strength = <2>;
1050
1051		/* Has external pullup */
1052		bias-disable;
1053	};
1054};
1055
1056&qup_i2c9_default {
1057	pinconf {
1058		pins = "gpio46", "gpio47";
1059		drive-strength = <2>;
1060
1061		/* Has external pullup */
1062		bias-disable;
1063	};
1064};
1065
1066&qup_spi0_cs_gpio {
1067	pinconf {
1068		pins = "gpio34", "gpio35", "gpio36", "gpio37";
1069		drive-strength = <2>;
1070		bias-disable;
1071	};
1072};
1073
1074&qup_spi6_cs_gpio {
1075	pinconf {
1076		pins = "gpio59", "gpio60", "gpio61", "gpio62";
1077		drive-strength = <2>;
1078		bias-disable;
1079	};
1080};
1081
1082&qup_spi10_cs_gpio {
1083	pinconf {
1084		pins = "gpio86", "gpio87", "gpio88", "gpio89";
1085		drive-strength = <2>;
1086		bias-disable;
1087	};
1088};
1089
1090&qup_uart3_default {
1091	pinconf-cts {
1092		/*
1093		 * Configure a pull-down on CTS to match the pull of
1094		 * the Bluetooth module.
1095		 */
1096		pins = "gpio38";
1097		bias-pull-down;
1098	};
1099
1100	pinconf-rts-tx {
1101		/* We'll drive RTS and TX, so no pull */
1102		pins = "gpio39", "gpio40";
1103		drive-strength = <2>;
1104		bias-disable;
1105	};
1106
1107	pinconf-rx {
1108		/*
1109		 * Configure a pull-up on RX. This is needed to avoid
1110		 * garbage data when the TX pin of the Bluetooth module is
1111		 * in tri-state (module powered off or not driving the
1112		 * signal yet).
1113		 */
1114		pins = "gpio41";
1115		bias-pull-up;
1116	};
1117};
1118
1119&qup_uart8_default {
1120	pinconf-tx {
1121		pins = "gpio44";
1122		drive-strength = <2>;
1123		bias-disable;
1124	};
1125
1126	pinconf-rx {
1127		pins = "gpio45";
1128		drive-strength = <2>;
1129		bias-pull-up;
1130	};
1131};
1132
1133&sec_mi2s_active {
1134	pinconf {
1135		pins = "gpio49", "gpio50", "gpio51";
1136		drive-strength = <2>;
1137		bias-pull-down;
1138	};
1139};
1140
1141/* PINCTRL - board-specific pinctrl */
1142
1143&pm6150_gpio {
1144	status = "disabled"; /* No GPIOs are connected */
1145};
1146
1147&pm6150l_gpio {
1148	gpio-line-names = "AP_SUSPEND",
1149			  "",
1150			  "",
1151			  "",
1152			  "",
1153			  "",
1154			  "",
1155			  "",
1156			  "",
1157			  "",
1158			  "",
1159			  "";
1160};
1161
1162&tlmm {
1163	/*
1164	 * pinctrl settings for pins that have no real owners.
1165	 */
1166	pinctrl-names = "default";
1167	pinctrl-0 = <&bios_flash_wp_l>, <&ap_suspend_l_neuter>;
1168
1169	amp_en: amp-en {
1170		pinmux {
1171			pins = "gpio23";
1172			function = "gpio";
1173		};
1174
1175		pinconf {
1176			pins = "gpio23";
1177			bias-pull-down;
1178		};
1179	};
1180
1181	ap_ec_int_l: ap-ec-int-l {
1182		pinmux {
1183			pins = "gpio94";
1184			function = "gpio";
1185			input-enable;
1186		};
1187
1188		pinconf {
1189			pins = "gpio94";
1190			bias-pull-up;
1191		};
1192	};
1193
1194	ap_edp_bklten: ap-edp-bklten {
1195		pinmux {
1196			pins = "gpio12";
1197			function = "gpio";
1198		};
1199
1200		pinconf {
1201			pins = "gpio12";
1202			drive-strength = <2>;
1203			bias-disable;
1204
1205			/* Force backlight to be disabled to match state at boot. */
1206			output-low;
1207		};
1208	};
1209
1210	ap_suspend_l_neuter: ap-suspend-l-neuter {
1211		pinmux  {
1212			pins = "gpio27";
1213			function = "gpio";
1214		};
1215
1216		pinconf {
1217			pins = "gpio27";
1218			bias-disable;
1219		};
1220	};
1221
1222	bios_flash_wp_l: bios-flash-wp-l {
1223		pinmux {
1224			pins = "gpio66";
1225			function = "gpio";
1226			input-enable;
1227		};
1228
1229		pinconf {
1230			pins = "gpio66";
1231			bias-disable;
1232		};
1233	};
1234
1235	edp_brij_en: edp-brij-en {
1236		pinmux {
1237			pins = "gpio104";
1238			function = "gpio";
1239		};
1240
1241		pinconf {
1242			pins = "gpio104";
1243			drive-strength = <2>;
1244			bias-disable;
1245		};
1246	};
1247
1248	edp_brij_irq: edp-brij-irq {
1249		pinmux {
1250			pins = "gpio11";
1251			function = "gpio";
1252		};
1253
1254		pinconf {
1255			pins = "gpio11";
1256			drive-strength = <2>;
1257			bias-pull-down;
1258		};
1259	};
1260
1261	en_pp3300_codec: en-pp3300-codec {
1262		pinmux {
1263			pins = "gpio83";
1264			function = "gpio";
1265		};
1266
1267		pinconf {
1268			pins = "gpio83";
1269			drive-strength = <2>;
1270			bias-disable;
1271		};
1272	};
1273
1274	en_pp3300_dx_edp: en-pp3300-dx-edp {
1275		pinmux {
1276			pins = "gpio30";
1277			function = "gpio";
1278		};
1279
1280		pinconf {
1281			pins = "gpio30";
1282			drive-strength = <2>;
1283			bias-disable;
1284		};
1285	};
1286
1287	en_pp3300_hub: en-pp3300-hub {
1288		pinmux {
1289			pins = "gpio84";
1290			function = "gpio";
1291		};
1292
1293		pinconf {
1294			pins = "gpio84";
1295			drive-strength = <2>;
1296			bias-disable;
1297		};
1298	};
1299
1300	fp_to_ap_irq_l: fp-to-ap-irq-l {
1301		pinmux {
1302			pins = "gpio4";
1303			function = "gpio";
1304			input-enable;
1305		};
1306
1307		pinconf {
1308			pins = "gpio4";
1309
1310			/* Has external pullup */
1311			bias-disable;
1312		};
1313	};
1314
1315	h1_ap_int_odl: h1-ap-int-odl {
1316		pinmux {
1317			pins = "gpio42";
1318			function = "gpio";
1319			input-enable;
1320		};
1321
1322		pinconf {
1323			pins = "gpio42";
1324			bias-pull-up;
1325		};
1326	};
1327
1328	hp_irq: hp-irq {
1329		pinmux {
1330			pins = "gpio28";
1331			function = "gpio";
1332		};
1333
1334		pinconf {
1335			pins = "gpio28";
1336			bias-pull-up;
1337		};
1338	};
1339
1340	pen_irq_l: pen-irq-l {
1341		pinmux {
1342			pins = "gpio21";
1343			function = "gpio";
1344		};
1345
1346		pinconf {
1347			pins = "gpio21";
1348
1349			/* Has external pullup */
1350			bias-disable;
1351		};
1352	};
1353
1354	pen_pdct_l: pen-pdct-l {
1355		pinmux {
1356			pins = "gpio52";
1357			function = "gpio";
1358		};
1359
1360		pinconf {
1361			pins = "gpio52";
1362
1363			/* Has external pullup */
1364			bias-disable;
1365		};
1366	};
1367
1368	pen_rst_odl: pen-rst-odl {
1369		pinmux  {
1370			pins = "gpio18";
1371			function = "gpio";
1372		};
1373
1374		pinconf {
1375			pins = "gpio18";
1376			bias-disable;
1377			drive-strength = <2>;
1378
1379			/*
1380			 * The pen driver doesn't currently support
1381			 * driving this reset line.  By specifying
1382			 * output-high here we're relying on the fact
1383			 * that this pin has a default pulldown at boot
1384			 * (which makes sure the pen was in reset if it
1385			 * was powered) and then we set it high here to
1386			 * take it out of reset.  Better would be if the
1387			 * pen driver could control this and we could
1388			 * remove "output-high" here.
1389			 */
1390			output-high; /* TODO: Remove this? */
1391		};
1392	};
1393
1394	p_sensor_int_l: p-sensor-int-l {
1395		pinmux {
1396			pins = "gpio24";
1397			function = "gpio";
1398			input-enable;
1399		};
1400
1401		pinconf {
1402			pins = "gpio24";
1403			/* Has external pullup */
1404			bias-disable;
1405		};
1406	};
1407
1408	qup_spi0_cs_gpio_init_high: qup-spi0-cs-gpio-init-high {
1409		pinconf {
1410			pins = "gpio37";
1411			output-high;
1412		};
1413	};
1414
1415	qup_spi6_cs_gpio_init_high: qup-spi6-cs-gpio-init-high {
1416		pinconf {
1417			pins = "gpio62";
1418			output-high;
1419		};
1420	};
1421
1422	qup_spi10_cs_gpio_init_high: qup-spi10-cs-gpio-init-high {
1423		pinconf {
1424			pins = "gpio89";
1425			output-high;
1426		};
1427	};
1428
1429	qup_uart3_sleep: qup-uart3-sleep {
1430		pinmux {
1431			pins = "gpio38", "gpio39",
1432			       "gpio40", "gpio41";
1433			function = "gpio";
1434		};
1435
1436		pinconf-cts {
1437			/*
1438			 * Configure a pull-down on CTS to match the pull of
1439			 * the Bluetooth module.
1440			 */
1441			pins = "gpio38";
1442			bias-pull-down;
1443		};
1444
1445		pinconf-rts {
1446			/*
1447			 * Configure pull-down on RTS. As RTS is active low
1448			 * signal, pull it low to indicate the BT SoC that it
1449			 * can wakeup the system anytime from suspend state by
1450			 * pulling RX low (by sending wakeup bytes).
1451			 */
1452			 pins = "gpio39";
1453			 bias-pull-down;
1454		};
1455
1456		pinconf-tx {
1457			/*
1458			 * Configure pull-up on TX when it isn't actively driven
1459			 * to prevent BT SoC from receiving garbage during sleep.
1460			 */
1461			pins = "gpio40";
1462			bias-pull-up;
1463		};
1464
1465		pinconf-rx {
1466			/*
1467			 * Configure a pull-up on RX. This is needed to avoid
1468			 * garbage data when the TX pin of the Bluetooth module
1469			 * is floating which may cause spurious wakeups.
1470			 */
1471			pins = "gpio41";
1472			bias-pull-up;
1473		};
1474	};
1475
1476	/* Named trackpad_int_1v8_odl on earlier revision schematics */
1477	trackpad_int_1v8_odl:
1478	tp_int_odl: tp-int-odl {
1479		pinmux {
1480			pins = "gpio0";
1481			function = "gpio";
1482		};
1483
1484		pinconf {
1485			pins = "gpio0";
1486
1487			/* Has external pullup */
1488			bias-disable;
1489		};
1490	};
1491
1492	ts_int_l: ts-int-l {
1493		pinmux  {
1494			pins = "gpio9";
1495			function = "gpio";
1496		};
1497
1498		pinconf {
1499			pins = "gpio9";
1500			bias-pull-up;
1501		};
1502	};
1503
1504	ts_reset_l: ts-reset-l {
1505		pinmux  {
1506			pins = "gpio8";
1507			function = "gpio";
1508		};
1509
1510		pinconf {
1511			pins = "gpio8";
1512			bias-disable;
1513			drive-strength = <2>;
1514		};
1515	};
1516
1517	sdc1_on: sdc1-on {
1518		pinconf-clk {
1519			pins = "sdc1_clk";
1520			bias-disable;
1521			drive-strength = <16>;
1522		};
1523
1524		pinconf-cmd {
1525			pins = "sdc1_cmd";
1526			bias-pull-up;
1527			drive-strength = <10>;
1528		};
1529
1530		pinconf-data {
1531			pins = "sdc1_data";
1532			bias-pull-up;
1533			drive-strength = <10>;
1534		};
1535
1536		pinconf-rclk {
1537			pins = "sdc1_rclk";
1538			bias-pull-down;
1539		};
1540	};
1541
1542	sdc1_off: sdc1-off {
1543		pinconf-clk {
1544			pins = "sdc1_clk";
1545			bias-disable;
1546			drive-strength = <2>;
1547		};
1548
1549		pinconf-cmd {
1550			pins = "sdc1_cmd";
1551			bias-pull-up;
1552			drive-strength = <2>;
1553		};
1554
1555		pinconf-data {
1556			pins = "sdc1_data";
1557			bias-pull-up;
1558			drive-strength = <2>;
1559		};
1560
1561		pinconf-rclk {
1562			pins = "sdc1_rclk";
1563			bias-pull-down;
1564		};
1565	};
1566
1567	sdc2_on: sdc2-on {
1568		pinconf-clk {
1569			pins = "sdc2_clk";
1570			bias-disable;
1571			drive-strength = <16>;
1572		};
1573
1574		pinconf-cmd {
1575			pins = "sdc2_cmd";
1576			bias-pull-up;
1577			drive-strength = <10>;
1578		};
1579
1580		pinconf-data {
1581			pins = "sdc2_data";
1582			bias-pull-up;
1583			drive-strength = <10>;
1584		};
1585
1586		pinconf-sd-cd {
1587			pins = "gpio69";
1588			bias-pull-up;
1589			drive-strength = <2>;
1590		};
1591	};
1592
1593	sdc2_off: sdc2-off {
1594		pinconf-clk {
1595			pins = "sdc2_clk";
1596			bias-disable;
1597			drive-strength = <2>;
1598		};
1599
1600		pinconf-cmd {
1601			pins = "sdc2_cmd";
1602			bias-pull-up;
1603			drive-strength = <2>;
1604		};
1605
1606		pinconf-data {
1607			pins = "sdc2_data";
1608			bias-pull-up;
1609			drive-strength = <2>;
1610		};
1611
1612		pinconf-sd-cd {
1613			pins = "gpio69";
1614			bias-pull-up;
1615			drive-strength = <2>;
1616		};
1617	};
1618};
1619