Merge tag 'dt-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / arch / arm64 / boot / dts / qcom / sm8250-sony-xperia-edo.dtsi
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                 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         /* Dual Cirrus Logic CS35L41 amps @ 40, 41 */
445 };
446
447 &i2c5 {
448         status = "okay";
449         clock-frequency = <400000>;
450
451         /* Dialog SLG51000 CMIC @ 75 */
452 };
453
454 &i2c9 {
455         status = "okay";
456         clock-frequency = <400000>;
457
458         /* AMS TCS3490 RGB+IR color sensor @ 72 */
459 };
460
461 &i2c13 {
462         status = "okay";
463         clock-frequency = <400000>;
464
465         touchscreen@48 {
466                 compatible = "samsung,s6sy761";
467                 reg = <0x48>;
468                 interrupt-parent = <&tlmm>;
469                 interrupts = <39 0x2008>;
470                 /* It's "vddio" downstream but it works anyway! */
471                 vdd-supply = <&vreg_l1c_1p8>;
472                 avdd-supply = <&vreg_l10c_3p3>;
473
474                 pinctrl-names = "default";
475                 pinctrl-0 = <&ts_int_default>;
476         };
477 };
478
479 &i2c15 {
480         status = "okay";
481         clock-frequency = <400000>;
482
483         /* Qcom SMB1390 @ 10 */
484         /* Silicon Labs SI4704 FM Radio Receiver @ 11 */
485         /* Qcom SMB1390_slave @ 18 */
486         /* HALO HL6111R Qi charger @ 25 */
487         /* Richwave RTC6226 FM Radio Receiver @ 64 */
488 };
489
490 &pcie0 {
491         status = "okay";
492 };
493
494 &pcie0_phy {
495         status = "okay";
496
497         vdda-phy-supply = <&vreg_l5a_0p88>;
498         vdda-pll-supply = <&vreg_l9a_1p2>;
499 };
500
501 &pcie2 {
502         status = "okay";
503
504         pinctrl-0 = <&pcie2_default_state &mdm2ap_default &ap2mdm_default>;
505 };
506
507 &pcie2_phy {
508         status = "okay";
509
510         vdda-phy-supply = <&vreg_l5a_0p88>;
511         vdda-pll-supply = <&vreg_l9a_1p2>;
512 };
513
514 &pon_pwrkey {
515         status = "okay";
516 };
517
518 &pon_resin {
519         status = "okay";
520
521         linux,code = <KEY_VOLUMEUP>;
522 };
523
524 &qupv3_id_0 {
525         status = "okay";
526 };
527
528 &qupv3_id_1 {
529         status = "okay";
530 };
531
532 &qupv3_id_2 {
533         status = "okay";
534 };
535
536 &sdhc_2 {
537         status = "okay";
538
539         cd-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>;
540         pinctrl-names = "default", "sleep";
541         pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
542         pinctrl-1 = <&sdc2_sleep_state &sdc2_card_det_n>;
543         vmmc-supply = <&vreg_l9c_2p9>;
544         vqmmc-supply = <&vreg_l6c_2p9>;
545         bus-width = <4>;
546         no-sdio;
547         no-emmc;
548 };
549
550 &slpi {
551         status = "okay";
552 };
553
554 &tlmm {
555         gpio-reserved-ranges = <40 4>, <52 4>;
556
557         sdc2_default_state: sdc2-default {
558                 clk {
559                         pins = "sdc2_clk";
560                         drive-strength = <16>;
561                         bias-disable;
562                 };
563
564                 cmd {
565                         pins = "sdc2_cmd";
566                         drive-strength = <16>;
567                         bias-pull-up;
568                 };
569
570                 data {
571                         pins = "sdc2_data";
572                         drive-strength = <16>;
573                         bias-pull-up;
574                 };
575         };
576
577         mdm2ap_default: mdm2ap-default {
578                 pins = "gpio1", "gpio3";
579                 function = "gpio";
580                 drive-strength = <8>;
581                 bias-disable;
582         };
583
584         ts_int_default: ts-int-default {
585                 pins = "gpio39";
586                 function = "gpio";
587                 drive-strength = <2>;
588                 bias-disabled;
589                 input-enable;
590         };
591
592         ap2mdm_default: ap2mdm-default {
593                 pins = "gpio56", "gpio57";
594                 function = "gpio";
595                 drive-strength = <16>;
596                 bias-disable;
597         };
598
599         sdc2_card_det_n: sd-card-det-n {
600                 pins = "gpio77";
601                 function = "gpio";
602                 bias-pull-up;
603                 drive-strength = <2>;
604         };
605 };
606
607 &uart12 {
608         status = "okay";
609 };
610
611 /* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */
612 &ufs_mem_hc { status = "disabled"; };
613 &ufs_mem_phy { status = "disabled"; };
614
615 &usb_1 {
616         status = "okay";
617 };
618
619 &usb_1_dwc3 {
620         dr_mode = "peripheral";
621 };
622
623 &usb_1_hsphy {
624         status = "okay";
625
626         vdda-pll-supply = <&vreg_l5a_0p88>;
627         vdda18-supply = <&vreg_l12a_1p8>;
628         vdda33-supply = <&vreg_l2a_3p1>;
629 };
630
631 &usb_1_qmpphy {
632         status = "okay";
633
634         vdda-phy-supply = <&vreg_l9a_1p2>;
635         vdda-pll-supply = <&vreg_l18a_0p9>;
636 };