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