1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2022, Linaro Limited
5 */
6
7/dts-v1/;
8
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h>
11#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
12#include <dt-bindings/iio/qcom,spmi-adc7-pmr735a.h>
13#include <dt-bindings/input/gpio-keys.h>
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
16
17#include "sc8280xp.dtsi"
18#include "sc8280xp-pmics.dtsi"
19
20/ {
21	model = "Lenovo ThinkPad X13s";
22	compatible = "lenovo,thinkpad-x13s", "qcom,sc8280xp";
23
24	aliases {
25		i2c4 = &i2c4;
26		i2c21 = &i2c21;
27		serial1 = &uart2;
28	};
29
30	wcd938x: audio-codec {
31		compatible = "qcom,wcd9380-codec";
32
33		pinctrl-names = "default";
34		pinctrl-0 = <&wcd_default>;
35
36		reset-gpios = <&tlmm 106 GPIO_ACTIVE_LOW>;
37
38		vdd-buck-supply = <&vreg_s10b>;
39		vdd-rxtx-supply = <&vreg_s10b>;
40		vdd-io-supply = <&vreg_s10b>;
41		vdd-mic-bias-supply = <&vreg_bob>;
42
43		qcom,micbias1-microvolt = <1800000>;
44		qcom,micbias2-microvolt = <1800000>;
45		qcom,micbias3-microvolt = <1800000>;
46		qcom,micbias4-microvolt = <1800000>;
47		qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
48		qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
49		qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
50		qcom,rx-device = <&wcd_rx>;
51		qcom,tx-device = <&wcd_tx>;
52
53		#sound-dai-cells = <1>;
54	};
55
56	backlight: backlight {
57		compatible = "pwm-backlight";
58		pwms = <&pmc8280c_lpg 3 1000000>;
59		enable-gpios = <&pmc8280_1_gpios 8 GPIO_ACTIVE_HIGH>;
60		power-supply = <&vreg_edp_bl>;
61
62		pinctrl-names = "default";
63		pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>;
64	};
65
66	gpio-keys {
67		compatible = "gpio-keys";
68
69		pinctrl-names = "default";
70		pinctrl-0 = <&hall_int_n_default>;
71
72		switch-lid {
73			gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
74			linux,input-type = <EV_SW>;
75			linux,code = <SW_LID>;
76			wakeup-source;
77			wakeup-event-action = <EV_ACT_DEASSERTED>;
78		};
79	};
80
81	pmic-glink {
82		compatible = "qcom,sc8280xp-pmic-glink", "qcom,pmic-glink";
83
84		#address-cells = <1>;
85		#size-cells = <0>;
86
87		connector@0 {
88			compatible = "usb-c-connector";
89			reg = <0>;
90			power-role = "dual";
91			data-role = "dual";
92
93			ports {
94				#address-cells = <1>;
95				#size-cells = <0>;
96
97				port@0 {
98					reg = <0>;
99
100					pmic_glink_con0_hs: endpoint {
101						remote-endpoint = <&usb_0_role_switch>;
102					};
103				};
104
105				port@1 {
106					reg = <1>;
107
108					pmic_glink_con0_ss: endpoint {
109						remote-endpoint = <&usb_0_qmpphy_out>;
110					};
111				};
112
113				port@2 {
114					reg = <2>;
115
116					pmic_glink_con0_sbu: endpoint {
117						remote-endpoint = <&usb0_sbu_mux>;
118					};
119				};
120			};
121		};
122
123		connector@1 {
124			compatible = "usb-c-connector";
125			reg = <1>;
126			power-role = "dual";
127			data-role = "dual";
128
129			ports {
130				#address-cells = <1>;
131				#size-cells = <0>;
132				port@0 {
133					reg = <0>;
134
135					pmic_glink_con1_hs: endpoint {
136						remote-endpoint = <&usb_1_role_switch>;
137					};
138				};
139
140				port@1 {
141					reg = <1>;
142
143					pmic_glink_con1_ss: endpoint {
144						remote-endpoint = <&usb_1_qmpphy_out>;
145					};
146				};
147
148				port@2 {
149					reg = <2>;
150
151					pmic_glink_con1_sbu: endpoint {
152						remote-endpoint = <&usb1_sbu_mux>;
153					};
154				};
155			};
156		};
157	};
158
159	vreg_edp_3p3: regulator-edp-3p3 {
160		compatible = "regulator-fixed";
161
162		regulator-name = "VCC3LCD";
163		regulator-min-microvolt = <3300000>;
164		regulator-max-microvolt = <3300000>;
165
166		gpio = <&tlmm 25 GPIO_ACTIVE_HIGH>;
167		enable-active-high;
168
169		pinctrl-names = "default";
170		pinctrl-0 = <&edp_reg_en>;
171
172		regulator-boot-on;
173	};
174
175	vreg_edp_bl: regulator-edp-bl {
176		compatible = "regulator-fixed";
177
178		regulator-name = "VBL9";
179		regulator-min-microvolt = <3600000>;
180		regulator-max-microvolt = <3600000>;
181
182		gpio = <&pmc8280_1_gpios 9 GPIO_ACTIVE_HIGH>;
183		enable-active-high;
184
185		pinctrl-names = "default";
186		pinctrl-0 = <&edp_bl_reg_en>;
187
188		regulator-boot-on;
189	};
190
191	vreg_misc_3p3: regulator-misc-3p3 {
192		compatible = "regulator-fixed";
193
194		regulator-name = "VCC3B";
195		regulator-min-microvolt = <3300000>;
196		regulator-max-microvolt = <3300000>;
197
198		gpio = <&pmc8280_1_gpios 1 GPIO_ACTIVE_HIGH>;
199		enable-active-high;
200
201		pinctrl-names = "default";
202		pinctrl-0 = <&misc_3p3_reg_en>;
203
204		regulator-boot-on;
205		regulator-always-on;
206	};
207
208	vreg_nvme: regulator-nvme {
209		compatible = "regulator-fixed";
210
211		regulator-name = "VCC3_SSD";
212		regulator-min-microvolt = <3300000>;
213		regulator-max-microvolt = <3300000>;
214
215		gpio = <&tlmm 135 GPIO_ACTIVE_HIGH>;
216		enable-active-high;
217
218		pinctrl-names = "default";
219		pinctrl-0 = <&nvme_reg_en>;
220
221		regulator-boot-on;
222	};
223
224	vreg_vph_pwr: regulator-vph-pwr {
225		compatible = "regulator-fixed";
226
227		regulator-name = "VPH_VCC3R9";
228		regulator-min-microvolt = <3900000>;
229		regulator-max-microvolt = <3900000>;
230
231		regulator-always-on;
232	};
233
234	vreg_wlan: regulator-wlan {
235		compatible = "regulator-fixed";
236
237		regulator-name = "VCC_WLAN_3R9";
238		regulator-min-microvolt = <3900000>;
239		regulator-max-microvolt = <3900000>;
240
241		gpio = <&pmr735a_gpios 1 GPIO_ACTIVE_HIGH>;
242		enable-active-high;
243
244		pinctrl-names = "default";
245		pinctrl-0 = <&hastings_reg_en>;
246
247		regulator-boot-on;
248	};
249
250	vreg_wwan: regulator-wwan {
251		compatible = "regulator-fixed";
252
253		regulator-name = "VCC3B_WAN";
254		regulator-min-microvolt = <3300000>;
255		regulator-max-microvolt = <3300000>;
256
257		gpio = <&pmc8280_2_gpios 1 GPIO_ACTIVE_HIGH>;
258		enable-active-high;
259
260		pinctrl-names = "default";
261		pinctrl-0 = <&wwan_sw_en>;
262
263		regulator-boot-on;
264	};
265
266	reserved-memory {
267		gpu_mem: gpu-mem@8bf00000 {
268			reg = <0 0x8bf00000 0 0x2000>;
269			no-map;
270		};
271
272		linux,cma {
273			compatible = "shared-dma-pool";
274			size = <0x0 0x8000000>;
275			reusable;
276			linux,cma-default;
277		};
278	};
279
280	thermal-zones {
281		skin-temp-thermal {
282			polling-delay-passive = <250>;
283			polling-delay = <0>;
284			thermal-sensors = <&pmk8280_adc_tm 5>;
285
286			trips {
287				skin_temp_alert0: trip-point0 {
288					temperature = <55000>;
289					hysteresis = <1000>;
290					type = "passive";
291				};
292
293				skin_temp_alert1: trip-point1 {
294					temperature = <58000>;
295					hysteresis = <1000>;
296					type = "passive";
297				};
298
299				skin-temp-crit {
300					temperature = <73000>;
301					hysteresis = <1000>;
302					type = "critical";
303				};
304			};
305
306			cooling-maps {
307				map0 {
308					trip = <&skin_temp_alert0>;
309					cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
310							 <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
311							 <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
312							 <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
313				};
314
315				map1 {
316					trip = <&skin_temp_alert1>;
317					cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
318							 <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
319							 <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
320							 <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
321				};
322			};
323		};
324	};
325
326	usb0-sbu-mux {
327		compatible = "pericom,pi3usb102", "gpio-sbu-mux";
328
329		enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
330		select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
331
332		pinctrl-names = "default";
333		pinctrl-0 = <&usb0_sbu_default>;
334
335		mode-switch;
336		orientation-switch;
337		svid = /bits/ 16 <0xff01>;
338
339		port {
340			usb0_sbu_mux: endpoint {
341				remote-endpoint = <&pmic_glink_con0_sbu>;
342			};
343		};
344	};
345
346	usb1-sbu-mux {
347		compatible = "pericom,pi3usb102", "gpio-sbu-mux";
348
349		enable-gpios = <&tlmm 48 GPIO_ACTIVE_LOW>;
350		select-gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
351
352		pinctrl-names = "default";
353		pinctrl-0 = <&usb1_sbu_default>;
354
355		mode-switch;
356		orientation-switch;
357		svid = /bits/ 16 <0xff01>;
358
359		port {
360			usb1_sbu_mux: endpoint {
361				remote-endpoint = <&pmic_glink_con1_sbu>;
362			};
363		};
364	};
365};
366
367&apps_rsc {
368	regulators-0 {
369		compatible = "qcom,pm8350-rpmh-regulators";
370		qcom,pmic-id = "b";
371
372		vdd-l1-l4-supply = <&vreg_s12b>;
373		vdd-l2-l7-supply = <&vreg_bob>;
374		vdd-l3-l5-supply = <&vreg_s11b>;
375		vdd-l6-l9-l10-supply = <&vreg_s12b>;
376		vdd-l8-supply = <&vreg_s12b>;
377
378		vreg_s10b: smps10 {
379			regulator-name = "vreg_s10b";
380			regulator-min-microvolt = <1800000>;
381			regulator-max-microvolt = <1800000>;
382			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
383			regulator-always-on;
384		};
385
386		vreg_s11b: smps11 {
387			regulator-name = "vreg_s11b";
388			regulator-min-microvolt = <1272000>;
389			regulator-max-microvolt = <1272000>;
390			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
391			regulator-always-on;
392		};
393
394		vreg_s12b: smps12 {
395			regulator-name = "vreg_s12b";
396			regulator-min-microvolt = <984000>;
397			regulator-max-microvolt = <984000>;
398			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
399			regulator-always-on;
400		};
401
402		vreg_l3b: ldo3 {
403			regulator-name = "vreg_l3b";
404			regulator-min-microvolt = <1200000>;
405			regulator-max-microvolt = <1200000>;
406			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
407			regulator-boot-on;
408		};
409
410		vreg_l4b: ldo4 {
411			regulator-name = "vreg_l4b";
412			regulator-min-microvolt = <912000>;
413			regulator-max-microvolt = <912000>;
414			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
415		};
416
417		vreg_l6b: ldo6 {
418			regulator-name = "vreg_l6b";
419			regulator-min-microvolt = <880000>;
420			regulator-max-microvolt = <880000>;
421			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
422			regulator-boot-on;
423		};
424	};
425
426	regulators-1 {
427		compatible = "qcom,pm8350c-rpmh-regulators";
428		qcom,pmic-id = "c";
429
430		vdd-bob-supply = <&vreg_vph_pwr>;
431		vdd-l1-l12-supply = <&vreg_s1c>;
432		vdd-l2-l8-supply = <&vreg_s1c>;
433		vdd-l3-l4-l5-l7-l13-supply = <&vreg_bob>;
434		vdd-l6-l9-l11-supply = <&vreg_bob>;
435		vdd-l10-supply = <&vreg_s11b>;
436
437		vreg_s1c: smps1 {
438			regulator-name = "vreg_s1c";
439			regulator-min-microvolt = <1880000>;
440			regulator-max-microvolt = <1900000>;
441			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
442			regulator-always-on;
443		};
444
445		vreg_l1c: ldo1 {
446			regulator-name = "vreg_l1c";
447			regulator-min-microvolt = <1800000>;
448			regulator-max-microvolt = <1800000>;
449			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
450		};
451
452		vreg_l12c: ldo12 {
453			regulator-name = "vreg_l12c";
454			regulator-min-microvolt = <1800000>;
455			regulator-max-microvolt = <1800000>;
456			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
457		};
458
459		vreg_l13c: ldo13 {
460			regulator-name = "vreg_l13c";
461			regulator-min-microvolt = <3072000>;
462			regulator-max-microvolt = <3072000>;
463			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
464		};
465
466		vreg_bob: bob {
467			regulator-name = "vreg_bob";
468			regulator-min-microvolt = <3008000>;
469			regulator-max-microvolt = <3960000>;
470			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
471			regulator-always-on;
472		};
473	};
474
475	regulators-2 {
476		compatible = "qcom,pm8350-rpmh-regulators";
477		qcom,pmic-id = "d";
478
479		vdd-l1-l4-supply = <&vreg_s11b>;
480		vdd-l2-l7-supply = <&vreg_bob>;
481		vdd-l3-l5-supply = <&vreg_s11b>;
482		vdd-l6-l9-l10-supply = <&vreg_s12b>;
483		vdd-l8-supply = <&vreg_s12b>;
484
485		vreg_l3d: ldo3 {
486			regulator-name = "vreg_l3d";
487			regulator-min-microvolt = <1200000>;
488			regulator-max-microvolt = <1200000>;
489			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
490		};
491
492		vreg_l4d: ldo4 {
493			regulator-name = "vreg_l4d";
494			regulator-min-microvolt = <1200000>;
495			regulator-max-microvolt = <1200000>;
496			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
497		};
498
499		vreg_l6d: ldo6 {
500			regulator-name = "vreg_l6d";
501			regulator-min-microvolt = <880000>;
502			regulator-max-microvolt = <880000>;
503			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
504		};
505
506		vreg_l7d: ldo7 {
507			regulator-name = "vreg_l7d";
508			regulator-min-microvolt = <3072000>;
509			regulator-max-microvolt = <3072000>;
510			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
511		};
512
513		vreg_l9d: ldo9 {
514			regulator-name = "vreg_l9d";
515			regulator-min-microvolt = <912000>;
516			regulator-max-microvolt = <912000>;
517			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
518		};
519	};
520};
521
522&dispcc0 {
523	status = "okay";
524};
525
526&gpu {
527	status = "okay";
528
529	zap-shader {
530		memory-region = <&gpu_mem>;
531		firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn";
532	};
533};
534
535&mdss0 {
536	status = "okay";
537};
538
539&mdss0_dp0 {
540	status = "okay";
541};
542
543&mdss0_dp0_out {
544	data-lanes = <0 1>;
545	remote-endpoint = <&usb_0_qmpphy_dp_in>;
546};
547
548&mdss0_dp1 {
549	status = "okay";
550};
551
552&mdss0_dp1_out {
553	data-lanes = <0 1>;
554	remote-endpoint = <&usb_1_qmpphy_dp_in>;
555};
556
557&mdss0_dp3 {
558	compatible = "qcom,sc8280xp-edp";
559
560	data-lanes = <0 1 2 3>;
561
562	status = "okay";
563
564	aux-bus {
565		panel {
566			compatible = "edp-panel";
567
568			backlight = <&backlight>;
569			power-supply = <&vreg_edp_3p3>;
570
571			port {
572				edp_panel_in: endpoint {
573					remote-endpoint = <&mdss0_dp3_out>;
574				};
575			};
576		};
577	};
578
579	ports {
580		port@1 {
581			reg = <1>;
582			mdss0_dp3_out: endpoint {
583				remote-endpoint = <&edp_panel_in>;
584			};
585		};
586	};
587};
588
589&mdss0_dp3_phy {
590	vdda-phy-supply = <&vreg_l6b>;
591	vdda-pll-supply = <&vreg_l3b>;
592
593	status = "okay";
594};
595
596&i2c4 {
597	clock-frequency = <400000>;
598
599	pinctrl-names = "default";
600	pinctrl-0 = <&i2c4_default>;
601
602	status = "okay";
603
604	/* FIXME: verify */
605	touchscreen@10 {
606		compatible = "hid-over-i2c";
607		reg = <0x10>;
608
609		hid-descr-addr = <0x1>;
610		interrupts-extended = <&tlmm 175 IRQ_TYPE_LEVEL_LOW>;
611		vdd-supply = <&vreg_misc_3p3>;
612		vddl-supply = <&vreg_s10b>;
613
614		pinctrl-names = "default";
615		pinctrl-0 = <&ts0_default>;
616	};
617};
618
619&i2c21 {
620	clock-frequency = <400000>;
621
622	pinctrl-names = "default";
623	pinctrl-0 = <&i2c21_default>, <&tpad_default>;
624
625	status = "okay";
626
627	touchpad@15 {
628		compatible = "hid-over-i2c";
629		reg = <0x15>;
630
631		hid-descr-addr = <0x1>;
632		interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
633		vdd-supply = <&vreg_misc_3p3>;
634		vddl-supply = <&vreg_s10b>;
635
636		wakeup-source;
637	};
638
639	touchpad@2c {
640		compatible = "hid-over-i2c";
641		reg = <0x2c>;
642
643		hid-descr-addr = <0x20>;
644		interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
645		vdd-supply = <&vreg_misc_3p3>;
646		vddl-supply = <&vreg_s10b>;
647
648		wakeup-source;
649	};
650
651	keyboard@68 {
652		compatible = "hid-over-i2c";
653		reg = <0x68>;
654
655		hid-descr-addr = <0x1>;
656		interrupts-extended = <&tlmm 104 IRQ_TYPE_LEVEL_LOW>;
657		vdd-supply = <&vreg_misc_3p3>;
658		vddl-supply = <&vreg_s10b>;
659
660		pinctrl-names = "default";
661		pinctrl-0 = <&kybd_default>;
662
663		wakeup-source;
664	};
665};
666
667&pcie2a {
668	perst-gpios = <&tlmm 143 GPIO_ACTIVE_LOW>;
669	wake-gpios = <&tlmm 145 GPIO_ACTIVE_LOW>;
670
671	vddpe-3v3-supply = <&vreg_nvme>;
672
673	pinctrl-names = "default";
674	pinctrl-0 = <&pcie2a_default>;
675
676	status = "okay";
677};
678
679&pcie2a_phy {
680	vdda-phy-supply = <&vreg_l6d>;
681	vdda-pll-supply = <&vreg_l4d>;
682
683	status = "okay";
684};
685
686&pcie3a {
687	perst-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>;
688	wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
689
690	vddpe-3v3-supply = <&vreg_wwan>;
691
692	pinctrl-names = "default";
693	pinctrl-0 = <&pcie3a_default>;
694
695	status = "okay";
696};
697
698&pcie3a_phy {
699	vdda-phy-supply = <&vreg_l6d>;
700	vdda-pll-supply = <&vreg_l4d>;
701
702	status = "okay";
703};
704
705&pcie4 {
706	perst-gpios = <&tlmm 141 GPIO_ACTIVE_LOW>;
707	wake-gpios = <&tlmm 139 GPIO_ACTIVE_LOW>;
708
709	vddpe-3v3-supply = <&vreg_wlan>;
710
711	pinctrl-names = "default";
712	pinctrl-0 = <&pcie4_default>;
713
714	status = "okay";
715
716	pcie@0 {
717		device_type = "pci";
718		reg = <0x0 0x0 0x0 0x0 0x0>;
719		#address-cells = <3>;
720		#size-cells = <2>;
721		ranges;
722
723		bus-range = <0x01 0xff>;
724
725		wifi@0 {
726			compatible = "pci17cb,1103";
727			reg = <0x10000 0x0 0x0 0x0 0x0>;
728
729			qcom,ath11k-calibration-variant = "LE_X13S";
730		};
731	};
732};
733
734&pcie4_phy {
735	vdda-phy-supply = <&vreg_l6d>;
736	vdda-pll-supply = <&vreg_l4d>;
737
738	status = "okay";
739};
740
741&pmc8280c_lpg {
742	status = "okay";
743};
744
745&pmk8280_adc_tm {
746	status = "okay";
747
748	sys-therm@0 {
749		reg = <0>;
750		io-channels = <&pmk8280_vadc PM8350_ADC7_AMUX_THM1_100K_PU(1)>;
751		qcom,hw-settle-time-us = <200>;
752		qcom,avg-samples = <2>;
753		qcom,ratiometric;
754	};
755
756	sys-therm@1 {
757		reg = <1>;
758		io-channels = <&pmk8280_vadc PM8350_ADC7_AMUX_THM2_100K_PU(1)>;
759		qcom,hw-settle-time-us = <200>;
760		qcom,avg-samples = <2>;
761		qcom,ratiometric;
762	};
763
764	sys-therm@2 {
765		reg = <2>;
766		io-channels = <&pmk8280_vadc PM8350_ADC7_AMUX_THM3_100K_PU(1)>;
767		qcom,hw-settle-time-us = <200>;
768		qcom,avg-samples = <2>;
769		qcom,ratiometric;
770	};
771
772	sys-therm@3 {
773		reg = <3>;
774		io-channels = <&pmk8280_vadc PM8350_ADC7_AMUX_THM4_100K_PU(1)>;
775		qcom,hw-settle-time-us = <200>;
776		qcom,avg-samples = <2>;
777		qcom,ratiometric;
778	};
779
780	sys-therm@4 {
781		reg = <4>;
782		io-channels = <&pmk8280_vadc PM8350_ADC7_AMUX_THM1_100K_PU(3)>;
783		qcom,hw-settle-time-us = <200>;
784		qcom,avg-samples = <2>;
785		qcom,ratiometric;
786	};
787
788	sys-therm@5 {
789		reg = <5>;
790		io-channels = <&pmk8280_vadc PM8350_ADC7_AMUX_THM2_100K_PU(3)>;
791		qcom,hw-settle-time-us = <200>;
792		qcom,avg-samples = <2>;
793		qcom,ratiometric;
794	};
795
796	sys-therm@6 {
797		reg = <6>;
798		io-channels = <&pmk8280_vadc PM8350_ADC7_AMUX_THM3_100K_PU(3)>;
799		qcom,hw-settle-time-us = <200>;
800		qcom,avg-samples = <2>;
801		qcom,ratiometric;
802	};
803
804	sys-therm@7 {
805		reg = <7>;
806		io-channels = <&pmk8280_vadc PM8350_ADC7_AMUX_THM4_100K_PU(3)>;
807		qcom,hw-settle-time-us = <200>;
808		qcom,avg-samples = <2>;
809		qcom,ratiometric;
810	};
811};
812
813&pmk8280_pon_pwrkey {
814	status = "okay";
815};
816
817&pmk8280_pon_resin {
818	status = "okay";
819};
820
821&pmk8280_rtc {
822	nvmem-cells = <&rtc_offset>;
823	nvmem-cell-names = "offset";
824
825	status = "okay";
826};
827
828&pmk8280_sdam_6 {
829	status = "okay";
830
831	rtc_offset: rtc-offset@bc {
832		reg = <0xbc 0x4>;
833	};
834};
835
836&pmk8280_vadc {
837	status = "okay";
838
839	pmic-die-temp@3 {
840		reg = <PMK8350_ADC7_DIE_TEMP>;
841		qcom,pre-scaling = <1 1>;
842		label = "pmk8350_die_temp";
843	};
844
845	xo-therm@44 {
846		reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
847		qcom,hw-settle-time = <200>;
848		qcom,ratiometric;
849		label = "pmk8350_xo_therm";
850	};
851
852	pmic-die-temp@103 {
853		reg = <PM8350_ADC7_DIE_TEMP(1)>;
854		qcom,pre-scaling = <1 1>;
855		label = "pmc8280_1_die_temp";
856	};
857
858	sys-therm@144 {
859		reg = <PM8350_ADC7_AMUX_THM1_100K_PU(1)>;
860		qcom,hw-settle-time = <200>;
861		qcom,ratiometric;
862		label = "sys_therm1";
863	};
864
865	sys-therm@145 {
866		reg = <PM8350_ADC7_AMUX_THM2_100K_PU(1)>;
867		qcom,hw-settle-time = <200>;
868		qcom,ratiometric;
869		label = "sys_therm2";
870	};
871
872	sys-therm@146 {
873		reg = <PM8350_ADC7_AMUX_THM3_100K_PU(1)>;
874		qcom,hw-settle-time = <200>;
875		qcom,ratiometric;
876		label = "sys_therm3";
877	};
878
879	sys-therm@147 {
880		reg = <PM8350_ADC7_AMUX_THM4_100K_PU(1)>;
881		qcom,hw-settle-time = <200>;
882		qcom,ratiometric;
883		label = "sys_therm4";
884	};
885
886	pmic-die-temp@303 {
887		reg = <PM8350_ADC7_DIE_TEMP(3)>;
888		qcom,pre-scaling = <1 1>;
889		label = "pmc8280_2_die_temp";
890	};
891
892	sys-therm@344 {
893		reg = <PM8350_ADC7_AMUX_THM1_100K_PU(3)>;
894		qcom,hw-settle-time = <200>;
895		qcom,ratiometric;
896		label = "sys_therm5";
897	};
898
899	sys-therm@345 {
900		reg = <PM8350_ADC7_AMUX_THM2_100K_PU(3)>;
901		qcom,hw-settle-time = <200>;
902		qcom,ratiometric;
903		label = "sys_therm6";
904	};
905
906	sys-therm@346 {
907		reg = <PM8350_ADC7_AMUX_THM3_100K_PU(3)>;
908		qcom,hw-settle-time = <200>;
909		qcom,ratiometric;
910		label = "sys_therm7";
911	};
912
913	sys-therm@347 {
914		reg = <PM8350_ADC7_AMUX_THM4_100K_PU(3)>;
915		qcom,hw-settle-time = <200>;
916		qcom,ratiometric;
917		label = "sys_therm8";
918	};
919
920	pmic-die-temp@403 {
921		reg = <PMR735A_ADC7_DIE_TEMP>;
922		qcom,pre-scaling = <1 1>;
923		label = "pmr735a_die_temp";
924	};
925};
926
927&qup0 {
928	status = "okay";
929};
930
931&qup1 {
932	status = "okay";
933};
934
935&qup2 {
936	status = "okay";
937};
938
939&remoteproc_adsp {
940	firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcadsp8280.mbn";
941
942	status = "okay";
943};
944
945&remoteproc_nsp0 {
946	firmware-name = "qcom/sc8280xp/LENOVO/21BX/qccdsp8280.mbn";
947
948	status = "okay";
949};
950
951&rxmacro {
952	status = "okay";
953};
954
955&sound {
956	compatible = "qcom,sc8280xp-sndcard";
957	model = "SC8280XP-LENOVO-X13S";
958	audio-routing =
959		"SpkrLeft IN", "WSA_SPK1 OUT",
960		"SpkrRight IN", "WSA_SPK2 OUT",
961		"IN1_HPHL", "HPHL_OUT",
962		"IN2_HPHR", "HPHR_OUT",
963		"AMIC2", "MIC BIAS2",
964		"VA DMIC0", "MIC BIAS1",
965		"VA DMIC1", "MIC BIAS1",
966		"VA DMIC2", "MIC BIAS3",
967		"VA DMIC0", "VA MIC BIAS1",
968		"VA DMIC1", "VA MIC BIAS1",
969		"VA DMIC2", "VA MIC BIAS3",
970		"TX SWR_ADC1", "ADC2_OUTPUT";
971
972	wcd-playback-dai-link {
973		link-name = "WCD Playback";
974		cpu {
975			sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
976		};
977
978		codec {
979			sound-dai = <&wcd938x 0>, <&swr1 0>, <&rxmacro 0>;
980		};
981
982		platform {
983			sound-dai = <&q6apm>;
984		};
985	};
986
987	wcd-capture-dai-link {
988		link-name = "WCD Capture";
989		cpu {
990			sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
991		};
992
993		codec {
994			sound-dai = <&wcd938x 1>, <&swr2 0>, <&txmacro 0>;
995		};
996
997		platform {
998			sound-dai = <&q6apm>;
999		};
1000	};
1001
1002	wsa-dai-link {
1003		link-name = "WSA Playback";
1004		cpu {
1005			sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
1006		};
1007
1008		codec {
1009			sound-dai = <&left_spkr>, <&right_spkr>, <&swr0 0>, <&wsamacro 0>;
1010		};
1011
1012		platform {
1013			sound-dai = <&q6apm>;
1014		};
1015	};
1016
1017	va-dai-link {
1018		link-name = "VA Capture";
1019		cpu {
1020			sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
1021		};
1022
1023		platform {
1024			sound-dai = <&q6apm>;
1025		};
1026
1027		codec {
1028			sound-dai = <&vamacro 0>;
1029		};
1030	};
1031};
1032
1033&swr0 {
1034	status = "okay";
1035
1036	left_spkr: wsa8830-left@0,1 {
1037		compatible = "sdw10217020200";
1038		reg = <0 1>;
1039		pinctrl-names = "default";
1040		pinctrl-0 = <&spkr_1_sd_n_default>;
1041		powerdown-gpios = <&tlmm 178 GPIO_ACTIVE_LOW>;
1042		#thermal-sensor-cells = <0>;
1043		sound-name-prefix = "SpkrLeft";
1044		#sound-dai-cells = <0>;
1045		vdd-supply = <&vreg_s10b>;
1046	};
1047
1048	right_spkr: wsa8830-right@0,2 {
1049		compatible = "sdw10217020200";
1050		reg = <0 2>;
1051		pinctrl-names = "default";
1052		pinctrl-0 = <&spkr_2_sd_n_default>;
1053		powerdown-gpios = <&tlmm 179 GPIO_ACTIVE_LOW>;
1054		#thermal-sensor-cells = <0>;
1055		sound-name-prefix = "SpkrRight";
1056		#sound-dai-cells = <0>;
1057		vdd-supply = <&vreg_s10b>;
1058	};
1059};
1060
1061&swr1 {
1062	status = "okay";
1063
1064	wcd_rx: wcd9380-rx@0,4 {
1065		compatible = "sdw20217010d00";
1066		reg = <0 4>;
1067		qcom,rx-port-mapping = <1 2 3 4 5>;
1068	};
1069};
1070
1071&swr2 {
1072	status = "okay";
1073
1074	wcd_tx: wcd9380-tx@0,3 {
1075		compatible = "sdw20217010d00";
1076		reg = <0 3>;
1077		qcom,tx-port-mapping = <1 1 2 3>;
1078	};
1079};
1080
1081&txmacro {
1082	status = "okay";
1083};
1084
1085&uart2 {
1086	pinctrl-0 = <&uart2_default>;
1087	pinctrl-names = "default";
1088
1089	status = "okay";
1090
1091	bluetooth {
1092		compatible = "qcom,wcn6855-bt";
1093
1094		vddio-supply = <&vreg_s10b>;
1095		vddbtcxmx-supply = <&vreg_s12b>;
1096		vddrfacmn-supply = <&vreg_s12b>;
1097		vddrfa0p8-supply = <&vreg_s12b>;
1098		vddrfa1p2-supply = <&vreg_s11b>;
1099		vddrfa1p7-supply = <&vreg_s1c>;
1100
1101		max-speed = <3200000>;
1102
1103		enable-gpios = <&tlmm 133 GPIO_ACTIVE_HIGH>;
1104		swctrl-gpios = <&tlmm 132 GPIO_ACTIVE_HIGH>;
1105
1106		pinctrl-0 = <&bt_default>;
1107		pinctrl-names = "default";
1108	};
1109};
1110
1111&usb_0 {
1112	status = "okay";
1113};
1114
1115&usb_0_dwc3 {
1116	dr_mode = "host";
1117};
1118
1119&usb_0_hsphy {
1120	vdda-pll-supply = <&vreg_l9d>;
1121	vdda18-supply = <&vreg_l1c>;
1122	vdda33-supply = <&vreg_l7d>;
1123
1124	status = "okay";
1125};
1126
1127&usb_0_qmpphy {
1128	vdda-phy-supply = <&vreg_l9d>;
1129	vdda-pll-supply = <&vreg_l4d>;
1130
1131	orientation-switch;
1132
1133	status = "okay";
1134};
1135
1136&usb_0_qmpphy_dp_in {
1137	remote-endpoint = <&mdss0_dp0_out>;
1138};
1139
1140&usb_0_qmpphy_out {
1141	remote-endpoint = <&pmic_glink_con0_ss>;
1142};
1143
1144&usb_0_role_switch {
1145	remote-endpoint = <&pmic_glink_con0_hs>;
1146};
1147
1148&usb_1 {
1149	status = "okay";
1150};
1151
1152&usb_1_dwc3 {
1153	dr_mode = "host";
1154};
1155
1156&usb_1_hsphy {
1157	vdda-pll-supply = <&vreg_l4b>;
1158	vdda18-supply = <&vreg_l1c>;
1159	vdda33-supply = <&vreg_l13c>;
1160
1161	status = "okay";
1162};
1163
1164&usb_1_qmpphy {
1165	vdda-phy-supply = <&vreg_l4b>;
1166	vdda-pll-supply = <&vreg_l3b>;
1167
1168	orientation-switch;
1169
1170	status = "okay";
1171};
1172
1173&usb_1_qmpphy_dp_in {
1174	remote-endpoint = <&mdss0_dp1_out>;
1175};
1176
1177&usb_1_qmpphy_out {
1178	remote-endpoint = <&pmic_glink_con1_ss>;
1179};
1180
1181&usb_1_role_switch {
1182	remote-endpoint = <&pmic_glink_con1_hs>;
1183};
1184
1185&vamacro {
1186	pinctrl-0 = <&dmic01_default>, <&dmic02_default>;
1187	pinctrl-names = "default";
1188
1189	vdd-micb-supply = <&vreg_s10b>;
1190
1191	qcom,dmic-sample-rate = <4800000>;
1192
1193	status = "okay";
1194};
1195
1196&wsamacro {
1197	status = "okay";
1198};
1199
1200&xo_board_clk {
1201	clock-frequency = <38400000>;
1202};
1203
1204/* PINCTRL */
1205
1206&lpass_tlmm {
1207	status = "okay";
1208};
1209
1210&pmc8280_1_gpios {
1211	edp_bl_en: edp-bl-en-state {
1212		pins = "gpio8";
1213		function = "normal";
1214	};
1215
1216	edp_bl_reg_en: edp-bl-reg-en-state {
1217		pins = "gpio9";
1218		function = "normal";
1219	};
1220
1221	misc_3p3_reg_en: misc-3p3-reg-en-state {
1222		pins = "gpio1";
1223		function = "normal";
1224	};
1225};
1226
1227&pmc8280_2_gpios {
1228	wwan_sw_en: wwan-sw-en-state {
1229		pins = "gpio1";
1230		function = "normal";
1231	};
1232};
1233
1234&pmc8280c_gpios {
1235	edp_bl_pwm: edp-bl-pwm-state {
1236		pins = "gpio8";
1237		function = "func1";
1238	};
1239};
1240
1241&pmr735a_gpios {
1242	hastings_reg_en: hastings-reg-en-state {
1243		pins = "gpio1";
1244		function = "normal";
1245	};
1246};
1247
1248&tlmm {
1249	gpio-reserved-ranges = <70 2>, <74 6>, <83 4>, <125 2>, <128 2>, <154 7>;
1250
1251	bt_default: bt-default-state {
1252		hstp-bt-en-pins {
1253			pins = "gpio133";
1254			function = "gpio";
1255			drive-strength = <16>;
1256			bias-disable;
1257		};
1258
1259		hstp-sw-ctrl-pins {
1260			pins = "gpio132";
1261			function = "gpio";
1262			bias-pull-down;
1263		};
1264	};
1265
1266	edp_reg_en: edp-reg-en-state {
1267		pins = "gpio25";
1268		function = "gpio";
1269		drive-strength = <16>;
1270		bias-disable;
1271	};
1272
1273	hall_int_n_default: hall-int-n-state {
1274		pins = "gpio107";
1275		function = "gpio";
1276		bias-disable;
1277	};
1278
1279	i2c4_default: i2c4-default-state {
1280		pins = "gpio171", "gpio172";
1281		function = "qup4";
1282		drive-strength = <16>;
1283		bias-disable;
1284	};
1285
1286	i2c21_default: i2c21-default-state {
1287		pins = "gpio81", "gpio82";
1288		function = "qup21";
1289		drive-strength = <16>;
1290		bias-disable;
1291	};
1292
1293	kybd_default: kybd-default-state {
1294		disable-pins {
1295			pins = "gpio102";
1296			function = "gpio";
1297			output-low;
1298		};
1299
1300		int-n-pins {
1301			pins = "gpio104";
1302			function = "gpio";
1303			bias-disable;
1304		};
1305
1306		reset-pins {
1307			pins = "gpio105";
1308			function = "gpio";
1309			bias-disable;
1310		};
1311	};
1312
1313	nvme_reg_en: nvme-reg-en-state {
1314		pins = "gpio135";
1315		function = "gpio";
1316		drive-strength = <2>;
1317		bias-disable;
1318	};
1319
1320	pcie2a_default: pcie2a-default-state {
1321		clkreq-n-pins {
1322			pins = "gpio142";
1323			function = "pcie2a_clkreq";
1324			drive-strength = <2>;
1325			bias-pull-up;
1326		};
1327
1328		perst-n-pins {
1329			pins = "gpio143";
1330			function = "gpio";
1331			drive-strength = <2>;
1332			bias-pull-down;
1333		};
1334
1335		wake-n-pins {
1336		       pins = "gpio145";
1337		       function = "gpio";
1338		       drive-strength = <2>;
1339		       bias-pull-up;
1340	       };
1341	};
1342
1343	pcie3a_default: pcie3a-default-state {
1344		clkreq-n-pins {
1345			pins = "gpio150";
1346			function = "pcie3a_clkreq";
1347			drive-strength = <2>;
1348			bias-pull-up;
1349		};
1350
1351		perst-n-pins {
1352			pins = "gpio151";
1353			function = "gpio";
1354			drive-strength = <2>;
1355			bias-pull-down;
1356		};
1357
1358		wake-n-pins {
1359			pins = "gpio148";
1360			function = "gpio";
1361			drive-strength = <2>;
1362			bias-pull-up;
1363		};
1364	};
1365
1366	pcie4_default: pcie4-default-state {
1367		clkreq-n-pins {
1368			pins = "gpio140";
1369			function = "pcie4_clkreq";
1370			drive-strength = <2>;
1371			bias-pull-up;
1372		};
1373
1374		perst-n-pins {
1375			pins = "gpio141";
1376			function = "gpio";
1377			drive-strength = <2>;
1378			bias-pull-down;
1379		};
1380
1381		wake-n-pins {
1382			pins = "gpio139";
1383			function = "gpio";
1384			drive-strength = <2>;
1385			bias-pull-up;
1386		};
1387	};
1388
1389	spkr_1_sd_n_default: spkr-1-sd-n-default-state {
1390		perst-n-pins {
1391			pins = "gpio178";
1392			function = "gpio";
1393			drive-strength = <16>;
1394			bias-disable;
1395			output-high;
1396		};
1397	};
1398
1399	spkr_2_sd_n_default: spkr-2-sd-n-default-state {
1400		perst-n-pins {
1401			pins = "gpio179";
1402			function = "gpio";
1403			drive-strength = <16>;
1404			bias-disable;
1405			output-high;
1406		};
1407	};
1408
1409	tpad_default: tpad-default-state {
1410		int-n-pins {
1411			pins = "gpio182";
1412			function = "gpio";
1413			bias-disable;
1414		};
1415	};
1416
1417	ts0_default: ts0-default-state {
1418		int-n-pins {
1419			pins = "gpio175";
1420			function = "gpio";
1421			bias-disable;
1422		};
1423
1424		reset-n-pins {
1425			pins = "gpio99";
1426			function = "gpio";
1427			output-high;
1428			drive-strength = <16>;
1429		};
1430	};
1431
1432	uart2_default: uart2-default-state {
1433		cts-pins {
1434			pins = "gpio121";
1435			function = "qup2";
1436			bias-bus-hold;
1437		};
1438
1439		rts-pins {
1440			pins = "gpio122";
1441			function = "qup2";
1442			drive-strength = <2>;
1443			bias-disable;
1444		};
1445
1446		rx-pins {
1447			pins = "gpio124";
1448			function = "qup2";
1449			bias-pull-up;
1450		};
1451
1452		tx-pins {
1453			pins = "gpio123";
1454			function = "qup2";
1455			drive-strength = <2>;
1456			bias-disable;
1457		};
1458	};
1459
1460	usb0_sbu_default: usb0-sbu-state {
1461		oe-n-pins {
1462			pins = "gpio101";
1463			function = "gpio";
1464			bias-disable;
1465			drive-strength = <16>;
1466			output-high;
1467		};
1468
1469		sel-pins {
1470			pins = "gpio164";
1471			function = "gpio";
1472			bias-disable;
1473			drive-strength = <16>;
1474		};
1475	};
1476
1477	usb1_sbu_default: usb1-sbu-state {
1478		oe-n-pins {
1479			pins = "gpio48";
1480			function = "gpio";
1481			bias-disable;
1482			drive-strength = <16>;
1483			output-high;
1484		};
1485
1486		sel-pins {
1487			pins = "gpio47";
1488			function = "gpio";
1489			bias-disable;
1490			drive-strength = <16>;
1491		};
1492	};
1493
1494	wcd_default: wcd-default-state {
1495		reset-pins {
1496			pins = "gpio106";
1497			function = "gpio";
1498			bias-disable;
1499		};
1500	};
1501};
1502