xref: /linux/arch/arm64/boot/dts/qcom/sc8180x-lenovo-flex-5g.dts (revision f4fee216df7d28b87d1c9cc60bcebfecb51c1a05)
1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2020-2023, Linaro Limited
5 */
6
7/dts-v1/;
8
9#include <dt-bindings/firmware/qcom,scm.h>
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/input/gpio-keys.h>
12#include <dt-bindings/input/input.h>
13#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
14#include "sc8180x.dtsi"
15#include "sc8180x-pmics.dtsi"
16
17/ {
18	model = "Lenovo Flex 5G";
19	compatible = "lenovo,flex-5g", "qcom,sc8180x";
20
21	aliases {
22		serial0 = &uart13;
23	};
24
25	backlight: backlight {
26		compatible = "pwm-backlight";
27		pwms = <&pmc8180c_lpg 4 1000000>;
28		enable-gpios = <&pmc8180c_gpios 8 GPIO_ACTIVE_HIGH>;
29
30		pinctrl-0 = <&bl_pwm_default>;
31		pinctrl-names = "default";
32	};
33
34	gpio-keys {
35		compatible = "gpio-keys";
36
37		pinctrl-0 = <&hall_int_active_state>;
38		pinctrl-names = "default";
39
40		lid-switch {
41			gpios = <&tlmm 121 GPIO_ACTIVE_LOW>;
42			linux,input-type = <EV_SW>;
43			linux,code = <SW_LID>;
44			wakeup-source;
45			wakeup-event-action = <EV_ACT_DEASSERTED>;
46		};
47	};
48
49	pmic-glink {
50		compatible = "qcom,sc8180x-pmic-glink", "qcom,pmic-glink";
51
52		#address-cells = <1>;
53		#size-cells = <0>;
54
55		connector@0 {
56			compatible = "usb-c-connector";
57			reg = <0>;
58			power-role = "dual";
59			data-role = "dual";
60
61			ports {
62				#address-cells = <1>;
63				#size-cells = <0>;
64
65				port@0 {
66					reg = <0>;
67
68					pmic_glink_con0_hs: endpoint {
69						remote-endpoint = <&usb_prim_role_switch>;
70					};
71				};
72
73				port@1 {
74					reg = <1>;
75
76					pmic_glink_con0_ss: endpoint {
77						remote-endpoint = <&usb_prim_qmpphy_out>;
78					};
79				};
80
81				port@2 {
82					reg = <2>;
83
84					pmic_glink_con0_sbu: endpoint {
85						remote-endpoint = <&usbprim_sbu_mux>;
86					};
87				};
88			};
89		};
90
91		connector@1 {
92			compatible = "usb-c-connector";
93			reg = <1>;
94			power-role = "dual";
95			data-role = "dual";
96
97			ports {
98				#address-cells = <1>;
99				#size-cells = <0>;
100				port@0 {
101					reg = <0>;
102
103					pmic_glink_con1_hs: endpoint {
104						remote-endpoint = <&usb_sec_role_switch>;
105					};
106				};
107
108				port@1 {
109					reg = <1>;
110
111					pmic_glink_con1_ss: endpoint {
112						remote-endpoint = <&usb_sec_qmpphy_out>;
113					};
114				};
115
116				port@2 {
117					reg = <2>;
118
119					pmic_glink_con1_sbu: endpoint {
120						remote-endpoint = <&usbsec_sbu_mux>;
121					};
122				};
123			};
124		};
125	};
126
127	reserved-memory {
128		rmtfs_mem: rmtfs-region@85500000 {
129			compatible = "qcom,rmtfs-mem";
130			reg = <0x0 0x85500000 0x0 0x200000>;
131			no-map;
132
133			qcom,client-id = <1>;
134			qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
135		};
136
137		wlan_mem: wlan-region@8bc00000 {
138			reg = <0x0 0x8bc00000 0x0 0x180000>;
139			no-map;
140		};
141
142		mpss_mem: mpss-region@8d800000 {
143			reg = <0x0 0x8d800000 0x0 0x3000000>;
144			no-map;
145		};
146
147		adsp_mem: adsp-region@90800000 {
148			reg = <0x0 0x90800000 0x0 0x1c00000>;
149			no-map;
150		};
151
152		gpu_mem: gpu-region@98715000 {
153			reg = <0x0 0x98715000 0x0 0x2000>;
154			no-map;
155		};
156
157		cdsp_mem: cdsp-region@98900000 {
158			reg = <0x0 0x98900000 0x0 0x1400000>;
159			no-map;
160		};
161	};
162
163	vph_pwr: vph-pwr-regulator {
164		compatible = "regulator-fixed";
165		regulator-name = "vph_pwr";
166		regulator-min-microvolt = <3700000>;
167		regulator-max-microvolt = <3700000>;
168	};
169
170	vreg_s4a_1p8: pm8150-s4-regulator {
171		compatible = "regulator-fixed";
172		regulator-name = "vreg_s4a_1p8";
173
174		regulator-min-microvolt = <1800000>;
175		regulator-max-microvolt = <1800000>;
176
177		regulator-always-on;
178		regulator-boot-on;
179
180		vin-supply = <&vph_pwr>;
181	};
182
183	usbprim-sbu-mux {
184		compatible = "pericom,pi3usb102", "gpio-sbu-mux";
185
186		enable-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
187		select-gpios = <&tlmm 100 GPIO_ACTIVE_HIGH>;
188
189		pinctrl-names = "default";
190		pinctrl-0 = <&usbprim_sbu_default>;
191
192		mode-switch;
193		orientation-switch;
194
195		port {
196			usbprim_sbu_mux: endpoint {
197				remote-endpoint = <&pmic_glink_con0_sbu>;
198			};
199		};
200	};
201
202	usbsec-sbu-mux {
203		compatible = "pericom,pi3usb102", "gpio-sbu-mux";
204
205		enable-gpios = <&tlmm 188 GPIO_ACTIVE_LOW>;
206		select-gpios = <&tlmm 187 GPIO_ACTIVE_HIGH>;
207
208		pinctrl-names = "default";
209		pinctrl-0 = <&usbsec_sbu_default>;
210
211		mode-switch;
212		orientation-switch;
213
214		port {
215			usbsec_sbu_mux: endpoint {
216				remote-endpoint = <&pmic_glink_con1_sbu>;
217			};
218		};
219	};
220};
221
222&apps_rsc {
223	regulators-0 {
224		compatible = "qcom,pmc8180-rpmh-regulators";
225		qcom,pmic-id = "a";
226
227		vdd-s5-supply = <&vph_pwr>;
228		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p0>;
229
230		vreg_s5a_2p0: smps5 {
231			regulator-min-microvolt = <2040000>;
232			regulator-max-microvolt = <2100000>;
233		};
234
235		vreg_l7a_1p8: ldo7 {
236			regulator-min-microvolt = <1800000>;
237			regulator-max-microvolt = <1800000>;
238			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
239		};
240
241		vreg_l9a_1p3: ldo9 {
242			regulator-min-microvolt = <1296000>;
243			regulator-max-microvolt = <1304000>;
244			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
245		};
246
247		vreg_l12a_1p8: ldo12 {
248			regulator-min-microvolt = <1800000>;
249			regulator-max-microvolt = <1800000>;
250			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
251		};
252	};
253
254	regulators-1 {
255		compatible = "qcom,pmc8180c-rpmh-regulators";
256		qcom,pmic-id = "c";
257
258		vdd-s6-supply = <&vph_pwr>;
259		vdd-l2-l3-supply = <&vreg_s6c_1p35>;
260		vdd-bob-supply = <&vph_pwr>;
261
262		vreg_s6c_1p35: smps6 {
263			regulator-min-microvolt = <1350000>;
264			regulator-max-microvolt = <1372000>;
265			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
266		};
267
268		vreg_l3c_1p2: ldo3 {
269			regulator-min-microvolt = <1200000>;
270			regulator-max-microvolt = <1200000>;
271			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
272		};
273
274		vreg_l10c_3p3: ldo10 {
275			regulator-min-microvolt = <3000000>;
276			regulator-max-microvolt = <3312000>;
277			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
278		};
279
280		vreg_l11c_3p3: ldo11 {
281			regulator-min-microvolt = <3296000>;
282			regulator-max-microvolt = <3304000>;
283			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
284		};
285
286		vreg_bob: bob {
287			regulator-min-microvolt = <3296000>;
288			regulator-max-microvolt = <3350000>;
289			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
290		};
291	};
292
293	regulators-2 {
294		compatible = "qcom,pmc8180-rpmh-regulators";
295		qcom,pmic-id = "e";
296
297		vdd-s4-supply = <&vph_pwr>;
298		vdd-s5-supply = <&vph_pwr>;
299		vdd-l2-l10-supply = <&vreg_bob>;
300		vdd-l3-l4-l5-l18-supply = <&vreg_s4e_0p98>;
301		vdd-l7-l12-l14-l15-supply = <&vreg_s5e_2p05>;
302		vdd-l13-l16-l17-supply = <&vreg_bob>;
303
304		vreg_s4e_0p98: smps4 {
305			regulator-min-microvolt = <992000>;
306			regulator-max-microvolt = <992000>;
307			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
308		};
309
310		vreg_s5e_2p05: smps5 {
311			regulator-min-microvolt = <2040000>;
312			regulator-max-microvolt = <2040000>;
313			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
314		};
315
316		vreg_l1e_0p75: ldo1 {
317			regulator-min-microvolt = <752000>;
318			regulator-max-microvolt = <752000>;
319			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
320		};
321
322		vreg_l5e_0p88: ldo5 {
323			regulator-min-microvolt = <880000>;
324			regulator-max-microvolt = <880000>;
325			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
326		};
327
328		vreg_l7e_1p8: ldo7 {
329			regulator-min-microvolt = <1800000>;
330			regulator-max-microvolt = <1800000>;
331			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
332		};
333
334		vreg_l10e_2p9: ldo10 {
335			regulator-min-microvolt = <2904000>;
336			regulator-max-microvolt = <2904000>;
337			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
338		};
339
340		vreg_l16e_3p0: ldo16 {
341			regulator-min-microvolt = <3072000>;
342			regulator-max-microvolt = <3072000>;
343			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
344		};
345	};
346};
347
348&gpu {
349	status = "okay";
350
351	zap-shader {
352		memory-region = <&gpu_mem>;
353		firmware-name = "qcom/sc8180x/qcdxkmsuc8180.mbn";
354	};
355};
356
357&i2c1 {
358	clock-frequency = <100000>;
359
360	pinctrl-0 = <&i2c1_active>, <&i2c1_hid_active>;
361	pinctrl-names = "default";
362
363	status = "okay";
364
365	hid@10 {
366		compatible = "hid-over-i2c";
367		reg = <0x10>;
368		hid-descr-addr = <0x1>;
369
370		interrupts-extended = <&tlmm 122 IRQ_TYPE_LEVEL_LOW>;
371	};
372};
373
374&i2c7 {
375	clock-frequency = <100000>;
376
377	pinctrl-0 = <&i2c7_active>, <&i2c7_hid_active>;
378	pinctrl-names = "default";
379
380	status = "okay";
381
382	hid@5 {
383		compatible = "hid-over-i2c";
384		reg = <0x5>;
385		hid-descr-addr = <0x20>;
386
387		interrupts-extended = <&tlmm 37 IRQ_TYPE_LEVEL_LOW>;
388	};
389
390	hid@2c {
391		compatible = "hid-over-i2c";
392		reg = <0x2c>;
393		hid-descr-addr = <0x20>;
394
395		interrupts-extended = <&tlmm 24 IRQ_TYPE_LEVEL_LOW>;
396	};
397};
398
399&mdss {
400	status = "okay";
401};
402
403&mdss_dp0 {
404	status = "okay";
405};
406
407&mdss_dp0_out {
408	data-lanes = <0 1>;
409	remote-endpoint = <&usb_prim_qmpphy_dp_in>;
410};
411
412&mdss_dp1 {
413	status = "okay";
414};
415
416&mdss_dp1_out {
417	data-lanes = <0 1>;
418	remote-endpoint = <&usb_sec_qmpphy_dp_in>;
419};
420
421&mdss_edp {
422	data-lanes = <0 1 2 3>;
423
424	pinctrl-0 = <&edp_hpd_active>;
425	pinctrl-names = "default";
426
427	status = "okay";
428
429	aux-bus {
430		panel {
431			compatible = "edp-panel";
432			no-hpd;
433
434			backlight = <&backlight>;
435
436			port {
437				auo_b140han06_in: endpoint {
438					remote-endpoint = <&mdss_edp_out>;
439				};
440			};
441		};
442	};
443
444	ports {
445		port@1 {
446			reg = <1>;
447			mdss_edp_out: endpoint {
448				remote-endpoint = <&auo_b140han06_in>;
449			};
450		};
451	};
452};
453
454&pcie3 {
455	perst-gpios = <&tlmm 178 GPIO_ACTIVE_LOW>;
456	wake-gpios = <&tlmm 180 GPIO_ACTIVE_HIGH>;
457	pinctrl-0 = <&pcie3_default_state>;
458	pinctrl-names = "default";
459
460	status = "okay";
461};
462
463&pcie3_phy {
464	vdda-phy-supply = <&vreg_l5e_0p88>;
465	vdda-pll-supply = <&vreg_l3c_1p2>;
466
467	status = "okay";
468};
469
470&pmc8180c_lpg {
471	status = "okay";
472};
473
474&qupv3_id_0 {
475	status = "okay";
476};
477
478&qupv3_id_1 {
479	status = "okay";
480};
481
482&qupv3_id_2 {
483	status = "okay";
484};
485
486&remoteproc_adsp {
487	memory-region = <&adsp_mem>;
488	firmware-name = "qcom/sc8180x/LENOVO/82AK/qcadsp8180.mbn";
489
490	status = "okay";
491};
492
493&remoteproc_cdsp {
494	memory-region = <&cdsp_mem>;
495	firmware-name = "qcom/sc8180x/LENOVO/82AK/qccdsp8180.mbn";
496
497	status = "okay";
498};
499
500&remoteproc_mpss {
501	memory-region = <&mpss_mem>;
502	firmware-name = "qcom/sc8180x/LENOVO/82AK/qcmpss8180_nm.mbn";
503
504	status = "okay";
505};
506
507&uart13 {
508	pinctrl-0 = <&uart13_state>;
509	pinctrl-names = "default";
510
511	status = "okay";
512
513	bluetooth {
514		compatible = "qcom,wcn3998-bt";
515
516		vddio-supply = <&vreg_s4a_1p8>;
517		vddxo-supply = <&vreg_l7a_1p8>;
518		vddrf-supply = <&vreg_l9a_1p3>;
519		vddch0-supply = <&vreg_l11c_3p3>;
520		max-speed = <3200000>;
521	};
522};
523
524&ufs_mem_hc {
525	reset-gpios = <&tlmm 190 GPIO_ACTIVE_LOW>;
526
527	vcc-supply = <&vreg_l10e_2p9>;
528	vcc-max-microamp = <155000>;
529
530	vccq2-supply = <&vreg_l7e_1p8>;
531	vccq2-max-microamp = <425000>;
532
533	status = "okay";
534};
535
536&ufs_mem_phy {
537	vdda-phy-supply = <&vreg_l5e_0p88>;
538	vdda-pll-supply = <&vreg_l3c_1p2>;
539
540	status = "okay";
541};
542
543&usb_prim_hsphy {
544	vdda-pll-supply = <&vreg_l5e_0p88>;
545	vdda18-supply = <&vreg_l12a_1p8>;
546	vdda33-supply = <&vreg_l16e_3p0>;
547
548	status = "okay";
549};
550
551&usb_prim_qmpphy {
552	vdda-phy-supply = <&vreg_l3c_1p2>;
553	vdda-pll-supply = <&vreg_l5e_0p88>;
554
555	orientation-switch;
556
557	status = "okay";
558};
559
560&usb_prim {
561	status = "okay";
562};
563
564&usb_prim_dwc3 {
565	dr_mode = "host";
566};
567
568&usb_prim_qmpphy_dp_in {
569	remote-endpoint = <&mdss_dp0_out>;
570};
571
572&usb_prim_qmpphy_out {
573	remote-endpoint = <&pmic_glink_con0_ss>;
574};
575
576&usb_prim_role_switch {
577	remote-endpoint = <&pmic_glink_con0_hs>;
578};
579
580&usb_sec_hsphy {
581	vdda-pll-supply = <&vreg_l5e_0p88>;
582	vdda18-supply = <&vreg_l12a_1p8>;
583	vdda33-supply = <&vreg_l16e_3p0>;
584
585	status = "okay";
586};
587
588&usb_sec_qmpphy {
589	vdda-phy-supply = <&vreg_l3c_1p2>;
590	vdda-pll-supply = <&vreg_l5e_0p88>;
591
592	orientation-switch;
593
594	status = "okay";
595};
596
597&usb_sec_qmpphy_dp_in {
598	remote-endpoint = <&mdss_dp1_out>;
599};
600
601&usb_sec_qmpphy_out {
602	remote-endpoint = <&pmic_glink_con1_ss>;
603};
604
605&usb_sec_role_switch {
606	remote-endpoint = <&pmic_glink_con1_hs>;
607};
608
609&usb_sec {
610	status = "okay";
611};
612
613&usb_sec_dwc3 {
614	dr_mode = "host";
615};
616
617&wifi {
618	memory-region = <&wlan_mem>;
619
620	vdd-0.8-cx-mx-supply = <&vreg_l1e_0p75>;
621	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
622	vdd-1.3-rfa-supply = <&vreg_l9a_1p3>;
623	vdd-3.3-ch0-supply = <&vreg_l11c_3p3>;
624	vdd-3.3-ch1-supply = <&vreg_l10c_3p3>;
625
626	status = "okay";
627};
628
629&xo_board_clk {
630	clock-frequency = <38400000>;
631};
632
633/* PINCTRL */
634
635&pmc8180c_gpios {
636	bl_pwm_default: bl-pwm-default-state {
637		en-pins {
638			pins = "gpio8";
639			function = "normal";
640		};
641
642		pwm-pins {
643			pins = "gpio10";
644			function = "func1";
645		};
646	};
647};
648
649&tlmm {
650	gpio-reserved-ranges = <0 4>, <47 4>, <126 4>;
651
652	edp_hpd_active: epd-hpd-active-state {
653		pins = "gpio10";
654		function = "edp_hot";
655	};
656
657	hall_int_active_state: hall-int-active-state {
658		pins = "gpio121";
659		function = "gpio";
660
661		bias-disable;
662	};
663
664	i2c1_active: i2c1-active-state {
665		pins = "gpio114", "gpio115";
666		function = "qup1";
667
668		bias-pull-up = <1>;
669		drive-strength = <2>;
670	};
671
672	i2c1_hid_active: i2c1-hid-active-state {
673		pins = "gpio122";
674		function = "gpio";
675
676		bias-pull-up;
677		drive-strength = <2>;
678	};
679
680	i2c7_active: i2c7-active-state {
681		pins = "gpio98", "gpio99";
682		function = "qup7";
683
684		bias-pull-up;
685		drive-strength = <2>;
686	};
687
688	i2c7_hid_active: i2c7-hid-active-state {
689		pins = "gpio37", "gpio24";
690		function = "gpio";
691
692		bias-pull-up;
693		drive-strength = <2>;
694	};
695
696	pcie3_default_state: pcie3-default-state {
697		clkreq-pins {
698			pins = "gpio179";
699			function = "pci_e3";
700			bias-pull-up;
701		};
702
703		reset-n-pins {
704			pins = "gpio178";
705			function = "gpio";
706
707			drive-strength = <2>;
708			output-low;
709			bias-pull-down;
710		};
711
712		wake-n-pins {
713			pins = "gpio180";
714			function = "gpio";
715
716			drive-strength = <2>;
717			bias-pull-up;
718		};
719	};
720
721	usbprim_sbu_default: usbprim-sbu-state {
722		oe-n-pins {
723			pins = "gpio152";
724			function = "gpio";
725			bias-disable;
726			drive-strength = <16>;
727			output-high;
728		};
729
730		sel-pins {
731			pins = "gpio100";
732			function = "gpio";
733			bias-disable;
734			drive-strength = <16>;
735		};
736	};
737
738	usbsec_sbu_default: usbsec-sbu-state {
739		oe-n-pins {
740			pins = "gpio188";
741			function = "gpio";
742			bias-disable;
743			drive-strength = <16>;
744			output-high;
745		};
746
747		sel-pins {
748			pins = "gpio187";
749			function = "gpio";
750			bias-disable;
751			drive-strength = <16>;
752		};
753	};
754
755	uart13_state: uart13-state {
756		cts-pins {
757			pins = "gpio43";
758			function = "qup13";
759			bias-pull-down;
760		};
761
762		rts-tx-pins {
763			pins = "gpio44", "gpio45";
764			function = "qup13";
765			drive-strength = <2>;
766			bias-disable;
767		};
768
769		rx-pins {
770			pins = "gpio46";
771			function = "qup13";
772			bias-pull-up;
773		};
774	};
775};
776