1 // SPDX-License-Identifier: BSD-3-Clause
2 /*
3 * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
4 */
5
6 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
7 #include "sm8250.dtsi"
8 #include "pm8150.dtsi"
9 #include "pm8150b.dtsi"
10 #include "pm8150l.dtsi"
11 #include "pm8009.dtsi"
12
13 /delete-node/ &adsp_mem;
14 /delete-node/ &spss_mem;
15 /delete-node/ &cdsp_secure_heap;
16
17 / {
18 qcom,msm-id = <356 0x20001>; /* SM8250 v2.1 */
19 qcom,board-id = <0x10008 0>;
20
21 chosen {
22 #address-cells = <2>;
23 #size-cells = <2>;
24 ranges;
25
26 framebuffer: framebuffer@9c000000 {
27 compatible = "simple-framebuffer";
28 reg = <0 0x9c000000 0 0x2300000>;
29 width = <1644>;
30 height = <3840>;
31 stride = <(1644 * 4)>;
32 format = "a8r8g8b8";
33 /*
34 * That's a lot of clocks, but it's necessary due
35 * to unused clk cleanup & no panel driver yet..
36 */
37 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
38 <&gcc GCC_DISP_HF_AXI_CLK>,
39 <&gcc GCC_DISP_SF_AXI_CLK>,
40 <&dispcc DISP_CC_MDSS_VSYNC_CLK>,
41 <&dispcc DISP_CC_MDSS_MDP_CLK>,
42 <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
43 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
44 <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
45 <&dispcc DISP_CC_MDSS_ESC0_CLK>;
46 power-domains = <&dispcc MDSS_GDSC>;
47 };
48 };
49
50 gpio_keys: gpio-keys {
51 compatible = "gpio-keys";
52
53 /*
54 * Camera focus (light press) and camera snapshot (full press)
55 * seem not to work properly.. Adding the former one stalls the CPU
56 * and the latter kills the volume down key for whatever reason. In any
57 * case, they are both on &pm8150b_gpios: camera focus(2), camera snapshot(1).
58 */
59
60 key-vol-down {
61 label = "Volume Down";
62 linux,code = <KEY_VOLUMEDOWN>;
63 gpios = <&pm8150_gpios 1 GPIO_ACTIVE_LOW>;
64 debounce-interval = <15>;
65 linux,can-disable;
66 gpio-key,wakeup;
67 };
68 };
69
70 vph_pwr: vph-pwr-regulator {
71 compatible = "regulator-fixed";
72 regulator-name = "vph_pwr";
73 regulator-min-microvolt = <3700000>;
74 regulator-max-microvolt = <3700000>;
75 };
76
77 /* S6c is really ebi.lvl but it's there for supply map completeness sake. */
78 vreg_s6c_0p88: smpc6-regulator {
79 compatible = "regulator-fixed";
80 regulator-name = "vreg_s6c_0p88";
81
82 regulator-min-microvolt = <880000>;
83 regulator-max-microvolt = <880000>;
84 regulator-always-on;
85 vin-supply = <&vph_pwr>;
86 };
87
88 reserved-memory {
89 adsp_mem: memory@8a100000 {
90 reg = <0x0 0x8a100000 0x0 0x2500000>;
91 no-map;
92 };
93
94 spss_mem: memory@8c600000 {
95 reg = <0x0 0x8c600000 0x0 0x100000>;
96 no-map;
97 };
98
99 cdsp_secure_heap: memory@8c700000 {
100 reg = <0x0 0x8c700000 0x0 0x4600000>;
101 no-map;
102 };
103
104 cont_splash_mem: memory@9c000000 {
105 reg = <0x0 0x9c000000 0x0 0x2300000>;
106 no-map;
107 };
108
109 ramoops@ffc00000 {
110 compatible = "ramoops";
111 reg = <0x0 0xffc00000 0x0 0x100000>;
112 record-size = <0x1000>;
113 console-size = <0x40000>;
114 msg-size = <0x20000 0x20000>;
115 ecc-size = <16>;
116 no-map;
117 };
118 };
119 };
120
121 &adsp {
122 status = "okay";
123 };
124
125 &apps_rsc {
126 pm8150-rpmh-regulators {
127 compatible = "qcom,pm8150-rpmh-regulators";
128 qcom,pmic-id = "a";
129
130 vdd-s1-supply = <&vph_pwr>;
131 vdd-s2-supply = <&vph_pwr>;
132 vdd-s3-supply = <&vph_pwr>;
133 vdd-s4-supply = <&vph_pwr>;
134 vdd-s5-supply = <&vph_pwr>;
135 vdd-s6-supply = <&vph_pwr>;
136 vdd-s7-supply = <&vph_pwr>;
137 vdd-s8-supply = <&vph_pwr>;
138 vdd-s9-supply = <&vph_pwr>;
139 vdd-s10-supply = <&vph_pwr>;
140 vdd-l1-l8-l11-supply = <&vreg_s6c_0p88>;
141 vdd-l2-l10-supply = <&vreg_bob>;
142 vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p6>;
143 vdd-l6-l9-supply = <&vreg_s8c_1p2>;
144 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_1p9>;
145 vdd-l13-l16-l17-supply = <&vreg_bob>;
146
147 /* (S1+S2+S3) - cx.lvl (ARC) */
148
149 vreg_s4a_1p8: smps4 {
150 regulator-name = "vreg_s4a_1p8";
151 regulator-min-microvolt = <1800000>;
152 regulator-max-microvolt = <1920000>;
153 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
154 };
155
156 vreg_s5a_1p9: smps5 {
157 regulator-name = "vreg_s5a_1p9";
158 regulator-min-microvolt = <1824000>;
159 regulator-max-microvolt = <2040000>;
160 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
161 };
162
163 vreg_s6a_0p6: smps6 {
164 regulator-name = "vreg_s6a_0p6";
165 regulator-min-microvolt = <600000>;
166 regulator-max-microvolt = <1128000>;
167 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
168 };
169
170 vreg_l2a_3p1: ldo2 {
171 regulator-name = "vreg_l2a_3p1";
172 regulator-min-microvolt = <3072000>;
173 regulator-max-microvolt = <3072000>;
174 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
175 };
176
177 vreg_l3a_0p9: ldo3 {
178 regulator-name = "vreg_l3a_0p9";
179 regulator-min-microvolt = <928000>;
180 regulator-max-microvolt = <932000>;
181 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
182 };
183
184 /* L4 - lmx.lvl (ARC) */
185
186 vreg_l5a_0p88: ldo5 {
187 regulator-name = "vreg_l5a_0p88";
188 regulator-min-microvolt = <880000>;
189 regulator-max-microvolt = <880000>;
190 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
191 };
192
193 vreg_l6a_1p2: ldo6 {
194 regulator-name = "vreg_l6a_1p2";
195 regulator-min-microvolt = <1200000>;
196 regulator-max-microvolt = <1200000>;
197 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
198 };
199
200 /* L7 is unused. */
201
202 vreg_l9a_1p2: ldo9 {
203 regulator-name = "vreg_l9a_1p2";
204 regulator-min-microvolt = <1200000>;
205 regulator-max-microvolt = <1200000>;
206 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
207 };
208
209 /* L10 is unused, L11 - lcx.lvl (ARC) */
210
211 vreg_l12a_1p8: ldo12 {
212 regulator-name = "vreg_l12a_1p8";
213 regulator-min-microvolt = <1800000>;
214 regulator-max-microvolt = <1800000>;
215 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
216 };
217
218 /* L13 is unused. */
219
220 vreg_l14a_1p8: ldo14 {
221 regulator-name = "vreg_l14a_1p8";
222 regulator-min-microvolt = <1800000>;
223 regulator-max-microvolt = <1880000>;
224 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
225 };
226
227 /* L15 & L16 are unused. */
228
229 vreg_l17a_3p0: ldo17 {
230 regulator-name = "vreg_l17a_3p0";
231 regulator-min-microvolt = <2496000>;
232 regulator-max-microvolt = <3008000>;
233 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
234 };
235
236 vreg_l18a_0p9: ldo18 {
237 regulator-name = "vreg_l18a_0p9";
238 regulator-min-microvolt = <800000>;
239 regulator-max-microvolt = <920000>;
240 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
241 };
242 };
243
244 /*
245 * Remaining regulators that are not yet supported:
246 * OLEDB: 4925000-8100000
247 * ab: 4600000-6100000
248 * ibb: 800000-5400000
249 */
250 pm8150l-rpmh-regulators {
251 compatible = "qcom,pm8150l-rpmh-regulators";
252 qcom,pmic-id = "c";
253
254 vdd-s1-supply = <&vph_pwr>;
255 vdd-s2-supply = <&vph_pwr>;
256 vdd-s3-supply = <&vph_pwr>;
257 vdd-s4-supply = <&vph_pwr>;
258 vdd-s5-supply = <&vph_pwr>;
259 vdd-s6-supply = <&vph_pwr>;
260 vdd-s7-supply = <&vph_pwr>;
261 vdd-s8-supply = <&vph_pwr>;
262 vdd-l1-l8-supply = <&vreg_s4a_1p8>;
263 vdd-l2-l3-supply = <&vreg_s8c_1p2>;
264 vdd-l4-l5-l6-supply = <&vreg_bob>;
265 vdd-l7-l11-supply = <&vreg_bob>;
266 vdd-l9-l10-supply = <&vreg_bob>;
267 vdd-bob-supply = <&vph_pwr>;
268
269 vreg_bob: bob {
270 regulator-name = "vreg_bob";
271 regulator-min-microvolt = <3350000>;
272 regulator-max-microvolt = <3960000>;
273 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
274 };
275
276 /*
277 * S1-S6 are ARCs:
278 * (S1+S2) - gfx.lvl,
279 * S3 - mx.lvl,
280 * (S4+S5) - mmcx.lvl,
281 * S6 - ebi.lvl
282 */
283
284 vreg_s7c_0p35: smps7 {
285 regulator-name = "vreg_s7c_0p35";
286 regulator-min-microvolt = <348000>;
287 regulator-max-microvolt = <1000000>;
288 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
289 };
290
291 vreg_s8c_1p2: smps8 {
292 regulator-name = "vreg_s8c_1p2";
293 regulator-min-microvolt = <1200000>;
294 regulator-max-microvolt = <1400000>;
295 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
296 };
297
298 vreg_l1c_1p8: ldo1 {
299 regulator-name = "vreg_l1c_1p8";
300 regulator-min-microvolt = <1800000>;
301 regulator-max-microvolt = <1800000>;
302 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
303 };
304
305 /* L2-4 are unused. */
306
307 vreg_l5c_1p8: ldo5 {
308 regulator-name = "vreg_l5c_1p8";
309 regulator-min-microvolt = <1800000>;
310 regulator-max-microvolt = <2800000>;
311 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
312 };
313
314 vreg_l6c_2p9: ldo6 {
315 regulator-name = "vreg_l6c_2p9";
316 regulator-min-microvolt = <1800000>;
317 regulator-max-microvolt = <2960000>;
318 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
319 regulator-allow-set-load;
320 };
321
322 vreg_l7c_2p85: ldo7 {
323 regulator-name = "vreg_l7c_2p85";
324 regulator-min-microvolt = <2856000>;
325 regulator-max-microvolt = <3104000>;
326 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
327 };
328
329 vreg_l8c_1p8: ldo8 {
330 regulator-name = "vreg_l8c_1p8";
331 regulator-min-microvolt = <1800000>;
332 regulator-max-microvolt = <1800000>;
333 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
334 };
335
336 vreg_l9c_2p9: ldo9 {
337 regulator-name = "vreg_l9c_2p9";
338 regulator-min-microvolt = <2704000>;
339 regulator-max-microvolt = <2960000>;
340 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
341 regulator-allow-set-load;
342 };
343
344 vreg_l10c_3p3: ldo10 {
345 regulator-name = "vreg_l10c_3p3";
346 regulator-min-microvolt = <3296000>;
347 regulator-max-microvolt = <3296000>;
348 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
349 };
350
351 vreg_l11c_3p0: ldo11 {
352 regulator-name = "vreg_l11c_3p0";
353 regulator-min-microvolt = <3000000>;
354 regulator-max-microvolt = <3000000>;
355 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
356 };
357 };
358
359 pm8009-rpmh-regulators {
360 compatible = "qcom,pm8009-rpmh-regulators";
361 qcom,pmic-id = "f";
362
363 vdd-s1-supply = <&vph_pwr>;
364 vdd-s2-supply = <&vreg_bob>;
365 vdd-l2-supply = <&vreg_s8c_1p2>;
366 vdd-l5-l6-supply = <&vreg_bob>;
367 vdd-l7-supply = <&vreg_s4a_1p8>;
368
369 vreg_s1f_1p2: smps1 {
370 regulator-name = "vreg_s1f_1p2";
371 regulator-min-microvolt = <1200000>;
372 regulator-max-microvolt = <1200000>;
373 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
374 };
375
376 vreg_s2f_0p5: smps2 {
377 regulator-name = "vreg_s2f_0p5";
378 regulator-min-microvolt = <512000>;
379 regulator-max-microvolt = <1100000>;
380 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
381 };
382
383 /* L1 is unused. */
384
385 vreg_l2f_1p3: ldo2 {
386 regulator-name = "vreg_l2f_1p3";
387 regulator-min-microvolt = <1304000>;
388 regulator-max-microvolt = <1304000>;
389 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
390 };
391
392 /* L3 & L4 are unused. */
393
394 vreg_l5f_2p8: ldo5 {
395 regulator-name = "vreg_l5f_2p85";
396 regulator-min-microvolt = <2800000>;
397 regulator-max-microvolt = <2800000>;
398 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
399 };
400
401 vreg_l6f_2p8: ldo6 {
402 regulator-name = "vreg_l6f_2p8";
403 regulator-min-microvolt = <2800000>;
404 regulator-max-microvolt = <2800000>;
405 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
406 };
407
408 vreg_l7f_1p8: ldo7 {
409 regulator-name = "vreg_l7f_1p8";
410 regulator-min-microvolt = <1800000>;
411 regulator-max-microvolt = <1800000>;
412 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
413 };
414 };
415 };
416
417 &cdsp {
418 status = "okay";
419 };
420
421 &gpi_dma0 {
422 status = "okay";
423 };
424
425 &gpi_dma1 {
426 status = "okay";
427 };
428
429 &gpi_dma2 {
430 status = "okay";
431 };
432
433 &i2c1 {
434 status = "okay";
435 clock-frequency = <400000>;
436
437 /* NXP PN553 NFC @ 28 */
438 };
439
440 &i2c2 {
441 status = "okay";
442 clock-frequency = <1000000>;
443
444 cs35l41_l: cs35l41@40 {
445 compatible = "cirrus,cs35l41";
446 reg = <0x40>;
447 interrupt-parent = <&tlmm>;
448 interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
449 reset-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
450 cirrus,boost-peak-milliamp = <4000>;
451 cirrus,boost-ind-nanohenry = <1000>;
452 cirrus,boost-cap-microfarad = <15>;
453 cirrus,asp-sdout-hiz = <3>;
454 cirrus,gpio2-src-select = <2>;
455 cirrus,gpio2-output-enable;
456 #sound-dai-cells = <1>;
457 };
458
459 cs35l41_r: cs35l41@41 {
460 compatible = "cirrus,cs35l41";
461 reg = <0x41>;
462 interrupt-parent = <&tlmm>;
463 interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
464 reset-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
465 cirrus,boost-peak-milliamp = <4000>;
466 cirrus,boost-ind-nanohenry = <1000>;
467 cirrus,boost-cap-microfarad = <15>;
468 cirrus,asp-sdout-hiz = <3>;
469 cirrus,gpio2-src-select = <2>;
470 cirrus,gpio2-output-enable;
471 #sound-dai-cells = <1>;
472 };
473 };
474
475 &i2c5 {
476 status = "okay";
477 clock-frequency = <400000>;
478
479 /* Dialog SLG51000 CMIC @ 75 */
480 };
481
482 &i2c9 {
483 status = "okay";
484 clock-frequency = <400000>;
485
486 /* AMS TCS3490 RGB+IR color sensor @ 72 */
487 };
488
489 &i2c13 {
490 status = "okay";
491 clock-frequency = <400000>;
492
493 touchscreen@48 {
494 compatible = "samsung,s6sy761";
495 reg = <0x48>;
496 interrupt-parent = <&tlmm>;
497 interrupts = <39 0x2008>;
498 /* It's "vddio" downstream but it works anyway! */
499 vdd-supply = <&vreg_l1c_1p8>;
500 avdd-supply = <&vreg_l10c_3p3>;
501
502 pinctrl-names = "default";
503 pinctrl-0 = <&ts_int_default>;
504 };
505 };
506
507 &i2c15 {
508 status = "okay";
509 clock-frequency = <400000>;
510
511 /* Qcom SMB1390 @ 10 */
512 /* Silicon Labs SI4704 FM Radio Receiver @ 11 */
513 /* Qcom SMB1390_slave @ 18 */
514 /* HALO HL6111R Qi charger @ 25 */
515 /* Richwave RTC6226 FM Radio Receiver @ 64 */
516 };
517
518 &pcie0 {
519 status = "okay";
520 };
521
522 &pcie0_phy {
523 status = "okay";
524
525 vdda-phy-supply = <&vreg_l5a_0p88>;
526 vdda-pll-supply = <&vreg_l9a_1p2>;
527 };
528
529 &pcie2 {
530 status = "okay";
531
532 pinctrl-0 = <&pcie2_default_state &mdm2ap_default &ap2mdm_default>;
533 };
534
535 &pcie2_phy {
536 status = "okay";
537
538 vdda-phy-supply = <&vreg_l5a_0p88>;
539 vdda-pll-supply = <&vreg_l9a_1p2>;
540 };
541
542 &pon_pwrkey {
543 status = "okay";
544 };
545
546 &pon_resin {
547 status = "okay";
548
549 linux,code = <KEY_VOLUMEUP>;
550 };
551
552 &qupv3_id_0 {
553 status = "okay";
554 };
555
556 &qupv3_id_1 {
557 status = "okay";
558 };
559
560 &qupv3_id_2 {
561 status = "okay";
562 };
563
564 &sdhc_2 {
565 status = "okay";
566
567 cd-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>;
568 pinctrl-names = "default", "sleep";
569 pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
570 pinctrl-1 = <&sdc2_sleep_state &sdc2_card_det_n>;
571 vmmc-supply = <&vreg_l9c_2p9>;
572 vqmmc-supply = <&vreg_l6c_2p9>;
573 bus-width = <4>;
574 no-sdio;
575 no-emmc;
576 };
577
578 &slpi {
579 status = "okay";
580 };
581
582 &tlmm {
583 gpio-reserved-ranges = <40 4>, <52 4>;
584
585 sdc2_default_state: sdc2-default {
586 clk {
587 pins = "sdc2_clk";
588 drive-strength = <16>;
589 bias-disable;
590 };
591
592 cmd {
593 pins = "sdc2_cmd";
594 drive-strength = <16>;
595 bias-pull-up;
596 };
597
598 data {
599 pins = "sdc2_data";
600 drive-strength = <16>;
601 bias-pull-up;
602 };
603 };
604
605 mdm2ap_default: mdm2ap-default {
606 pins = "gpio1", "gpio3";
607 function = "gpio";
608 drive-strength = <8>;
609 bias-disable;
610 };
611
612 ts_int_default: ts-int-default {
613 pins = "gpio39";
614 function = "gpio";
615 drive-strength = <2>;
616 bias-disabled;
617 input-enable;
618 };
619
620 ap2mdm_default: ap2mdm-default {
621 pins = "gpio56", "gpio57";
622 function = "gpio";
623 drive-strength = <16>;
624 bias-disable;
625 };
626
627 sdc2_card_det_n: sd-card-det-n {
628 pins = "gpio77";
629 function = "gpio";
630 bias-pull-up;
631 drive-strength = <2>;
632 };
633 };
634
635 &uart12 {
636 status = "okay";
637 };
638
639 /* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */
640 &ufs_mem_hc { status = "disabled"; };
641 &ufs_mem_phy { status = "disabled"; };
642
643 &usb_1 {
644 status = "okay";
645 };
646
647 &usb_1_dwc3 {
648 dr_mode = "peripheral";
649 };
650
651 &usb_1_hsphy {
652 status = "okay";
653
654 vdda-pll-supply = <&vreg_l5a_0p88>;
655 vdda18-supply = <&vreg_l12a_1p8>;
656 vdda33-supply = <&vreg_l2a_3p1>;
657 };
658
659 &usb_1_qmpphy {
660 status = "okay";
661
662 vdda-phy-supply = <&vreg_l9a_1p2>;
663 vdda-pll-supply = <&vreg_l18a_0p9>;
664 };
Cache object: 3e7f38847e98db6cb038ae89c6d4e325
|