1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
4 * Copyright (c) 2024, Xilin Wu <[email protected]>
5 */
6
7/dts-v1/;
8
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/input/gpio-keys.h>
11#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
12#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
13
14#include "x1e80100.dtsi"
15#include "x1e80100-pmics.dtsi"
16
17/ {
18	model = "ASUS Vivobook S 15";
19	compatible = "asus,vivobook-s15", "qcom,x1e80100";
20	chassis-type = "laptop";
21
22	gpio-keys {
23		compatible = "gpio-keys";
24		pinctrl-0 = <&hall_int_n_default>;
25		pinctrl-names = "default";
26
27		switch-lid {
28			gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
29			linux,input-type = <EV_SW>;
30			linux,code = <SW_LID>;
31			wakeup-source;
32			wakeup-event-action = <EV_ACT_DEASSERTED>;
33		};
34	};
35
36	pmic-glink {
37		compatible = "qcom,x1e80100-pmic-glink",
38			     "qcom,sm8550-pmic-glink",
39			     "qcom,pmic-glink";
40		orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
41				    <&tlmm 123 GPIO_ACTIVE_HIGH>;
42		#address-cells = <1>;
43		#size-cells = <0>;
44
45		/* Left-side port, closer to the screen */
46		connector@0 {
47			compatible = "usb-c-connector";
48			reg = <0>;
49			power-role = "dual";
50			data-role = "dual";
51
52			ports {
53				#address-cells = <1>;
54				#size-cells = <0>;
55
56				port@0 {
57					reg = <0>;
58
59					pmic_glink_ss0_hs_in: endpoint {
60						remote-endpoint = <&usb_1_ss0_dwc3_hs>;
61					};
62				};
63
64				port@1 {
65					reg = <1>;
66
67					pmic_glink_ss0_ss_in: endpoint {
68						remote-endpoint = <&usb_1_ss0_qmpphy_out>;
69					};
70				};
71			};
72		};
73
74		/* Left-side port, farther from the screen */
75		connector@1 {
76			compatible = "usb-c-connector";
77			reg = <1>;
78			power-role = "dual";
79			data-role = "dual";
80
81			ports {
82				#address-cells = <1>;
83				#size-cells = <0>;
84
85				port@0 {
86					reg = <0>;
87
88					pmic_glink_ss1_hs_in: endpoint {
89						remote-endpoint = <&usb_1_ss1_dwc3_hs>;
90					};
91				};
92
93				port@1 {
94					reg = <1>;
95
96					pmic_glink_ss1_ss_in: endpoint {
97						remote-endpoint = <&usb_1_ss1_qmpphy_out>;
98					};
99				};
100			};
101		};
102	};
103
104	reserved-memory {
105		linux,cma {
106			compatible = "shared-dma-pool";
107			size = <0x0 0x8000000>;
108			reusable;
109			linux,cma-default;
110		};
111	};
112
113	vreg_edp_3p3: regulator-edp-3p3 {
114		compatible = "regulator-fixed";
115
116		regulator-name = "VREG_EDP_3P3";
117		regulator-min-microvolt = <3300000>;
118		regulator-max-microvolt = <3300000>;
119
120		gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>;
121		enable-active-high;
122
123		pinctrl-0 = <&edp_reg_en>;
124		pinctrl-names = "default";
125
126		regulator-always-on;
127		regulator-boot-on;
128	};
129
130	vreg_nvme: regulator-nvme {
131		compatible = "regulator-fixed";
132
133		regulator-name = "VREG_NVME_3P3";
134		regulator-min-microvolt = <3300000>;
135		regulator-max-microvolt = <3300000>;
136
137		gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>;
138		enable-active-high;
139
140		pinctrl-0 = <&nvme_reg_en>;
141		pinctrl-names = "default";
142
143		regulator-boot-on;
144	};
145
146	vph_pwr: regulator-vph-pwr {
147		compatible = "regulator-fixed";
148
149		regulator-name = "vph_pwr";
150		regulator-min-microvolt = <3700000>;
151		regulator-max-microvolt = <3700000>;
152
153		regulator-always-on;
154		regulator-boot-on;
155	};
156};
157
158&apps_rsc {
159	regulators-0 {
160		compatible = "qcom,pm8550-rpmh-regulators";
161		qcom,pmic-id = "b";
162
163		vdd-bob1-supply = <&vph_pwr>;
164		vdd-bob2-supply = <&vph_pwr>;
165		vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
166		vdd-l2-l13-l14-supply = <&vreg_bob1>;
167		vdd-l5-l16-supply = <&vreg_bob1>;
168		vdd-l6-l7-supply = <&vreg_bob2>;
169		vdd-l8-l9-supply = <&vreg_bob1>;
170		vdd-l12-supply = <&vreg_s5j_1p2>;
171		vdd-l15-supply = <&vreg_s4c_1p8>;
172		vdd-l17-supply = <&vreg_bob2>;
173
174		vreg_bob1: bob1 {
175			regulator-name = "vreg_bob1";
176			regulator-min-microvolt = <3008000>;
177			regulator-max-microvolt = <3960000>;
178			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
179		};
180
181		vreg_bob2: bob2 {
182			regulator-name = "vreg_bob2";
183			regulator-min-microvolt = <2504000>;
184			regulator-max-microvolt = <3008000>;
185			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
186		};
187
188		vreg_l2b_3p0: ldo2 {
189			regulator-name = "vreg_l2b_3p0";
190			regulator-min-microvolt = <3072000>;
191			regulator-max-microvolt = <3100000>;
192			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
193		};
194
195		vreg_l14b_3p0: ldo14 {
196			regulator-name = "vreg_l14b_3p0";
197			regulator-min-microvolt = <3072000>;
198			regulator-max-microvolt = <3072000>;
199			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
200		};
201	};
202
203	regulators-1 {
204		compatible = "qcom,pm8550ve-rpmh-regulators";
205		qcom,pmic-id = "c";
206
207		vdd-l1-supply = <&vreg_s5j_1p2>;
208		vdd-l2-supply = <&vreg_s1f_0p7>;
209		vdd-l3-supply = <&vreg_s1f_0p7>;
210		vdd-s4-supply = <&vph_pwr>;
211
212		vreg_s4c_1p8: smps4 {
213			regulator-name = "vreg_s4c_1p8";
214			regulator-min-microvolt = <1856000>;
215			regulator-max-microvolt = <2000000>;
216			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
217		};
218	};
219
220	regulators-2 {
221		compatible = "qcom,pmc8380-rpmh-regulators";
222		qcom,pmic-id = "d";
223
224		vdd-l1-supply = <&vreg_s1f_0p7>;
225		vdd-l2-supply = <&vreg_s1f_0p7>;
226		vdd-l3-supply = <&vreg_s4c_1p8>;
227		vdd-s1-supply = <&vph_pwr>;
228
229		vreg_l1d_0p8: ldo1 {
230			regulator-name = "vreg_l1d_0p8";
231			regulator-min-microvolt = <880000>;
232			regulator-max-microvolt = <920000>;
233			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
234		};
235
236		vreg_l2d_0p9: ldo2 {
237			regulator-name = "vreg_l2d_0p9";
238			regulator-min-microvolt = <912000>;
239			regulator-max-microvolt = <920000>;
240			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
241		};
242
243		vreg_l3d_1p8: ldo3 {
244			regulator-name = "vreg_l3d_1p8";
245			regulator-min-microvolt = <1800000>;
246			regulator-max-microvolt = <1800000>;
247			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
248		};
249	};
250
251	regulators-3 {
252		compatible = "qcom,pmc8380-rpmh-regulators";
253		qcom,pmic-id = "e";
254
255		vdd-l2-supply = <&vreg_s1f_0p7>;
256		vdd-l3-supply = <&vreg_s5j_1p2>;
257
258		vreg_l2e_0p8: ldo2 {
259			regulator-name = "vreg_l2e_0p8";
260			regulator-min-microvolt = <880000>;
261			regulator-max-microvolt = <920000>;
262			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
263		};
264
265		vreg_l3e_1p2: ldo3 {
266			regulator-name = "vreg_l3e_1p2";
267			regulator-min-microvolt = <1200000>;
268			regulator-max-microvolt = <1200000>;
269			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
270		};
271	};
272
273	regulators-4 {
274		compatible = "qcom,pmc8380-rpmh-regulators";
275		qcom,pmic-id = "f";
276
277		vdd-l1-supply = <&vreg_s5j_1p2>;
278		vdd-l2-supply = <&vreg_s5j_1p2>;
279		vdd-l3-supply = <&vreg_s5j_1p2>;
280		vdd-s1-supply = <&vph_pwr>;
281
282		vreg_s1f_0p7: smps1 {
283			regulator-name = "vreg_s1f_0p7";
284			regulator-min-microvolt = <700000>;
285			regulator-max-microvolt = <1100000>;
286			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
287		};
288	};
289
290	regulators-6 {
291		compatible = "qcom,pm8550ve-rpmh-regulators";
292		qcom,pmic-id = "i";
293
294		vdd-l1-supply = <&vreg_s4c_1p8>;
295		vdd-l2-supply = <&vreg_s5j_1p2>;
296		vdd-l3-supply = <&vreg_s1f_0p7>;
297		vdd-s1-supply = <&vph_pwr>;
298		vdd-s2-supply = <&vph_pwr>;
299
300		vreg_l3i_0p8: ldo3 {
301			regulator-name = "vreg_l3i_0p8";
302			regulator-min-microvolt = <880000>;
303			regulator-max-microvolt = <920000>;
304			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
305		};
306	};
307
308	regulators-7 {
309		compatible = "qcom,pm8550ve-rpmh-regulators";
310		qcom,pmic-id = "j";
311
312		vdd-l1-supply = <&vreg_s1f_0p7>;
313		vdd-l2-supply = <&vreg_s5j_1p2>;
314		vdd-l3-supply = <&vreg_s1f_0p7>;
315		vdd-s5-supply = <&vph_pwr>;
316
317		vreg_s5j_1p2: smps5 {
318			regulator-name = "vreg_s5j_1p2";
319			regulator-min-microvolt = <1256000>;
320			regulator-max-microvolt = <1304000>;
321			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
322		};
323
324		vreg_l1j_0p8: ldo1 {
325			regulator-name = "vreg_l1j_0p8";
326			regulator-min-microvolt = <880000>;
327			regulator-max-microvolt = <920000>;
328			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
329		};
330
331		vreg_l2j_1p2: ldo2 {
332			regulator-name = "vreg_l2j_1p2";
333			regulator-min-microvolt = <1200000>;
334			regulator-max-microvolt = <1200000>;
335			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
336		};
337
338		vreg_l3j_0p8: ldo3 {
339			regulator-name = "vreg_l3j_0p8";
340			regulator-min-microvolt = <880000>;
341			regulator-max-microvolt = <920000>;
342			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
343		};
344	};
345};
346
347&gpu {
348	status = "okay";
349
350	zap-shader {
351		firmware-name = "qcom/x1e80100/ASUSTeK/vivobook-s15/qcdxkmsuc8380.mbn";
352	};
353};
354
355&i2c0 {
356	clock-frequency = <400000>;
357	status = "okay";
358
359	touchpad@15 {
360		compatible = "hid-over-i2c";
361		reg = <0x15>;
362
363		hid-descr-addr = <0x1>;
364		interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
365
366		pinctrl-0 = <&tpad_default>;
367		pinctrl-names = "default";
368
369		wakeup-source;
370	};
371};
372
373&i2c1 {
374	clock-frequency = <400000>;
375	status = "okay";
376
377	/* PS8830 USB4 Retimer? @ 0x8 */
378};
379
380&i2c3 {
381	clock-frequency = <400000>;
382	status = "okay";
383
384	/* PS8830 USB4 Retimer? @ 0x8 */
385};
386
387&i2c5 {
388	clock-frequency = <400000>;
389	status = "okay";
390
391	keyboard@3a {
392		compatible = "hid-over-i2c";
393		reg = <0x3a>;
394
395		hid-descr-addr = <0x1>;
396		interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>;
397
398		pinctrl-0 = <&kybd_default>;
399		pinctrl-names = "default";
400
401		wakeup-source;
402	};
403
404	/* EC? @ 0x5b, 0x76 */
405};
406
407&i2c7 {
408	clock-frequency = <400000>;
409	status = "okay";
410
411	/* PS8830 USB4 Retimer? @ 0x8 */
412};
413
414&mdss {
415	status = "okay";
416};
417
418&mdss_dp3 {
419	compatible = "qcom,x1e80100-dp";
420	/delete-property/ #sound-dai-cells;
421
422	status = "okay";
423
424	aux-bus {
425		panel {
426			compatible = "samsung,atna56ac03", "samsung,atna33xc20";
427			enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
428			power-supply = <&vreg_edp_3p3>;
429
430			pinctrl-0 = <&edp_bl_en>;
431			pinctrl-names = "default";
432
433			port {
434				edp_panel_in: endpoint {
435					remote-endpoint = <&mdss_dp3_out>;
436				};
437			};
438		};
439	};
440
441	ports {
442		port@1 {
443			reg = <1>;
444
445			mdss_dp3_out: endpoint {
446				data-lanes = <0 1 2 3>;
447				link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
448
449				remote-endpoint = <&edp_panel_in>;
450			};
451		};
452	};
453};
454
455&mdss_dp3_phy {
456	vdda-phy-supply = <&vreg_l3j_0p8>;
457	vdda-pll-supply = <&vreg_l2j_1p2>;
458
459	status = "okay";
460};
461
462&pcie4 {
463	perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
464	wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
465
466	pinctrl-0 = <&pcie4_default>;
467	pinctrl-names = "default";
468
469	status = "okay";
470};
471
472&pcie4_phy {
473	vdda-phy-supply = <&vreg_l3i_0p8>;
474	vdda-pll-supply = <&vreg_l3e_1p2>;
475
476	status = "okay";
477};
478
479&pcie6a {
480	perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
481	wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
482
483	vddpe-3v3-supply = <&vreg_nvme>;
484
485	pinctrl-0 = <&pcie6a_default>;
486	pinctrl-names = "default";
487
488	status = "okay";
489};
490
491&pcie6a_phy {
492	vdda-phy-supply = <&vreg_l1d_0p8>;
493	vdda-pll-supply = <&vreg_l2j_1p2>;
494
495	status = "okay";
496};
497
498&pmc8380_3_gpios {
499	edp_bl_en: edp-bl-en-state {
500		pins = "gpio4";
501		function = "normal";
502		power-source = <1>; /* 1.8 V */
503		qcom,drive-strength = <PMIC_GPIO_STRENGTH_MED>;
504		bias-pull-down;
505		input-disable;
506		output-enable;
507	};
508};
509
510&qupv3_0 {
511	status = "okay";
512};
513
514&qupv3_1 {
515	status = "okay";
516};
517
518&qupv3_2 {
519	status = "okay";
520};
521
522&remoteproc_adsp {
523	firmware-name = "qcom/x1e80100/ASUSTeK/vivobook-s15/qcadsp8380.mbn",
524			"qcom/x1e80100/ASUSTeK/vivobook-s15/adsp_dtbs.elf";
525
526	status = "okay";
527};
528
529&remoteproc_cdsp {
530	firmware-name = "qcom/x1e80100/ASUSTeK/vivobook-s15/qccdsp8380.mbn",
531			"qcom/x1e80100/ASUSTeK/vivobook-s15/cdsp_dtbs.elf";
532
533	status = "okay";
534};
535
536&smb2360_0 {
537	status = "okay";
538};
539
540&smb2360_0_eusb2_repeater {
541	vdd18-supply = <&vreg_l3d_1p8>;
542	vdd3-supply = <&vreg_l2b_3p0>;
543};
544
545&smb2360_1 {
546	status = "okay";
547};
548
549&smb2360_1_eusb2_repeater {
550	vdd18-supply = <&vreg_l3d_1p8>;
551	vdd3-supply = <&vreg_l14b_3p0>;
552};
553
554&tlmm {
555	gpio-reserved-ranges = <34 2>, /* Unused */
556			       <44 4>, /* SPI (TPM) */
557			       <238 1>; /* UFS Reset */
558
559	edp_reg_en: edp-reg-en-state {
560		pins = "gpio70";
561		function = "gpio";
562		drive-strength = <16>;
563		bias-disable;
564	};
565
566	hall_int_n_default: hall-int-n-state {
567		pins = "gpio92";
568		function = "gpio";
569		bias-disable;
570	};
571
572	kybd_default: kybd-default-state {
573		pins = "gpio67";
574		function = "gpio";
575		bias-disable;
576	};
577
578	nvme_reg_en: nvme-reg-en-state {
579		pins = "gpio18";
580		function = "gpio";
581		drive-strength = <2>;
582		bias-disable;
583	};
584
585	pcie4_default: pcie4-default-state {
586		clkreq-n-pins {
587			pins = "gpio147";
588			function = "pcie4_clk";
589			drive-strength = <2>;
590			bias-pull-up;
591		};
592
593		perst-n-pins {
594			pins = "gpio146";
595			function = "gpio";
596			drive-strength = <2>;
597			bias-disable;
598		};
599
600		wake-n-pins {
601			pins = "gpio148";
602			function = "gpio";
603			drive-strength = <2>;
604			bias-pull-up;
605		};
606	};
607
608	pcie6a_default: pcie6a-default-state {
609		clkreq-n-pins {
610			pins = "gpio153";
611			function = "pcie6a_clk";
612			drive-strength = <2>;
613			bias-pull-up;
614		};
615
616		perst-n-pins {
617			pins = "gpio152";
618			function = "gpio";
619			drive-strength = <2>;
620			bias-disable;
621		};
622
623		wake-n-pins {
624			pins = "gpio154";
625			function = "gpio";
626			drive-strength = <2>;
627			bias-pull-up;
628		};
629	};
630
631	tpad_default: tpad-default-state {
632		pins = "gpio3";
633		function = "gpio";
634		bias-disable;
635	};
636};
637
638&usb_1_ss0_hsphy {
639	vdd-supply = <&vreg_l3j_0p8>;
640	vdda12-supply = <&vreg_l2j_1p2>;
641
642	phys = <&smb2360_0_eusb2_repeater>;
643
644	status = "okay";
645};
646
647&usb_1_ss0_qmpphy {
648	vdda-phy-supply = <&vreg_l2j_1p2>;
649	vdda-pll-supply = <&vreg_l1j_0p8>;
650
651	status = "okay";
652};
653
654&usb_1_ss0 {
655	status = "okay";
656};
657
658&usb_1_ss0_dwc3 {
659	dr_mode = "host";
660};
661
662&usb_1_ss0_dwc3_hs {
663	remote-endpoint = <&pmic_glink_ss0_hs_in>;
664};
665
666&usb_1_ss0_qmpphy_out {
667	remote-endpoint = <&pmic_glink_ss0_ss_in>;
668};
669
670&usb_1_ss1_hsphy {
671	vdd-supply = <&vreg_l3j_0p8>;
672	vdda12-supply = <&vreg_l2j_1p2>;
673
674	phys = <&smb2360_1_eusb2_repeater>;
675
676	status = "okay";
677};
678
679&usb_1_ss1_qmpphy {
680	vdda-phy-supply = <&vreg_l2j_1p2>;
681	vdda-pll-supply = <&vreg_l2d_0p9>;
682
683	status = "okay";
684};
685
686&usb_1_ss1 {
687	status = "okay";
688};
689
690&usb_1_ss1_dwc3 {
691	dr_mode = "host";
692};
693
694&usb_1_ss1_dwc3_hs {
695	remote-endpoint = <&pmic_glink_ss1_hs_in>;
696};
697
698&usb_1_ss1_qmpphy_out {
699	remote-endpoint = <&pmic_glink_ss1_ss_in>;
700};
701