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