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