1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
10#include "sm8150.dtsi"
11#include "pm8150.dtsi"
12#include "pm8150b.dtsi"
13#include "pm8150l.dtsi"
14
15/delete-node/ &cdsp_mem;
16/delete-node/ &gpu_mem;
17/delete-node/ &ipa_fw_mem;
18/delete-node/ &ipa_gsi_mem;
19/delete-node/ &mpss_mem;
20/delete-node/ &slpi_mem;
21/delete-node/ &spss_mem;
22/delete-node/ &venus_mem;
23
24/ {
25	qcom,msm-id = <339 0x20000>; /* SM8150 v2 */
26	qcom,board-id = <8 0>;
27
28	chosen {
29		#address-cells = <2>;
30		#size-cells = <2>;
31		ranges;
32
33		framebuffer: framebuffer@9c000000 {
34			compatible = "simple-framebuffer";
35			reg = <0 0x9c000000 0 0x2300000>;
36			width = <1644>;
37			height = <3840>;
38			stride = <(1644 * 4)>;
39			format = "a8r8g8b8";
40			/*
41			 * That's (going to be) a lot of clocks, but it's necessary due
42			 * to unused clk cleanup & no panel driver yet (& no dispcc either)..
43			 */
44			clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
45				 <&gcc GCC_DISP_SF_AXI_CLK>;
46		};
47	};
48
49	vph_pwr: vph-pwr-regulator {
50		compatible = "regulator-fixed";
51		regulator-name = "vph_pwr";
52		regulator-min-microvolt = <3700000>;
53		regulator-max-microvolt = <3700000>;
54	};
55
56	/*
57	 * Apparently RPMh does not provide support for PM8150 S4 because it
58	 * is always-on; model it as a fixed regulator.
59	 */
60	vreg_s4a_1p8: pm8150-s4 {
61		compatible = "regulator-fixed";
62		regulator-name = "vreg_s4a_1p8";
63
64		regulator-min-microvolt = <1800000>;
65		regulator-max-microvolt = <1800000>;
66
67		regulator-always-on;
68		regulator-boot-on;
69
70		vin-supply = <&vph_pwr>;
71	};
72
73	reserved-memory {
74		mpss_mem: memory@8dc00000 {
75			reg = <0x0 0x8dc00000 0x0 0x9600000>;
76			no-map;
77		};
78
79		venus_mem: memory@97200000 {
80			reg = <0x0 0x97200000 0x0 0x500000>;
81			no-map;
82		};
83
84		slpi_mem: memory@97700000 {
85			reg = <0x0 0x97700000 0x0 0x1400000>;
86			no-map;
87		};
88
89		ipa_fw_mem: memory@98b00000 {
90			reg = <0x0 0x98b00000 0x0 0x10000>;
91			no-map;
92		};
93
94		ipa_gsi_mem: memory@98b10000 {
95			reg = <0x0 0x98b10000 0x0 0x5000>;
96			no-map;
97		};
98
99		gpu_mem: memory@98b15000 {
100			reg = <0x0 0x98b15000 0x0 0x2000>;
101			no-map;
102		};
103
104		spss_mem: memory@98c00000 {
105			reg = <0x0 0x98c00000 0x0 0x100000>;
106			no-map;
107		};
108
109		cdsp_mem: memory@98d00000 {
110			reg = <0x0 0x98d00000 0x0 0x1400000>;
111			no-map;
112		};
113
114		cont_splash_mem: memory@9c000000 {
115			reg = <0x0 0x9c000000 0x0 0x2400000>;
116			no-map;
117		};
118
119		cdsp_sec_mem: memory@a4c00000 {
120			reg = <0x0 0xa4c00000 0x0 0x3c00000>;
121			no-map;
122		};
123
124		ramoops@ffc00000 {
125			compatible = "ramoops";
126			reg = <0x0 0xffc00000 0x0 0x100000>;
127			record-size = <0x1000>;
128			console-size = <0x40000>;
129			msg-size = <0x20000 0x20000>;
130			ecc-size = <16>;
131			no-map;
132		};
133	};
134};
135
136&adsp_mem {
137	reg = <0x0 0x8be00000 0x0 0x1e00000>;
138};
139
140&apps_rsc {
141	pm8150-rpmh-regulators {
142		compatible = "qcom,pm8150-rpmh-regulators";
143		qcom,pmic-id = "a";
144
145		vdd-s1-supply = <&vph_pwr>;
146		vdd-s2-supply = <&vph_pwr>;
147		vdd-s3-supply = <&vph_pwr>;
148		vdd-s4-supply = <&vph_pwr>;
149		vdd-s5-supply = <&vph_pwr>;
150		vdd-s6-supply = <&vph_pwr>;
151		vdd-s7-supply = <&vph_pwr>;
152		vdd-s8-supply = <&vph_pwr>;
153		vdd-s9-supply = <&vph_pwr>;
154		vdd-s10-supply = <&vph_pwr>;
155
156		vdd-l1-l8-l11-supply = <&vreg_s6a_0p9>;
157		vdd-l2-l10-supply = <&vreg_bob>;
158		vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p9>;
159		vdd-l6-l9-supply = <&vreg_s8c_1p3>;
160		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_1p9>;
161		vdd-l13-l16-l17-supply = <&vreg_bob>;
162
163		vreg_s2a_0p6: smps2 {
164			regulator-min-microvolt = <600000>;
165			regulator-max-microvolt = <600000>;
166			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
167		};
168
169		vreg_s5a_1p9: smps5 {
170			regulator-min-microvolt = <1904000>;
171			regulator-max-microvolt = <2040000>;
172			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
173		};
174
175		vreg_s6a_0p9: smps6 {
176			regulator-min-microvolt = <920000>;
177			regulator-max-microvolt = <1128000>;
178			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
179		};
180
181		vreg_l1a_0p75: ldo1 {
182			regulator-min-microvolt = <752000>;
183			regulator-max-microvolt = <752000>;
184			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
185		};
186
187		vreg_l2a_3p1: ldo2 {
188			regulator-min-microvolt = <3072000>;
189			regulator-max-microvolt = <3072000>;
190			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
191		};
192
193		vreg_l3a_0p8: ldo3 {
194			regulator-min-microvolt = <480000>;
195			regulator-max-microvolt = <932000>;
196			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
197		};
198
199		vreg_l5a_0p875: ldo5 {
200			regulator-min-microvolt = <880000>;
201			regulator-max-microvolt = <880000>;
202			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
203		};
204
205		vreg_l6a_1p2: ldo6 {
206			regulator-min-microvolt = <1200000>;
207			regulator-max-microvolt = <1200000>;
208			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
209		};
210
211		vreg_l7a_1p8: ldo7 {
212			regulator-min-microvolt = <1800000>;
213			regulator-max-microvolt = <1800000>;
214			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
215		};
216
217		vreg_l9a_1p2: ldo9 {
218			regulator-min-microvolt = <1200000>;
219			regulator-max-microvolt = <1200000>;
220			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
221		};
222
223		vreg_l10a_2p5: ldo10 {
224			regulator-min-microvolt = <2504000>;
225			regulator-max-microvolt = <2960000>;
226			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
227		};
228
229		vreg_l11a_0p8: ldo11 {
230			regulator-min-microvolt = <800000>;
231			regulator-max-microvolt = <800000>;
232			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
233		};
234
235		vreg_l12a_1p8: ldo12 {
236			regulator-min-microvolt = <1800000>;
237			regulator-max-microvolt = <1800000>;
238			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
239		};
240
241		/* L13 is unused. */
242
243		vreg_l14a_1p8: ldo14 {
244			regulator-min-microvolt = <1800000>;
245			regulator-max-microvolt = <1800000>;
246			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
247		};
248
249		vreg_l15a_1p7: ldo15 {
250			regulator-min-microvolt = <1704000>;
251			regulator-max-microvolt = <1704000>;
252			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
253		};
254
255		vreg_l16a_2p7: ldo16 {
256			regulator-min-microvolt = <2704000>;
257			regulator-max-microvolt = <2960000>;
258			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
259		};
260
261		vreg_l17a_3p0: ldo17 {
262			regulator-min-microvolt = <2856000>;
263			regulator-max-microvolt = <3008000>;
264			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
265		};
266
267		vreg_l18a_0p8: ldo18 {
268			regulator-min-microvolt = <880000>;
269			regulator-max-microvolt = <912000>;
270			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
271		};
272	};
273
274	pm8150l-rpmh-regulators {
275		compatible = "qcom,pm8150l-rpmh-regulators";
276		qcom,pmic-id = "c";
277
278		vdd-s1-supply = <&vph_pwr>;
279		vdd-s2-supply = <&vph_pwr>;
280		vdd-s3-supply = <&vph_pwr>;
281		vdd-s4-supply = <&vph_pwr>;
282		vdd-s5-supply = <&vph_pwr>;
283		vdd-s6-supply = <&vph_pwr>;
284		vdd-s7-supply = <&vph_pwr>;
285		vdd-s8-supply = <&vph_pwr>;
286
287		vdd-l1-l8-supply = <&vreg_s4a_1p8>;
288		vdd-l2-l3-supply = <&vreg_s8c_1p3>;
289		vdd-l4-l5-l6-supply = <&vreg_bob>;
290		vdd-l7-l11-supply = <&vreg_bob>;
291		vdd-l9-l10-supply = <&vreg_bob>;
292
293		vdd-bob-supply = <&vph_pwr>;
294		vdd-flash-supply = <&vreg_bob>;
295		vdd-rgb-supply = <&vreg_bob>;
296
297		vreg_bob: bob {
298			regulator-min-microvolt = <3350000>;
299			regulator-max-microvolt = <4000000>;
300			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
301			regulator-allow-bypass;
302		};
303
304		vreg_s1c_1p1: smps1 {
305			regulator-min-microvolt = <1128000>;
306			regulator-max-microvolt = <1128000>;
307			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
308		};
309
310		vreg_s8c_1p3: smps8 {
311			regulator-min-microvolt = <1352000>;
312			regulator-max-microvolt = <1352000>;
313			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
314		};
315
316		vreg_l1c_1p8: ldo1 {
317			regulator-min-microvolt = <1800000>;
318			regulator-max-microvolt = <1800000>;
319			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
320		};
321
322		vreg_l2c_1p3: ldo2 {
323			regulator-min-microvolt = <1304000>;
324			regulator-max-microvolt = <1304000>;
325			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
326		};
327
328		vreg_l3c_1p2: ldo3 {
329			regulator-min-microvolt = <1200000>;
330			regulator-max-microvolt = <1200000>;
331			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
332		};
333
334		vreg_l4c_1p8: ldo4 {
335			regulator-min-microvolt = <1704000>;
336			regulator-max-microvolt = <2928000>;
337			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
338		};
339
340		vreg_l5c_1p8: ldo5 {
341			regulator-min-microvolt = <1704000>;
342			regulator-max-microvolt = <2928000>;
343			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
344		};
345
346		vreg_l6c_2p9: ldo6 {
347			regulator-min-microvolt = <1800000>;
348			regulator-max-microvolt = <2960000>;
349			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
350			regulator-allow-set-load;
351			regulator-allowed-modes =
352			    <RPMH_REGULATOR_MODE_LPM
353			     RPMH_REGULATOR_MODE_HPM>;
354		};
355
356		vreg_l7c_3p0: ldo7 {
357			regulator-min-microvolt = <2856000>;
358			regulator-max-microvolt = <3104000>;
359			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
360		};
361
362		vreg_l8c_1p8: ldo8 {
363			regulator-min-microvolt = <1800000>;
364			regulator-max-microvolt = <1800000>;
365			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
366		};
367
368		vreg_l9c_2p9: ldo9 {
369			regulator-min-microvolt = <2704000>;
370			regulator-max-microvolt = <2960000>;
371			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
372			regulator-allow-set-load;
373			regulator-allowed-modes =
374			    <RPMH_REGULATOR_MODE_LPM
375			     RPMH_REGULATOR_MODE_HPM>;
376		};
377
378		vreg_l10c_3p3: ldo10 {
379			regulator-min-microvolt = <3000000>;
380			regulator-max-microvolt = <3312000>;
381			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
382		};
383
384		vreg_l11c_3p3: ldo11 {
385			regulator-min-microvolt = <3000000>;
386			regulator-max-microvolt = <3312000>;
387			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
388		};
389	};
390
391	/* PM8009 is not present on these boards, even if downstream sources suggest so. */
392};
393
394&i2c4 {
395	status = "okay";
396
397	/* Qcom SMB1355 @ c */
398	/* Qcom SMB1390 @ 10 */
399	/* NXP PN553 NFC @ 28 */
400	/* Qcom FSA4480 USB-C audio switch @ 43 */
401};
402
403&i2c7 {
404	status = "okay";
405
406	/* AMS TCS3490 RGB+IR color sensor @ 72 */
407};
408
409&i2c10 {
410	status = "okay";
411
412	/* Samsung touchscreen @ 48 */
413};
414
415&pon_pwrkey {
416	status = "okay";
417};
418
419&qupv3_id_0 {
420	status = "okay";
421};
422
423&qupv3_id_1 {
424	status = "okay";
425};
426
427&tlmm {
428	gpio-reserved-ranges = <126 4>;
429};
430
431&uart2 {
432	status = "okay";
433};
434
435/* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */
436&ufs_mem_hc { status = "disabled"; };
437&ufs_mem_phy { status = "disabled"; };
438
439&usb_1 {
440	status = "okay";
441};
442
443&usb_1_dwc3 {
444	dr_mode = "peripheral";
445};
446
447&usb_1_hsphy {
448	status = "okay";
449	vdda-pll-supply = <&vreg_l5a_0p875>;
450	vdda33-supply = <&vreg_l2a_3p1>;
451	vdda18-supply = <&vreg_l12a_1p8>;
452};
453
454&usb_1_qmpphy {
455	status = "okay";
456	vdda-phy-supply = <&vreg_l3c_1p2>;
457	vdda-pll-supply = <&vreg_l18a_0p8>;
458};
459