1// SPDX-License-Identifier: GPL-2.0
2/* Copyright (c) 2019, Jeffrey Hugo. All rights reserved. */
3
4/*
5 * Common include for MSM8998 clamshell devices, ie the Lenovo Miix 630,
6 * Asus NovaGo TP370QL, and HP Envy x2.  All three devices are basically the
7 * same, with differences in peripherals.
8 */
9
10#include "msm8998.dtsi"
11#include "pm8998.dtsi"
12#include "pm8005.dtsi"
13
14/ {
15	chosen {
16	};
17
18	vph_pwr: vph-pwr-regulator {
19		compatible = "regulator-fixed";
20		regulator-name = "vph_pwr";
21		regulator-always-on;
22		regulator-boot-on;
23	};
24};
25
26&blsp1_uart3 {
27	status = "okay";
28
29	bluetooth {
30		compatible = "qcom,wcn3990-bt";
31
32		vddio-supply = <&vreg_s4a_1p8>;
33		vddxo-supply = <&vreg_l7a_1p8>;
34		vddrf-supply = <&vreg_l17a_1p3>;
35		vddch0-supply = <&vreg_l25a_3p3>;
36		max-speed = <3200000>;
37	};
38};
39
40/*
41 * The laptop FW does not appear to support the retention state as it is
42 * not advertised as enabled in ACPI, and enabling it in DT can cause boot
43 * hangs.
44 */
45&CPU0 {
46	cpu-idle-states = <&LITTLE_CPU_SLEEP_1>;
47};
48
49&CPU1 {
50	cpu-idle-states = <&LITTLE_CPU_SLEEP_1>;
51};
52
53&CPU2 {
54	cpu-idle-states = <&LITTLE_CPU_SLEEP_1>;
55};
56
57&CPU3 {
58	cpu-idle-states = <&LITTLE_CPU_SLEEP_1>;
59};
60
61&CPU4 {
62	cpu-idle-states = <&BIG_CPU_SLEEP_1>;
63};
64
65&CPU5 {
66	cpu-idle-states = <&BIG_CPU_SLEEP_1>;
67};
68
69&CPU6 {
70	cpu-idle-states = <&BIG_CPU_SLEEP_1>;
71};
72
73&CPU7 {
74	cpu-idle-states = <&BIG_CPU_SLEEP_1>;
75};
76
77&pcie0 {
78	status = "okay";
79};
80
81&pcie_phy {
82	status = "okay";
83};
84
85&pm8005_lsid1 {
86	pm8005-regulators {
87		compatible = "qcom,pm8005-regulators";
88
89		vdd_s1-supply = <&vph_pwr>;
90
91		pm8005_s1: s1 { /* VDD_GFX supply */
92			regulator-min-microvolt = <524000>;
93			regulator-max-microvolt = <1100000>;
94			regulator-enable-ramp-delay = <500>;
95
96			/* hack until we rig up the gpu consumer */
97			regulator-always-on;
98		};
99	};
100};
101
102&qusb2phy {
103	status = "okay";
104
105	vdd-supply = <&vreg_l1a_0p875>;
106	vdda-pll-supply = <&vreg_l12a_1p8>;
107	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
108};
109
110&rpm_requests {
111	pm8998-regulators {
112		compatible = "qcom,rpm-pm8998-regulators";
113
114		vdd_s1-supply = <&vph_pwr>;
115		vdd_s2-supply = <&vph_pwr>;
116		vdd_s3-supply = <&vph_pwr>;
117		vdd_s4-supply = <&vph_pwr>;
118		vdd_s5-supply = <&vph_pwr>;
119		vdd_s6-supply = <&vph_pwr>;
120		vdd_s7-supply = <&vph_pwr>;
121		vdd_s8-supply = <&vph_pwr>;
122		vdd_s9-supply = <&vph_pwr>;
123		vdd_s10-supply = <&vph_pwr>;
124		vdd_s11-supply = <&vph_pwr>;
125		vdd_s12-supply = <&vph_pwr>;
126		vdd_s13-supply = <&vph_pwr>;
127		vdd_l1_l27-supply = <&vreg_s7a_1p025>;
128		vdd_l2_l8_l17-supply = <&vreg_s3a_1p35>;
129		vdd_l3_l11-supply = <&vreg_s7a_1p025>;
130		vdd_l4_l5-supply = <&vreg_s7a_1p025>;
131		vdd_l6-supply = <&vreg_s5a_2p04>;
132		vdd_l7_l12_l14_l15-supply = <&vreg_s5a_2p04>;
133		vdd_l9-supply = <&vph_pwr>;
134		vdd_l10_l23_l25-supply = <&vph_pwr>;
135		vdd_l13_l19_l21-supply = <&vph_pwr>;
136		vdd_l16_l28-supply = <&vph_pwr>;
137		vdd_l18_l22-supply = <&vph_pwr>;
138		vdd_l20_l24-supply = <&vph_pwr>;
139		vdd_l26-supply = <&vreg_s3a_1p35>;
140		vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;
141
142		vreg_s3a_1p35: s3 {
143			regulator-min-microvolt = <1352000>;
144			regulator-max-microvolt = <1352000>;
145		};
146		vreg_s4a_1p8: s4 {
147			regulator-min-microvolt = <1800000>;
148			regulator-max-microvolt = <1800000>;
149			regulator-allow-set-load;
150		};
151		vreg_s5a_2p04: s5 {
152			regulator-min-microvolt = <1904000>;
153			regulator-max-microvolt = <2040000>;
154		};
155		vreg_s7a_1p025: s7 {
156			regulator-min-microvolt = <900000>;
157			regulator-max-microvolt = <1028000>;
158		};
159		vreg_l1a_0p875: l1 {
160			regulator-min-microvolt = <880000>;
161			regulator-max-microvolt = <880000>;
162			regulator-allow-set-load;
163		};
164		vreg_l2a_1p2: l2 {
165			regulator-min-microvolt = <1200000>;
166			regulator-max-microvolt = <1200000>;
167			regulator-allow-set-load;
168		};
169		vreg_l3a_1p0: l3 {
170			regulator-min-microvolt = <1000000>;
171			regulator-max-microvolt = <1000000>;
172		};
173		vreg_l5a_0p8: l5 {
174			regulator-min-microvolt = <800000>;
175			regulator-max-microvolt = <800000>;
176		};
177		vreg_l6a_1p8: l6 {
178			regulator-min-microvolt = <1808000>;
179			regulator-max-microvolt = <1808000>;
180		};
181		vreg_l7a_1p8: l7 {
182			regulator-min-microvolt = <1800000>;
183			regulator-max-microvolt = <1800000>;
184			regulator-allow-set-load;
185		};
186		vreg_l8a_1p2: l8 {
187			regulator-min-microvolt = <1200000>;
188			regulator-max-microvolt = <1200000>;
189		};
190		vreg_l9a_1p8: l9 {
191			regulator-min-microvolt = <1808000>;
192			regulator-max-microvolt = <2960000>;
193		};
194		vreg_l10a_1p8: l10 {
195			regulator-min-microvolt = <1808000>;
196			regulator-max-microvolt = <2960000>;
197		};
198		vreg_l11a_1p0: l11 {
199			regulator-min-microvolt = <1000000>;
200			regulator-max-microvolt = <1000000>;
201		};
202		vreg_l12a_1p8: l12 {
203			regulator-min-microvolt = <1800000>;
204			regulator-max-microvolt = <1800000>;
205		};
206		vreg_l13a_2p95: l13 {
207			regulator-min-microvolt = <1808000>;
208			regulator-max-microvolt = <2960000>;
209		};
210		vreg_l14a_1p88: l14 {
211			regulator-min-microvolt = <1880000>;
212			regulator-max-microvolt = <1880000>;
213		};
214		vreg_l15a_1p8: l15 {
215			regulator-min-microvolt = <1800000>;
216			regulator-max-microvolt = <1800000>;
217		};
218		vreg_l16a_2p7: l16 {
219			regulator-min-microvolt = <2704000>;
220			regulator-max-microvolt = <2704000>;
221		};
222		vreg_l17a_1p3: l17 {
223			regulator-min-microvolt = <1304000>;
224			regulator-max-microvolt = <1304000>;
225			regulator-allow-set-load;
226		};
227		vreg_l18a_2p7: l18 {
228			regulator-min-microvolt = <2704000>;
229			regulator-max-microvolt = <2704000>;
230		};
231		vreg_l19a_3p0: l19 {
232			regulator-min-microvolt = <3008000>;
233			regulator-max-microvolt = <3008000>;
234		};
235		vreg_l20a_2p95: l20 {
236			regulator-min-microvolt = <2960000>;
237			regulator-max-microvolt = <2960000>;
238			regulator-allow-set-load;
239		};
240		vreg_l21a_2p95: l21 {
241			regulator-min-microvolt = <2960000>;
242			regulator-max-microvolt = <2960000>;
243			regulator-allow-set-load;
244			regulator-system-load = <800000>;
245		};
246		vreg_l22a_2p85: l22 {
247			regulator-min-microvolt = <2864000>;
248			regulator-max-microvolt = <2864000>;
249		};
250		vreg_l23a_3p3: l23 {
251			regulator-min-microvolt = <3312000>;
252			regulator-max-microvolt = <3312000>;
253		};
254		vreg_l24a_3p075: l24 {
255			regulator-min-microvolt = <3088000>;
256			regulator-max-microvolt = <3088000>;
257		};
258		vreg_l25a_3p3: l25 {
259			regulator-min-microvolt = <3104000>;
260			regulator-max-microvolt = <3312000>;
261			regulator-allow-set-load;
262		};
263		vreg_l26a_1p2: l26 {
264			regulator-min-microvolt = <1200000>;
265			regulator-max-microvolt = <1200000>;
266		};
267		vreg_l28_3p0: l28 {
268			regulator-min-microvolt = <3008000>;
269			regulator-max-microvolt = <3008000>;
270		};
271
272		vreg_lvs1a_1p8: lvs1 {
273			regulator-min-microvolt = <1800000>;
274			regulator-max-microvolt = <1800000>;
275		};
276
277		vreg_lvs2a_1p8: lvs2 {
278			regulator-min-microvolt = <1800000>;
279			regulator-max-microvolt = <1800000>;
280		};
281
282	};
283};
284
285&remoteproc_mss {
286	status = "okay";
287};
288
289&tlmm {
290	gpio-reserved-ranges = <0 4>, <81 4>;
291
292	touchpad: touchpad {
293		config {
294			pins = "gpio123";
295			bias-pull-up;           /* pull up */
296		};
297	};
298};
299
300&sdhc2 {
301	status = "okay";
302
303	vmmc-supply = <&vreg_l21a_2p95>;
304	vqmmc-supply = <&vreg_l13a_2p95>;
305
306	pinctrl-names = "default", "sleep";
307	pinctrl-0 = <&sdc2_clk_on  &sdc2_cmd_on  &sdc2_data_on  &sdc2_cd_on>;
308	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
309};
310
311&ufshc {
312	status = "okay";
313};
314
315&ufsphy {
316	status = "okay";
317	vdda-phy-supply = <&vreg_l1a_0p875>;
318	vdda-pll-supply = <&vreg_l2a_1p2>;
319};
320
321&usb3 {
322	status = "okay";
323};
324
325&usb3_dwc3 {
326	dr_mode = "host"; /* Force to host until we have Type-C hooked up */
327};
328
329&usb3phy {
330	status = "okay";
331
332	vdda-phy-supply = <&vreg_l1a_0p875>;
333	vdda-pll-supply = <&vreg_l2a_1p2>;
334};
335
336&wifi {
337	status = "okay";
338
339	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
340	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
341	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
342	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
343};
344
345/* PINCTRL - board-specific pinctrl */
346&blsp1_uart3_on {
347	rx {
348		/delete-property/ bias-disable;
349		/*
350		 * Configure a pull-up on 45 (RX). This is needed to
351		 * avoid garbage data when the TX pin of the Bluetooth
352		 * module is in tri-state (module powered off or not
353		 * driving the signal yet).
354		 */
355		bias-pull-up;
356	};
357
358	cts {
359		/delete-property/ bias-disable;
360		/*
361		 * Configure a pull-down on 47 (CTS) to match the pull
362		 * of the Bluetooth module.
363		 */
364		bias-pull-down;
365	};
366};
367