1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (C) 2021, Microsoft Corporation
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
9#include "sm8350.dtsi"
10#include "pm8350.dtsi"
11#include "pm8350b.dtsi"
12#include "pm8350c.dtsi"
13#include "pmk8350.dtsi"
14#include "pmr735a.dtsi"
15#include "pmr735b.dtsi"
16
17/ {
18	model = "Microsoft Surface Duo 2";
19	compatible = "microsoft,surface-duo2", "qcom,sm8350";
20	chassis-type = "handset";
21
22	aliases {
23		serial0 = &uart2;
24	};
25
26	chosen {
27		stdout-path = "serial0:115200n8";
28	};
29
30	vph_pwr: vph-pwr-regulator {
31		compatible = "regulator-fixed";
32		regulator-name = "vph_pwr";
33		regulator-min-microvolt = <3700000>;
34		regulator-max-microvolt = <3700000>;
35
36		regulator-always-on;
37		regulator-boot-on;
38	};
39};
40
41&adsp {
42	status = "okay";
43	firmware-name = "qcom/sm8350/microsoft/adsp.mbn";
44};
45
46&apps_rsc {
47	regulators-0 {
48		compatible = "qcom,pm8350-rpmh-regulators";
49		qcom,pmic-id = "b";
50
51		vdd-s1-supply = <&vph_pwr>;
52		vdd-s2-supply = <&vph_pwr>;
53		vdd-s3-supply = <&vph_pwr>;
54		vdd-s4-supply = <&vph_pwr>;
55		vdd-s5-supply = <&vph_pwr>;
56		vdd-s6-supply = <&vph_pwr>;
57		vdd-s7-supply = <&vph_pwr>;
58		vdd-s8-supply = <&vph_pwr>;
59		vdd-s9-supply = <&vph_pwr>;
60		vdd-s10-supply = <&vph_pwr>;
61		vdd-s11-supply = <&vph_pwr>;
62		vdd-s12-supply = <&vph_pwr>;
63
64		vdd-l1-l4-supply = <&vreg_s11b_0p95>;
65		vdd-l2-l7-supply = <&vreg_bob>;
66		vdd-l3-l5-supply = <&vreg_bob>;
67		vdd-l6-l9-l10-supply = <&vreg_s11b_0p95>;
68		vdd-l8-supply = <&vreg_s2c_0p8>;
69
70		vreg_s10b_1p8: smps10 {
71			regulator-name = "vreg_s10b_1p8";
72			regulator-min-microvolt = <1800000>;
73			regulator-max-microvolt = <1800000>;
74		};
75
76		vreg_s11b_0p95: smps11 {
77			regulator-name = "vreg_s11b_0p95";
78			regulator-min-microvolt = <752000>;
79			regulator-max-microvolt = <1000000>;
80		};
81
82		vreg_s12b_1p25: smps12 {
83			regulator-name = "vreg_s12b_1p25";
84			regulator-min-microvolt = <1224000>;
85			regulator-max-microvolt = <1360000>;
86		};
87
88		vreg_l1b_0p88: ldo1 {
89			regulator-name = "vreg_l1b_0p88";
90			regulator-min-microvolt = <912000>;
91			regulator-max-microvolt = <920000>;
92			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
93		};
94
95		vreg_l2b_3p07: ldo2 {
96			regulator-name = "vreg_l2b_3p07";
97			regulator-min-microvolt = <3072000>;
98			regulator-max-microvolt = <3072000>;
99			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
100		};
101
102		vreg_l3b_0p9: ldo3 {
103			regulator-name = "vreg_l3b_0p9";
104			regulator-min-microvolt = <904000>;
105			regulator-max-microvolt = <904000>;
106			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
107		};
108
109		vreg_l5b_0p88: ldo5 {
110			regulator-name = "vreg_l3b_0p9";
111			regulator-min-microvolt = <880000>;
112			regulator-max-microvolt = <888000>;
113			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
114		};
115
116		vreg_l6b_1p2: ldo6 {
117			regulator-name = "vreg_l6b_1p2";
118			regulator-min-microvolt = <1200000>;
119			regulator-max-microvolt = <1208000>;
120			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
121		};
122
123		vreg_l7b_2p96: ldo7 {
124			regulator-name = "vreg_l7b_2p96";
125			regulator-min-microvolt = <2400000>;
126			regulator-max-microvolt = <3008000>;
127			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
128		};
129
130		vreg_l9b_1p2: ldo9 {
131			regulator-name = "vreg_l9b_1p2";
132			regulator-min-microvolt = <1200000>;
133			regulator-max-microvolt = <1200000>;
134			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
135		};
136	};
137
138	regulators-1 {
139		compatible = "qcom,pm8350c-rpmh-regulators";
140		qcom,pmic-id = "c";
141
142		vdd-s1-supply = <&vph_pwr>;
143		vdd-s2-supply = <&vph_pwr>;
144		vdd-s3-supply = <&vph_pwr>;
145		vdd-s4-supply = <&vph_pwr>;
146		vdd-s5-supply = <&vph_pwr>;
147		vdd-s6-supply = <&vph_pwr>;
148		vdd-s7-supply = <&vph_pwr>;
149		vdd-s8-supply = <&vph_pwr>;
150		vdd-s9-supply = <&vph_pwr>;
151		vdd-s10-supply = <&vph_pwr>;
152
153		vdd-l1-l12-supply = <&vreg_s1c_1p86>;
154		vdd-l2-l8-supply = <&vreg_s1c_1p86>;
155		vdd-l3-l4-l5-l7-l13-supply = <&vreg_bob>;
156		vdd-l6-l9-l11-supply = <&vreg_bob>;
157		vdd-l10-supply = <&vreg_s12b_1p25>;
158
159		vdd-bob-supply = <&vph_pwr>;
160
161		vreg_s1c_1p86: smps1 {
162			regulator-name = "vreg_s1c_1p86";
163			regulator-min-microvolt = <1800000>;
164			regulator-max-microvolt = <1952000>;
165		};
166
167		vreg_s2c_0p8: smps2 {
168			regulator-name = "vreg_s2c_0p8";
169			regulator-min-microvolt = <640000>;
170			regulator-max-microvolt = <1000000>;
171		};
172
173		vreg_s10c_1p05: smps10 {
174			regulator-name = "vreg_s10c_1p05";
175			regulator-min-microvolt = <1048000>;
176			regulator-max-microvolt = <1128000>;
177		};
178
179		vreg_bob: bob {
180			regulator-name = "vreg_bob";
181			regulator-min-microvolt = <3008000>;
182			regulator-max-microvolt = <3960000>;
183			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
184		};
185
186		vreg_l1c_1p8: ldo1 {
187			regulator-name = "vreg_l1c_1p8";
188			regulator-min-microvolt = <1800000>;
189			regulator-max-microvolt = <1800000>;
190			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
191		};
192
193		vreg_l2c_1p8: ldo2 {
194			regulator-name = "vreg_l2c_1p8";
195			regulator-min-microvolt = <1800000>;
196			regulator-max-microvolt = <1800000>;
197			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
198		};
199
200		vreg_l3c_3p0: ldo3 {
201			regulator-name = "vreg_l3c_3p0";
202			regulator-min-microvolt = <3008000>;
203			regulator-max-microvolt = <3008000>;
204			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
205		};
206
207		vreg_l4c_uim1: ldo4 {
208			regulator-name = "vreg_l4c_uim1";
209			regulator-min-microvolt = <1704000>;
210			regulator-max-microvolt = <3000000>;
211			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
212		};
213
214		vreg_l5c_uim2: ldo5 {
215			regulator-name = "vreg_l5c_uim2";
216			regulator-min-microvolt = <1704000>;
217			regulator-max-microvolt = <3000000>;
218			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
219		};
220
221		vreg_l6c_1p8: ldo6 {
222			regulator-name = "vreg_l6c_1p8";
223			regulator-min-microvolt = <1800000>;
224			regulator-max-microvolt = <2960000>;
225			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
226		};
227
228		vreg_l7c_3p0: ldo7 {
229			regulator-name = "vreg_l7c_3p0";
230			regulator-min-microvolt = <3008000>;
231			regulator-max-microvolt = <3008000>;
232			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
233		};
234
235		vreg_l8c_1p8: ldo8 {
236			regulator-name = "vreg_l8c_1p8";
237			regulator-min-microvolt = <1800000>;
238			regulator-max-microvolt = <1800000>;
239			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
240		};
241
242		vreg_l9c_2p96: ldo9 {
243			regulator-name = "vreg_l9c_2p96";
244			regulator-min-microvolt = <2960000>;
245			regulator-max-microvolt = <3008000>;
246			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
247		};
248
249		vreg_l10c_1p2: ldo10 {
250			regulator-name = "vreg_l10c_1p2";
251			regulator-min-microvolt = <1200000>;
252			regulator-max-microvolt = <1200000>;
253			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
254		};
255
256		vreg_l11c_2p96: ldo11 {
257			regulator-name = "vreg_l11c_2p96";
258			regulator-min-microvolt = <2400000>;
259			regulator-max-microvolt = <3008000>;
260			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
261		};
262
263		vreg_l12c_1p8: ldo12 {
264			regulator-name = "vreg_l12c_1p8";
265			regulator-min-microvolt = <1800000>;
266			regulator-max-microvolt = <2000000>;
267			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
268		};
269
270		vreg_l13c_3p0: ldo13 {
271			regulator-name = "vreg_l13c_3p0";
272			regulator-min-microvolt = <3000000>;
273			regulator-max-microvolt = <3000000>;
274			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
275		};
276	};
277};
278
279&cdsp {
280	status = "okay";
281	firmware-name = "qcom/sm8350/microsoft/cdsp.mbn";
282};
283
284&i2c10 {
285	status = "okay";
286};
287
288&i2c11 {
289	status = "okay";
290};
291
292&ipa {
293	qcom,gsi-loader = "self";
294	memory-region = <&pil_ipa_fw_mem>;
295	status = "okay";
296};
297
298&mpss {
299	status = "okay";
300	firmware-name = "qcom/sm8350/microsoft/modem.mbn";
301};
302
303&qupv3_id_0 {
304	status = "okay";
305};
306
307&qupv3_id_1 {
308	status = "okay";
309};
310
311&slpi {
312	status = "okay";
313	firmware-name = "qcom/sm8350/microsoft/slpi.mbn";
314};
315
316&tlmm {
317	gpio-reserved-ranges = <4 4>, <12 4>, <56 4>, <76 4>;
318};
319
320&uart2 {
321	status = "okay";
322};
323
324&ufs_mem_hc {
325	status = "okay";
326
327	reset-gpios = <&tlmm 203 GPIO_ACTIVE_LOW>;
328
329	vcc-supply = <&vreg_l7b_2p96>;
330	vcc-max-microamp = <800000>;
331	vccq-supply = <&vreg_l9b_1p2>;
332	vccq-max-microamp = <900000>;
333};
334
335&ufs_mem_phy {
336	status = "okay";
337
338	vdda-phy-supply = <&vreg_l5b_0p88>;
339	vdda-pll-supply = <&vreg_l6b_1p2>;
340};
341
342&usb_1 {
343	status = "okay";
344};
345
346&usb_1_dwc3 {
347	dr_mode = "peripheral";
348};
349
350&usb_1_hsphy {
351	status = "okay";
352
353	vdda-pll-supply = <&vreg_l5b_0p88>;
354	vdda18-supply = <&vreg_l1c_1p8>;
355	vdda33-supply = <&vreg_l2b_3p07>;
356};
357
358&usb_1_qmpphy {
359	status = "okay";
360
361	vdda-phy-supply = <&vreg_l6b_1p2>;
362	vdda-pll-supply = <&vreg_l1b_0p88>;
363};
364
365&usb_2 {
366	status = "okay";
367};
368
369&usb_2_hsphy {
370	status = "okay";
371
372	vdda-pll-supply = <&vreg_l5b_0p88>;
373	vdda18-supply = <&vreg_l1c_1p8>;
374	vdda33-supply = <&vreg_l2b_3p07>;
375};
376
377&usb_2_qmpphy {
378	status = "okay";
379
380	vdda-phy-supply = <&vreg_l6b_1p2>;
381	vdda-pll-supply = <&vreg_l5b_0p88>;
382};
383