blob: 99dafc6716e76e25aad0755e6004dc952779689f [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0
2/*
3 * SDM845 LG G7 / V35 (judyln / judyp) common device tree
4 *
5 * Copyright (c) 2022, The Linux Foundation. All rights reserved.
6 */
7
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
10#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
11
12#include "sdm845.dtsi"
13#include "pm8998.dtsi"
14#include "pmi8998.dtsi"
15
16/delete-node/ &adsp_mem;
17/delete-node/ &cdsp_mem;
18/delete-node/ &gpu_mem;
19/delete-node/ &ipa_fw_mem;
20/delete-node/ &mba_region;
21/delete-node/ &mpss_region;
22/delete-node/ &qseecom_mem;
23/delete-node/ &rmtfs_mem;
24/delete-node/ &slpi_mem;
25/delete-node/ &spss_mem;
26/delete-node/ &venus_mem;
27/delete-node/ &wlan_msa_mem;
28
29/ {
30 chosen {
31 #address-cells = <2>;
32 #size-cells = <2>;
33 ranges;
34 };
35
36 reserved-memory {
37 #address-cells = <2>;
38 #size-cells = <2>;
39 ranges;
40
41 qseecom_mem: memory@b2000000 {
42 reg = <0 0xb2000000 0 0x1800000>;
43 no-map;
44 };
45
46 gpu_mem: memory@8c415000 {
47 reg = <0 0x8c415000 0 0x2000>;
48 no-map;
49 };
50
51 ipa_fw_mem: memory@8c400000 {
52 reg = <0 0x8c400000 0 0x10000>;
53 no-map;
54 };
55
56 adsp_mem: memory@8c500000 {
57 reg = <0 0x8c500000 0 0x1e00000>;
58 no-map;
59 };
60
61 wlan_msa_mem: memory@8e300000 {
62 reg = <0 0x8e300000 0 0x100000>;
63 no-map;
64 };
65
66 mpss_region: memory@8e400000 {
67 reg = <0 0x8e400000 0 0x8900000>;
68 no-map;
69 };
70
71 venus_mem: memory@96d00000 {
72 reg = <0 0x96d00000 0 0x500000>;
73 no-map;
74 };
75
76 cdsp_mem: memory@97200000 {
77 reg = <0 0x97200000 0 0x800000>;
78 no-map;
79 };
80
81 mba_region: memory@97a00000 {
82 reg = <0 0x97a00000 0 0x200000>;
83 no-map;
84 };
85
86 slpi_mem: memory@97c00000 {
87 reg = <0 0x97c00000 0 0x1400000>;
88 no-map;
89 };
90
91 spss_mem: memory@99000000 {
92 reg = <0 0x99000000 0 0x100000>;
93 no-map;
94 };
95
96 /* Framebuffer region */
97 memory@9d400000 {
98 reg = <0x0 0x9d400000 0x0 0x2400000>;
99 no-map;
100 };
101
102 /* rmtfs lower guard */
103 memory@f0800000 {
104 reg = <0 0xf0800000 0 0x1000>;
105 no-map;
106 };
107
108 rmtfs_mem: memory@f0801000 {
109 compatible = "qcom,rmtfs-mem";
110 reg = <0 0xf0801000 0 0x200000>;
111 no-map;
112
113 qcom,client-id = <1>;
114 qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
115 };
116
117 /* rmtfs upper guard */
118 memory@f0a01000 {
119 reg = <0 0xf0a01000 0 0x1000>;
120 no-map;
121 };
122 };
123
124 gpio-keys {
125 compatible = "gpio-keys";
126
127 pinctrl-names = "default";
128 pinctrl-0 = <&vol_up_pin_a>;
129
130 label = "GPIO Buttons";
131
132 key-vol-up {
133 label = "Volume up";
134 linux,code = <KEY_VOLUMEUP>;
135 gpios = <&pm8998_gpios 6 GPIO_ACTIVE_LOW>;
136 };
137 };
138
139 vph_pwr: vph-pwr-regulator {
140 compatible = "regulator-fixed";
141 regulator-name = "vph_pwr";
142 regulator-min-microvolt = <3700000>;
143 regulator-max-microvolt = <3700000>;
144 };
145
146 /*
147 * Apparently RPMh does not provide support for PM8998 S4 because it
148 * is always-on; model it as a fixed regulator.
149 */
150 vreg_s4a_1p8: pm8998-smps4-regulator {
151 compatible = "regulator-fixed";
152 regulator-name = "vreg_s4a_1p8";
153
154 regulator-min-microvolt = <1800000>;
155 regulator-max-microvolt = <1800000>;
156
157 regulator-always-on;
158 regulator-boot-on;
159
160 vin-supply = <&vph_pwr>;
161 };
162};
163
164&adsp_pas {
165 status = "okay";
166};
167
168&apps_rsc {
169 regulators-0 {
170 compatible = "qcom,pm8998-rpmh-regulators";
171 qcom,pmic-id = "a";
172
173 vdd-s1-supply = <&vph_pwr>;
174 vdd-s2-supply = <&vph_pwr>;
175 vdd-s3-supply = <&vph_pwr>;
176 vdd-s4-supply = <&vph_pwr>;
177 vdd-s5-supply = <&vph_pwr>;
178 vdd-s6-supply = <&vph_pwr>;
179 vdd-s7-supply = <&vph_pwr>;
180 vdd-s8-supply = <&vph_pwr>;
181 vdd-s9-supply = <&vph_pwr>;
182 vdd-s10-supply = <&vph_pwr>;
183 vdd-s11-supply = <&vph_pwr>;
184 vdd-s12-supply = <&vph_pwr>;
185 vdd-s13-supply = <&vph_pwr>;
186 vdd-l1-l27-supply = <&vreg_s7a_1p025>;
187 vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
188 vdd-l3-l11-supply = <&vreg_s7a_1p025>;
189 vdd-l4-l5-supply = <&vreg_s7a_1p025>;
190 vdd-l6-supply = <&vph_pwr>;
191 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
192 vdd-l9-supply = <&vreg_bob>;
193 vdd-l10-l23-l25-supply = <&vreg_bob>;
194 vdd-l13-l19-l21-supply = <&vreg_bob>;
195 vdd-l16-l28-supply = <&vreg_bob>;
196 vdd-l18-l22-supply = <&vreg_bob>;
197 vdd-l20-l24-supply = <&vreg_bob>;
198 vdd-l26-supply = <&vreg_s3a_1p35>;
199 vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
200
201 vreg_s2a_1p125: smps2 {
202 regulator-min-microvolt = <1100000>;
203 regulator-max-microvolt = <1100000>;
204 };
205
206 vreg_s3a_1p35: smps3 {
207 regulator-min-microvolt = <1352000>;
208 regulator-max-microvolt = <1352000>;
209 };
210
211 vreg_s5a_2p04: smps5 {
212 regulator-min-microvolt = <1904000>;
213 regulator-max-microvolt = <2040000>;
214 };
215
216 vreg_s7a_1p025: smps7 {
217 regulator-min-microvolt = <900000>;
218 regulator-max-microvolt = <1028000>;
219 };
220
221 vdd_qusb_hs0:
222 vdda_hp_pcie_core:
223 vdda_mipi_csi0_0p9:
224 vdda_mipi_csi1_0p9:
225 vdda_mipi_csi2_0p9:
226 vdda_mipi_dsi0_pll:
227 vdda_mipi_dsi1_pll:
228 vdda_qlink_lv:
229 vdda_qlink_lv_ck:
230 vdda_qrefs_0p875:
231 vdda_pcie_core:
232 vdda_pll_cc_ebi01:
233 vdda_pll_cc_ebi23:
234 vdda_sp_sensor:
235 vdda_ufs1_core:
236 vdda_ufs2_core:
237 vdda_usb1_ss_core:
238 vdda_usb2_ss_core:
239 vreg_l1a_0p875: ldo1 {
240 regulator-min-microvolt = <880000>;
241 regulator-max-microvolt = <880000>;
242 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
243 };
244
245 vddpx_10:
246 vreg_l2a_1p2: ldo2 {
247 regulator-min-microvolt = <1200000>;
248 regulator-max-microvolt = <1200000>;
249 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
250 regulator-always-on;
251 };
252
253 vreg_l3a_1p0: ldo3 {
254 regulator-min-microvolt = <1000000>;
255 regulator-max-microvolt = <1000000>;
256 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
257 };
258
259 vdd_wcss_cx:
260 vdd_wcss_mx:
261 vdda_wcss_pll:
262 vreg_l5a_0p8: ldo5 {
263 regulator-min-microvolt = <800000>;
264 regulator-max-microvolt = <800000>;
265 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
266 };
267
268 vddpx_13:
269 vreg_l6a_1p8: ldo6 {
270 regulator-min-microvolt = <1856000>;
271 regulator-max-microvolt = <1856000>;
272 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
273 };
274
275 vreg_l7a_1p8: ldo7 {
276 regulator-min-microvolt = <1800000>;
277 regulator-max-microvolt = <1800000>;
278 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
279 };
280
281 vreg_l8a_1p2: ldo8 {
282 regulator-min-microvolt = <1200000>;
283 regulator-max-microvolt = <1248000>;
284 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
285 };
286
287 vreg_l9a_1p8: ldo9 {
288 regulator-min-microvolt = <1704000>;
289 regulator-max-microvolt = <2928000>;
290 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
291 };
292
293 vreg_l10a_1p8: ldo10 {
294 regulator-min-microvolt = <1704000>;
295 regulator-max-microvolt = <2928000>;
296 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
297 };
298
299 vreg_l11a_1p0: ldo11 {
300 regulator-min-microvolt = <1000000>;
301 regulator-max-microvolt = <1048000>;
302 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
303 };
304
305 vdd_qfprom:
306 vdd_qfprom_sp:
307 vdda_apc1_cs_1p8:
308 vdda_gfx_cs_1p8:
309 vdda_qrefs_1p8:
310 vdda_qusb_hs0_1p8:
311 vddpx_11:
312 vreg_l12a_1p8: ldo12 {
313 regulator-min-microvolt = <1800000>;
314 regulator-max-microvolt = <1800000>;
315 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
316 };
317
318 vddpx_2:
319 vreg_l13a_2p95: ldo13 {
320 regulator-min-microvolt = <1800000>;
321 regulator-max-microvolt = <2960000>;
322 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
323 };
324
325 vreg_l14a_1p88: ldo14 {
326 regulator-min-microvolt = <1800000>;
327 regulator-max-microvolt = <1880000>;
328 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
329 };
330
331 vreg_l15a_1p8: ldo15 {
332 regulator-min-microvolt = <1800000>;
333 regulator-max-microvolt = <1800000>;
334 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
335 };
336
337 vreg_l17a_1p3: ldo17 {
338 regulator-min-microvolt = <1304000>;
339 regulator-max-microvolt = <1304000>;
340 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
341 };
342
343 vreg_l18a_2p7: ldo18 {
344 regulator-min-microvolt = <2704000>;
345 regulator-max-microvolt = <2960000>;
346 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
347 };
348
349 vreg_l20a_2p95: ldo20 {
350 regulator-min-microvolt = <2704000>;
351 regulator-max-microvolt = <2960000>;
352 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
353 };
354
355 vreg_l21a_2p95: ldo21 {
356 regulator-min-microvolt = <2704000>;
357 regulator-max-microvolt = <2960000>;
358 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
359 };
360
361 vreg_l22a_2p85: ldo22 {
362 regulator-min-microvolt = <2800000>;
363 regulator-max-microvolt = <2800000>;
364 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
365 };
366
367 vreg_l23a_3p3: ldo23 {
368 regulator-min-microvolt = <3000000>;
369 regulator-max-microvolt = <3312000>;
370 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
371 };
372
373 vdda_qusb_hs0_3p1:
374 vreg_l24a_3p075: ldo24 {
375 regulator-min-microvolt = <3088000>;
376 regulator-max-microvolt = <3088000>;
377 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
378 };
379
380 vreg_l25a_3p3: ldo25 {
381 regulator-min-microvolt = <3000000>;
382 regulator-max-microvolt = <3312000>;
383 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
384 };
385
386 vdda_hp_pcie_1p2:
387 vdda_hv_ebi0:
388 vdda_hv_ebi1:
389 vdda_hv_ebi2:
390 vdda_hv_ebi3:
391 vdda_mipi_csi_1p25:
392 vdda_mipi_dsi0_1p2:
393 vdda_mipi_dsi1_1p2:
394 vdda_pcie_1p2:
395 vdda_ufs1_1p2:
396 vdda_ufs2_1p2:
397 vdda_usb1_ss_1p2:
398 vdda_usb2_ss_1p2:
399 vreg_l26a_1p2: ldo26 {
400 regulator-min-microvolt = <1200000>;
401 regulator-max-microvolt = <1200000>;
402 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
403 };
404
405 vreg_l28a_3p0: ldo28 {
406 regulator-min-microvolt = <1800000>;
407 regulator-max-microvolt = <1800000>;
408 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
409 };
410
411 vreg_lvs1a_1p8: lvs1 {
412 regulator-min-microvolt = <1800000>;
413 regulator-max-microvolt = <1800000>;
414 };
415
416 vreg_lvs2a_1p8: lvs2 {
417 regulator-min-microvolt = <1800000>;
418 regulator-max-microvolt = <1800000>;
419 };
420 };
421
422 regulators-1 {
423 compatible = "qcom,pmi8998-rpmh-regulators";
424 qcom,pmic-id = "b";
425
426 vdd-bob-supply = <&vph_pwr>;
427
428 vreg_bob: bob {
429 regulator-min-microvolt = <3312000>;
430 regulator-max-microvolt = <3600000>;
431 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
432 regulator-allow-bypass;
433 };
434 };
435
436 regulators-2 {
437 compatible = "qcom,pm8005-rpmh-regulators";
438 qcom,pmic-id = "c";
439
440 vdd-s1-supply = <&vph_pwr>;
441 vdd-s2-supply = <&vph_pwr>;
442 vdd-s3-supply = <&vph_pwr>;
443 vdd-s4-supply = <&vph_pwr>;
444
445 vreg_s3c_0p6: smps3 {
446 regulator-min-microvolt = <600000>;
447 regulator-max-microvolt = <600000>;
448 };
449 };
450};
451
452&cdsp_pas {
453 status = "okay";
454};
455
456&dispcc {
457 status = "disabled";
458};
459
460&gcc {
461 protected-clocks = <GCC_QSPI_CORE_CLK>,
462 <GCC_QSPI_CORE_CLK_SRC>,
463 <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
464 <GCC_LPASS_Q6_AXI_CLK>,
465 <GCC_LPASS_SWAY_CLK>;
466};
467
468&gpu {
469 status = "okay";
470
471 zap-shader {
472 memory-region = <&gpu_mem>;
473 };
474};
475
476&ipa {
477 qcom,gsi-loader = "modem";
478 status = "okay";
479};
480
481&mss_pil {
482 status = "okay";
483};
484
485&pm8998_resin {
486 linux,code = <KEY_VOLUMEDOWN>;
487 status = "okay";
488};
489
490&sdhc_2 {
491 status = "okay";
492
493 cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
494
495 pinctrl-names = "default";
496 pinctrl-0 = <&sdc2_clk &sdc2_cmd &sdc2_data &sd_card_det_n>;
497
498 vmmc-supply = <&vreg_l21a_2p95>;
499 vqmmc-supply = <&vddpx_2>;
500};
501
502/*
503 * UFS works partially and only with clk_ignore_unused.
504 * Sometimes it crashes with I/O errors.
505 */
506&ufs_mem_hc {
507 status = "okay";
508
509 reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
510
511 vcc-supply = <&vreg_l20a_2p95>;
512 vcc-max-microamp = <600000>;
513};
514
515&ufs_mem_phy {
516 status = "okay";
517
518 vdda-phy-supply = <&vdda_ufs1_core>;
519 vdda-pll-supply = <&vdda_ufs1_1p2>;
520};
521
522&usb_1 {
523 status = "okay";
524};
525
526&usb_1_dwc3 {
527 /* TODO: these devices have usb id pin */
528 dr_mode = "peripheral";
529};
530
531&usb_1_hsphy {
532 status = "okay";
533
534 vdd-supply = <&vdda_usb1_ss_core>;
535 vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
536 vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
537
538 qcom,imp-res-offset-value = <8>;
539 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
540 qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
541 qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
542};
543
544&usb_1_qmpphy {
545 status = "okay";
546
547 vdda-phy-supply = <&vdda_usb1_ss_1p2>;
548 vdda-pll-supply = <&vdda_usb1_ss_core>;
549};
550
551/* PINCTRL - additions to nodes defined in sdm845.dtsi */
552
553&tlmm {
554 gpio-reserved-ranges = <28 4>, <81 4>;
555
556 sdc2_clk: sdc2-clk-state {
557 pins = "sdc2_clk";
558 bias-disable;
559
560 /*
561 * It seems that mmc_test reports errors if drive
562 * strength is not 16 on clk, cmd, and data pins.
563 *
564 * TODO: copy-pasted from mtp, try other values
565 * on these devices.
566 */
567 drive-strength = <16>;
568 };
569
570 sdc2_cmd: sdc2-cmd-state {
571 pins = "sdc2_cmd";
572 bias-pull-up;
573 drive-strength = <16>;
574 };
575
576 sdc2_data: sdc2-data-state {
577 pins = "sdc2_data";
578 bias-pull-up;
579 drive-strength = <16>;
580 };
581
582 sd_card_det_n: sd-card-det-n-state {
583 pins = "gpio126";
584 function = "gpio";
585 bias-pull-up;
586 };
587};
588
589&pm8998_gpios {
590 vol_up_pin_a: vol-up-active-state {
591 pins = "gpio6";
592 function = "normal";
593 input-enable;
594 bias-pull-up;
595 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
596 };
597};