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
708&dsi0 {
709	status = "okay";
710	vdda-supply = <&vdda_mipi_dsi0_1p2>;
711};
712
713&dsi0_out {
714	data-lanes = <0 1 2 3>;
715};
716
717&dsi_phy {
718	status = "okay";
719	vdds-supply = <&vdda_mipi_dsi0_pll>;
720};
721
722ap_sar_sensor_i2c: &i2c5 {
723	clock-frequency = <400000>;
724
725	ap_sar_sensor: proximity@28 {
726		compatible = "semtech,sx9310";
727		reg = <0x28>;
728		#io-channel-cells = <1>;
729		pinctrl-names = "default";
730		pinctrl-0 = <&p_sensor_int_l>;
731
732		interrupt-parent = <&tlmm>;
733		interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
734
735		vdd-supply = <&pp3300_a>;
736		svdd-supply = <&pp1800_prox>;
737
738		label = "proximity-wifi";
739	};
740};
741
742ap_tp_i2c: &i2c7 {
743	clock-frequency = <400000>;
744
745	trackpad: trackpad@15 {
746		compatible = "elan,ekth3000";
747		reg = <0x15>;
748		pinctrl-names = "default";
749		pinctrl-0 = <&tp_int_odl>;
750
751		interrupt-parent = <&tlmm>;
752		interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
753
754		vcc-supply = <&pp3300_fp_tp>;
755
756		wakeup-source;
757	};
758};
759
760hp_i2c: &i2c9 {
761	status = "okay";
762	clock-frequency = <400000>;
763
764	alc5682: codec@1a {
765		compatible = "realtek,rt5682i";
766		reg = <0x1a>;
767		pinctrl-names = "default";
768		pinctrl-0 = <&hp_irq>;
769
770		#sound-dai-cells = <1>;
771
772		interrupt-parent = <&tlmm>;
773		/*
774		 * This will get ignored because the interrupt type
775		 * is set in rt5682.c.
776		 */
777		interrupts = <28 IRQ_TYPE_EDGE_BOTH>;
778
779		AVDD-supply = <&pp1800_alc5682>;
780		DBVDD-supply = <&pp1800_alc5682>;
781		LDO1-IN-supply = <&pp1800_alc5682>;
782		MICVDD-supply = <&pp3300_codec>;
783		VBAT-supply = <&pp3300_audio>;
784
785		realtek,dmic1-data-pin = <1>;
786		realtek,dmic1-clk-pin = <1>;
787		realtek,jd-src = <1>;
788	};
789};
790
791&lpass_cpu {
792	status = "okay";
793
794	pinctrl-names = "default";
795	pinctrl-0 = <&sec_mi2s_active>, <&pri_mi2s_active>, <&pri_mi2s_mclk_active>;
796
797	#address-cells = <1>;
798	#size-cells = <0>;
799
800	dai-link@0 {
801		reg = <MI2S_PRIMARY>;
802		qcom,playback-sd-lines = <1>;
803		qcom,capture-sd-lines = <0>;
804	};
805
806	secondary_mi2s: dai-link@1 {
807		reg = <MI2S_SECONDARY>;
808		qcom,playback-sd-lines = <0>;
809	};
810
811	dai-link@5 {
812		reg = <LPASS_DP_RX>;
813	};
814};
815
816&mdp {
817	status = "okay";
818};
819
820&mdss {
821	status = "okay";
822};
823
824&mdss_dp {
825	status = "okay";
826	pinctrl-names = "default";
827	pinctrl-0 = <&dp_hot_plug_det>;
828};
829
830&mdss_dp_out {
831	data-lanes = <0 1>;
832	link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000>;
833};
834
835&pm6150_adc {
836	charger-thermistor@4f {
837		reg = <ADC5_AMUX_THM3_100K_PU>;
838		qcom,ratiometric;
839		qcom,hw-settle-time = <200>;
840	};
841};
842
843&pm6150_adc_tm {
844	status = "okay";
845
846	charger-thermistor@0 {
847		reg = <0>;
848		io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
849		qcom,ratiometric;
850		qcom,hw-settle-time-us = <200>;
851	};
852};
853
854&pm6150_pon {
855	status = "disabled";
856};
857
858&qupv3_id_0 {
859	status = "okay";
860};
861
862&qupv3_id_1 {
863	status = "okay";
864};
865
866&remoteproc_mpss {
867	status = "okay";
868	compatible = "qcom,sc7180-mss-pil";
869	reg = <0 0x04080000 0 0x4040>, <0 0x04180000 0 0x48>;
870	reg-names = "qdsp6", "rmb";
871
872	clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
873		 <&gcc GCC_MSS_Q6_MEMNOC_AXI_CLK>,
874		 <&gcc GCC_MSS_NAV_AXI_CLK>,
875		 <&gcc GCC_MSS_SNOC_AXI_CLK>,
876		 <&gcc GCC_MSS_MFAB_AXIS_CLK>,
877		 <&rpmhcc RPMH_CXO_CLK>;
878	clock-names = "iface", "bus", "nav", "snoc_axi", "mnoc_axi", "xo";
879
880	iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
881	memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;
882
883	/* This gets overridden for SKUs with LTE support. */
884	firmware-name = "qcom/sc7180-trogdor/modem-nolte/mba.mbn",
885			"qcom/sc7180-trogdor/modem-nolte/qdsp6sw.mbn";
886
887	resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
888		 <&pdc_reset PDC_MODEM_SYNC_RESET>;
889	reset-names = "mss_restart", "pdc_reset";
890
891	qcom,halt-regs = <&tcsr_regs_1 0x3000 0x5000 0x4000>;
892	qcom,spare-regs = <&tcsr_regs_2 0xb3e4>;
893};
894
895&scm {
896	/* TF-A firmware maps memory cached so mark dma-coherent to match. */
897	dma-coherent;
898};
899
900&sdhc_1 {
901	status = "okay";
902
903	pinctrl-names = "default", "sleep";
904	pinctrl-0 = <&sdc1_on>;
905	pinctrl-1 = <&sdc1_off>;
906	vmmc-supply = <&mcp_vcc>;
907	vqmmc-supply = <&mcp_vccq>;
908};
909
910&sdhc_2 {
911	pinctrl-names = "default", "sleep";
912	pinctrl-0 = <&sdc2_on>;
913	pinctrl-1 = <&sdc2_off>;
914	vmmc-supply = <&pp2950_l9c>;
915	vqmmc-supply = <&ppvar_l6c>;
916
917	cd-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
918};
919
920&spi0 {
921	pinctrl-0 = <&qup_spi0_spi>, <&qup_spi0_cs_gpio>;
922	cs-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
923};
924
925&spi6 {
926	pinctrl-0 = <&qup_spi6_spi>, <&qup_spi6_cs_gpio>;
927	cs-gpios = <&tlmm 62 GPIO_ACTIVE_LOW>;
928};
929
930ap_spi_fp: &spi10 {
931	pinctrl-0 = <&qup_spi10_spi>, <&qup_spi10_cs_gpio>;
932	cs-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
933
934	cros_ec_fp: ec@0 {
935		compatible = "google,cros-ec-fp", "google,cros-ec-spi";
936		reg = <0>;
937		interrupt-parent = <&tlmm>;
938		interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
939		pinctrl-names = "default";
940		pinctrl-0 = <&fp_to_ap_irq_l>, <&fp_rst_l>, <&fpmcu_boot0>;
941		boot0-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
942		reset-gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
943		spi-max-frequency = <3000000>;
944		vdd-supply = <&pp3300_fp_tp>;
945	};
946};
947
948#include <arm/cros-ec-sbs.dtsi>
949
950&uart3 {
951	status = "okay";
952
953	/delete-property/interrupts;
954	interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
955				<&tlmm 41 IRQ_TYPE_EDGE_FALLING>;
956
957	pinctrl-names = "default", "sleep";
958	pinctrl-1 = <&qup_uart3_sleep>;
959
960	bluetooth: bluetooth {
961		compatible = "qcom,wcn3991-bt";
962		vddio-supply = <&pp1800_l10a>;
963		vddxo-supply = <&pp1800_l1c>;
964		vddrf-supply = <&pp1300_l2c>;
965		vddch0-supply = <&pp3300_l10c>;
966		max-speed = <3200000>;
967	};
968};
969
970&uart8 {
971	status = "okay";
972};
973
974&usb_1 {
975	status = "okay";
976};
977
978&usb_1_dwc3 {
979	dr_mode = "host";
980	#address-cells = <1>;
981	#size-cells = <0>;
982
983	/* 2.x hub on port 1 */
984	usb_hub_2_x: hub@1 {
985		compatible = "usbbda,5411";
986		reg = <1>;
987		vdd-supply = <&pp3300_hub>;
988		peer-hub = <&usb_hub_3_x>;
989	};
990
991	/* 3.x hub on port 2 */
992	usb_hub_3_x: hub@2 {
993		compatible = "usbbda,411";
994		reg = <2>;
995		vdd-supply = <&pp3300_hub>;
996		peer-hub = <&usb_hub_2_x>;
997	};
998};
999
1000&usb_1_hsphy {
1001	status = "okay";
1002	vdd-supply = <&vdd_qusb_hs0_core>;
1003	vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
1004	vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
1005	qcom,imp-res-offset-value = <8>;
1006	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_15_PERCENT>;
1007	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
1008	qcom,bias-ctrl-value = <0x22>;
1009	qcom,charge-ctrl-value = <3>;
1010	qcom,hsdisc-trim-value = <0>;
1011};
1012
1013&usb_1_qmpphy {
1014	status = "okay";
1015	vdda-phy-supply = <&vdda_usb_ss_dp_1p2>;
1016	vdda-pll-supply = <&vdda_usb_ss_dp_core>;
1017};
1018
1019&venus {
1020	video-firmware {
1021		iommus = <&apps_smmu 0x0c42 0x0>;
1022	};
1023};
1024
1025&wifi {
1026	status = "okay";
1027	vdd-0.8-cx-mx-supply = <&vdd_cx_wlan>;
1028	vdd-1.8-xo-supply = <&pp1800_l1c>;
1029	vdd-1.3-rfa-supply = <&pp1300_l2c>;
1030	vdd-3.3-ch0-supply = <&pp3300_l10c>;
1031	vdd-3.3-ch1-supply = <&pp3300_l11c>;
1032
1033	wifi-firmware {
1034		iommus = <&apps_smmu 0xc2 0x1>;
1035	};
1036};
1037
1038/* PINCTRL - additions to nodes defined in sc7180.dtsi */
1039
1040&dp_hot_plug_det {
1041	bias-disable;
1042};
1043
1044&pri_mi2s_active {
1045	drive-strength = <2>;
1046	bias-pull-down;
1047};
1048
1049&pri_mi2s_mclk_active {
1050	drive-strength = <2>;
1051	bias-pull-down;
1052};
1053
1054&qspi_cs0 {
1055	bias-disable;		/* External pullup */
1056};
1057
1058&qspi_clk {
1059	drive-strength = <8>;
1060	bias-disable;		/* Rely on Cr50 internal pulldown */
1061};
1062
1063&qspi_data0 {
1064	bias-disable;		/* Rely on Cr50 internal pulldown */
1065};
1066
1067&qspi_data1 {
1068	bias-pull-down;
1069};
1070
1071&qup_i2c2_default {
1072	drive-strength = <2>;
1073
1074	/* Has external pullup */
1075	bias-disable;
1076};
1077
1078&qup_i2c4_default {
1079	drive-strength = <2>;
1080
1081	/* Has external pullup */
1082	bias-disable;
1083};
1084
1085&qup_i2c5_default {
1086	drive-strength = <2>;
1087
1088	/* Has external pullup */
1089	bias-disable;
1090};
1091
1092&qup_i2c7_default {
1093	drive-strength = <2>;
1094
1095	/* Has external pullup */
1096	bias-disable;
1097};
1098
1099&qup_i2c9_default {
1100	drive-strength = <2>;
1101
1102	/* Has external pullup */
1103	bias-disable;
1104};
1105
1106&qup_spi0_spi {
1107	drive-strength = <2>;
1108	bias-disable;
1109};
1110
1111&qup_spi0_cs_gpio {
1112	drive-strength = <2>;
1113	bias-disable;
1114};
1115
1116&qup_spi6_spi {
1117	drive-strength = <2>;
1118	bias-disable;
1119};
1120
1121&qup_spi6_cs_gpio {
1122	drive-strength = <2>;
1123	bias-disable;
1124};
1125
1126&qup_spi10_spi {
1127	drive-strength = <2>;
1128	bias-disable;
1129};
1130
1131&qup_spi10_cs_gpio {
1132	drive-strength = <2>;
1133	bias-disable;
1134};
1135
1136&qup_uart3_cts {
1137	/*
1138	 * Configure a pull-down on CTS to match the pull of
1139	 * the Bluetooth module.
1140	 */
1141	bias-pull-down;
1142};
1143
1144&qup_uart3_rts {
1145	/* We'll drive RTS, so no pull */
1146	drive-strength = <2>;
1147	bias-disable;
1148};
1149
1150&qup_uart3_tx {
1151	/* We'll drive TX, so no pull */
1152	drive-strength = <2>;
1153	bias-disable;
1154};
1155
1156&qup_uart3_rx {
1157	/*
1158	 * Configure a pull-up on RX. This is needed to avoid
1159	 * garbage data when the TX pin of the Bluetooth module is
1160	 * in tri-state (module powered off or not driving the
1161	 * signal yet).
1162	 */
1163	bias-pull-up;
1164};
1165
1166&qup_uart8_tx {
1167	drive-strength = <2>;
1168	bias-disable;
1169};
1170
1171&qup_uart8_rx {
1172	drive-strength = <2>;
1173	bias-pull-up;
1174};
1175
1176&sec_mi2s_active {
1177	drive-strength = <2>;
1178	bias-pull-down;
1179};
1180
1181/* PINCTRL - board-specific pinctrl */
1182
1183&pm6150_gpios {
1184	status = "disabled"; /* No GPIOs are connected */
1185};
1186
1187&pm6150l_gpios {
1188	gpio-line-names = "AP_SUSPEND",
1189			  "",
1190			  "",
1191			  "",
1192			  "",
1193			  "",
1194			  "",
1195			  "",
1196			  "",
1197			  "",
1198			  "",
1199			  "";
1200};
1201
1202&tlmm {
1203	/*
1204	 * pinctrl settings for pins that have no real owners.
1205	 */
1206	pinctrl-names = "default";
1207	pinctrl-0 = <&bios_flash_wp_l>, <&ap_suspend_l_neuter>;
1208
1209	amp_en: amp-en-state {
1210		pins = "gpio23";
1211		function = "gpio";
1212		bias-pull-down;
1213	};
1214
1215	ap_ec_int_l: ap-ec-int-l-state {
1216		pins = "gpio94";
1217		function = "gpio";
1218		bias-pull-up;
1219	};
1220
1221	ap_edp_bklten: ap-edp-bklten-state {
1222		pins = "gpio12";
1223		function = "gpio";
1224		drive-strength = <2>;
1225		bias-disable;
1226
1227		/* Force backlight to be disabled to match state at boot. */
1228		output-low;
1229	};
1230
1231	ap_suspend_l_neuter: ap-suspend-l-neuter-state {
1232		pins = "gpio27";
1233		function = "gpio";
1234		bias-disable;
1235	};
1236
1237	bios_flash_wp_l: bios-flash-wp-l-state {
1238		pins = "gpio66";
1239		function = "gpio";
1240		bias-disable;
1241	};
1242
1243	edp_brij_en: edp-brij-en-state {
1244		pins = "gpio104";
1245		function = "gpio";
1246		drive-strength = <2>;
1247		bias-disable;
1248	};
1249
1250	en_pp3300_codec: en-pp3300-codec-state {
1251		pins = "gpio83";
1252		function = "gpio";
1253		drive-strength = <2>;
1254		bias-disable;
1255	};
1256
1257	en_pp3300_dx_edp: en-pp3300-dx-edp-state {
1258		pins = "gpio30";
1259		function = "gpio";
1260		drive-strength = <2>;
1261		bias-disable;
1262	};
1263
1264	en_pp3300_hub: en-pp3300-hub-state {
1265		pins = "gpio84";
1266		function = "gpio";
1267		drive-strength = <2>;
1268		bias-disable;
1269	};
1270
1271	fp_rst_l: fp-rst-l-state {
1272		pins = "gpio22";
1273		function = "gpio";
1274		bias-disable;
1275		drive-strength = <2>;
1276	};
1277
1278	fp_to_ap_irq_l: fp-to-ap-irq-l-state {
1279		pins = "gpio4";
1280		function = "gpio";
1281
1282		/* Has external pullup */
1283		bias-disable;
1284	};
1285
1286	fpmcu_boot0: fpmcu-boot0-state {
1287		pins = "gpio10";
1288		function = "gpio";
1289		bias-disable;
1290	};
1291
1292	h1_ap_int_odl: h1-ap-int-odl-state {
1293		pins = "gpio42";
1294		function = "gpio";
1295		bias-pull-up;
1296	};
1297
1298	hp_irq: hp-irq-state {
1299		pins = "gpio28";
1300		function = "gpio";
1301		bias-pull-up;
1302	};
1303
1304	pen_irq_l: pen-irq-l-state {
1305		pins = "gpio21";
1306		function = "gpio";
1307
1308		/* Has external pullup */
1309		bias-disable;
1310	};
1311
1312	pen_pdct_l: pen-pdct-l-state-state {
1313		pins = "gpio52";
1314		function = "gpio";
1315
1316		/* Has external pullup */
1317		bias-disable;
1318	};
1319
1320	pen_rst_odl: pen-rst-odl-state {
1321		pins = "gpio18";
1322		function = "gpio";
1323		bias-disable;
1324		drive-strength = <2>;
1325
1326		/*
1327		 * The pen driver doesn't currently support
1328		 * driving this reset line.  By specifying
1329		 * output-high here we're relying on the fact
1330		 * that this pin has a default pulldown at boot
1331		 * (which makes sure the pen was in reset if it
1332		 * was powered) and then we set it high here to
1333		 * take it out of reset.  Better would be if the
1334		 * pen driver could control this and we could
1335		 * remove "output-high" here.
1336		 */
1337		output-high; /* TODO: Remove this? */
1338	};
1339
1340	p_sensor_int_l: p-sensor-int-l-state {
1341		pins = "gpio24";
1342		function = "gpio";
1343
1344		/* Has external pullup */
1345		bias-disable;
1346	};
1347
1348	qspi_sleep: qspi-sleep-state {
1349		pins = "gpio63", "gpio64", "gpio65", "gpio68";
1350
1351		/*
1352		 * When we're not actively transferring we want pins as GPIOs
1353		 * with output disabled so that the quad SPI IP block stops
1354		 * driving them. We rely on the normal pulls configured in
1355		 * the active state and don't redefine them here. Also note
1356		 * that we don't need the reverse (output-enable) in the
1357		 * normal mode since the "output-enable" only matters for
1358		 * GPIO function.
1359		 */
1360		function = "gpio";
1361		output-disable;
1362	};
1363
1364	qup_uart3_sleep: qup-uart3-sleep-state {
1365		cts-pins {
1366			/*
1367			 * Configure a pull-down on CTS to match the pull of
1368			 * the Bluetooth module.
1369			 */
1370			pins = "gpio38";
1371			function = "gpio";
1372			bias-pull-down;
1373		};
1374
1375		rts-pins {
1376			/*
1377			 * Configure pull-down on RTS. As RTS is active low
1378			 * signal, pull it low to indicate the BT SoC that it
1379			 * can wakeup the system anytime from suspend state by
1380			 * pulling RX low (by sending wakeup bytes).
1381			 */
1382			pins = "gpio39";
1383			function = "gpio";
1384			bias-pull-down;
1385		};
1386
1387		tx-pins {
1388			/*
1389			 * Configure pull-up on TX when it isn't actively driven
1390			 * to prevent BT SoC from receiving garbage during sleep.
1391			 */
1392			pins = "gpio40";
1393			function = "gpio";
1394			bias-pull-up;
1395		};
1396
1397		rx-pins {
1398			/*
1399			 * Configure a pull-up on RX. This is needed to avoid
1400			 * garbage data when the TX pin of the Bluetooth module
1401			 * is floating which may cause spurious wakeups.
1402			 */
1403			pins = "gpio41";
1404			function = "gpio";
1405			bias-pull-up;
1406		};
1407	};
1408
1409	/* Named trackpad_int_1v8_odl on earlier revision schematics */
1410	trackpad_int_1v8_odl:
1411	tp_int_odl: tp-int-odl-state {
1412		pins = "gpio0";
1413		function = "gpio";
1414
1415		/* Has external pullup */
1416		bias-disable;
1417	};
1418
1419	ts_int_l: ts-int-l-state {
1420		pins = "gpio9";
1421		function = "gpio";
1422		bias-pull-up;
1423	};
1424
1425	ts_reset_l: ts-reset-l-state {
1426		pins = "gpio8";
1427		function = "gpio";
1428		bias-disable;
1429
1430		/*
1431		 * The reset GPIO to the touchscreen takes almost 2ms to drop
1432		 * at the default drive strength. When we bump it up to 8mA it
1433		 * falls in under 500us. We want this to be fast since the Elan
1434		 * datasheet (and any drivers written based on it) talk about using
1435		 * a 500 us reset pulse.
1436		 */
1437		drive-strength = <8>;
1438	};
1439
1440	sdc1_on: sdc1-on-state {
1441		clk-pins {
1442			pins = "sdc1_clk";
1443			bias-disable;
1444			drive-strength = <16>;
1445		};
1446
1447		cmd-pins {
1448			pins = "sdc1_cmd";
1449			bias-pull-up;
1450			drive-strength = <16>;
1451		};
1452
1453		data-pins {
1454			pins = "sdc1_data";
1455			bias-pull-up;
1456			drive-strength = <16>;
1457		};
1458
1459		rclk-pins {
1460			pins = "sdc1_rclk";
1461			bias-pull-down;
1462		};
1463	};
1464
1465	sdc1_off: sdc1-off-state {
1466		clk-pins {
1467			pins = "sdc1_clk";
1468			bias-disable;
1469			drive-strength = <2>;
1470		};
1471
1472		cmd-pins {
1473			pins = "sdc1_cmd";
1474			bias-pull-up;
1475			drive-strength = <2>;
1476		};
1477
1478		data-pins {
1479			pins = "sdc1_data";
1480			bias-pull-up;
1481			drive-strength = <2>;
1482		};
1483
1484		rclk-pins {
1485			pins = "sdc1_rclk";
1486			bias-pull-down;
1487		};
1488	};
1489
1490	sdc2_on: sdc2-on-state {
1491		clk-pins {
1492			pins = "sdc2_clk";
1493			bias-disable;
1494			drive-strength = <16>;
1495		};
1496
1497		cmd-pins {
1498			pins = "sdc2_cmd";
1499			bias-pull-up;
1500			drive-strength = <10>;
1501		};
1502
1503		data-pins {
1504			pins = "sdc2_data";
1505			bias-pull-up;
1506			drive-strength = <10>;
1507		};
1508
1509		sd-cd-pins {
1510			pins = "gpio69";
1511			function = "gpio";
1512			bias-pull-up;
1513			drive-strength = <2>;
1514		};
1515	};
1516
1517	sdc2_off: sdc2-off-state {
1518		clk-pins {
1519			pins = "sdc2_clk";
1520			bias-disable;
1521			drive-strength = <2>;
1522		};
1523
1524		cmd-pins {
1525			pins = "sdc2_cmd";
1526			bias-pull-up;
1527			drive-strength = <2>;
1528		};
1529
1530		data-pins {
1531			pins = "sdc2_data";
1532			bias-pull-up;
1533			drive-strength = <2>;
1534		};
1535
1536		sd-cd-pins {
1537			pins = "gpio69";
1538			function = "gpio";
1539			bias-pull-up;
1540			drive-strength = <2>;
1541		};
1542	};
1543
1544	uf_cam_en: uf-cam-en-state {
1545		pins = "gpio6";
1546		function = "gpio";
1547		drive-strength = <2>;
1548
1549		/* External pull down */
1550		bias-disable;
1551	};
1552
1553	wf_cam_en: wf-cam-en-state {
1554		pins = "gpio7";
1555		function = "gpio";
1556		drive-strength = <2>;
1557
1558		/* External pull down */
1559		bias-disable;
1560	};
1561};
1562