Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / qcom / sdm630-sony-xperia-nile.dtsi
1 // SPDX-License-Identifier: BSD-3-Clause
2 /*
3  * Copyright (c) 2020, Konrad Dybcio <konrad.dybcio@somainline.org>
4  * Copyright (c) 2020, AngeloGioacchino Del Regno
5  *                     <angelogioacchino.delregno@somainline.org>
6  */
7
8 #include "pm660.dtsi"
9 #include "pm660l.dtsi"
10 #include <dt-bindings/gpio/gpio.h>
11 #include <dt-bindings/input/input.h>
12 #include <dt-bindings/input/gpio-keys.h>
13 #include <dt-bindings/leds/common.h>
14
15 / {
16         /* required for bootloader to select correct board */
17         qcom,msm-id = <318 0>;
18         qcom,board-id = <8 1>;
19         qcom,pmic-id = <0x1001b 0x101011a 0x00 0x00 0x1001b 0x201011a 0x00 0x00>;
20
21         /* This part enables graphical output via bootloader-enabled display */
22         chosen {
23                 bootargs = "earlycon=tty0 console=tty0";
24
25                 #address-cells = <2>;
26                 #size-cells = <2>;
27                 ranges;
28
29                 stdout-path = "framebuffer0";
30
31                 framebuffer0: framebuffer@9d400000 {
32                         compatible = "simple-framebuffer";
33                         reg = <0 0x9d400000 0 (1920 * 1080 * 4)>;
34                         width = <1080>;
35                         height = <1920>;
36                         stride = <(1080 * 4)>;
37                         format = "a8r8g8b8";
38                         status = "okay";
39                 };
40         };
41
42         board_vbat: vbat-regulator {
43                 compatible = "regulator-fixed";
44                 regulator-name = "VBAT";
45
46                 regulator-min-microvolt = <4000000>;
47                 regulator-max-microvolt = <4000000>;
48                 regulator-always-on;
49                 regulator-boot-on;
50         };
51
52         vph_pwr: vph-pwr-regulator {
53                 compatible = "regulator-fixed";
54                 regulator-name = "vph_pwr";
55
56                 regulator-always-on;
57                 regulator-boot-on;
58         };
59
60         cam_vdig_imx300_219_vreg: cam-vdig-imx300-219-regulator {
61                 compatible = "regulator-fixed";
62                 regulator-name = "cam_vdig_imx300_219_vreg";
63                 startup-delay-us = <0>;
64                 enable-active-high;
65                 gpio = <&tlmm 52 GPIO_ACTIVE_HIGH>;
66                 pinctrl-names = "default";
67                 pinctrl-0 = <&cam_vdig_default>;
68         };
69
70         cam_vana_front_vreg: cam-vana-front-regulator {
71                 compatible = "regulator-fixed";
72                 regulator-name = "cam_vana_front_vreg";
73                 startup-delay-us = <0>;
74                 enable-active-high;
75                 gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
76                 pinctrl-names = "default";
77                 pinctrl-0 = <&imx219_vana_default>;
78         };
79
80         cam_vana_rear_vreg: cam-vana-rear-regulator {
81                 compatible = "regulator-fixed";
82                 regulator-name = "cam_vana_rear_vreg";
83                 startup-delay-us = <0>;
84                 enable-active-high;
85                 gpio = <&tlmm 50 GPIO_ACTIVE_HIGH>;
86                 regulator-always-on;
87                 pinctrl-names = "default";
88                 pinctrl-0 = <&imx300_vana_default>;
89         };
90
91         gpio-keys {
92                 compatible = "gpio-keys";
93
94                 key-camera-focus {
95                         label = "Camera Focus";
96                         gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
97                         linux,input-type = <1>;
98                         linux,code = <KEY_CAMERA_FOCUS>;
99                         debounce-interval = <15>;
100                 };
101
102                 key-camera-snapshot {
103                         label = "Camera Snapshot";
104                         gpios = <&tlmm 113 GPIO_ACTIVE_LOW>;
105                         linux,input-type = <1>;
106                         linux,code = <KEY_CAMERA>;
107                         debounce-interval = <15>;
108                 };
109
110                 key-vol-down {
111                         label = "Volume Down";
112                         gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>;
113                         linux,input-type = <1>;
114                         linux,code = <KEY_VOLUMEDOWN>;
115                         wakeup-source;
116                         debounce-interval = <15>;
117                 };
118         };
119
120         reserved-memory {
121                 #address-cells = <2>;
122                 #size-cells = <2>;
123                 ranges;
124
125                 ramoops@ffc00000 {
126                         compatible = "ramoops";
127                         reg = <0x0 0xffc00000 0x0 0x100000>;
128                         record-size = <0x10000>;
129                         console-size = <0x60000>;
130                         ftrace-size = <0x10000>;
131                         pmsg-size = <0x20000>;
132                         ecc-size = <16>;
133                         status = "okay";
134                 };
135
136                 debug@ffb00000 {
137                         reg = <0x00 0xffb00000 0x00 0x100000>;
138                         no-map;
139                 };
140
141                 cont_splash_mem: splash@9d400000 {
142                         reg = <0 0x9d400000 0 (1920 * 1080 * 4)>;
143                         no-map;
144                 };
145         };
146
147         /*
148          * Until we hook up type-c detection, we
149          * have to stick with this. But it works.
150          */
151         extcon_usb: extcon-usb {
152                 compatible = "linux,extcon-usb-gpio";
153                 id-gpios = <&tlmm 58 GPIO_ACTIVE_HIGH>;
154         };
155 };
156
157 &adsp_pil {
158         firmware-name = "/*(DEBLOBBED)*/";
159 };
160
161 &blsp_i2c1 {
162         status = "okay";
163
164         touchscreen: synaptics-rmi4-i2c@70 {
165                 compatible = "syna,rmi4-i2c";
166                 reg = <0x70>;
167                 #address-cells = <1>;
168                 #size-cells = <0>;
169                 interrupts-extended = <&tlmm 45 0x2008>;
170
171                 pinctrl-names = "default";
172                 pinctrl-0 = <&ts_int_active &ts_lcd_id_active>;
173
174                 syna,reset-delay-ms = <200>;
175                 syna,startup-delay-ms = <220>;
176
177                 rmi4-f01@1 {
178                         reg = <0x01>;
179                         syna,nosleep-mode = <1>;
180                 };
181
182                 rmi4-f11@11 {
183                         reg = <0x11>;
184                         syna,sensor-type = <1>;
185                 };
186         };
187 };
188
189 &blsp_i2c2 {
190         status = "okay";
191
192         /* SMB1351 charger */
193 };
194
195 /* I2C3, 4, 5, 7 and 8 are disabled on this board. */
196
197 &blsp_i2c6 {
198         status = "okay";
199
200         /* NXP NFC */
201 };
202
203 &blsp1_uart2 {
204         status = "okay";
205
206         /* MSM serial console */
207 };
208
209 &blsp2_uart1 {
210         status = "okay";
211
212         /* HCI Bluetooth */
213 };
214
215 &pm660l_lpg {
216         qcom,power-source = <1>;
217
218         status = "okay";
219
220         multi-led {
221                 color = <LED_COLOR_ID_RGB>;
222                 function = LED_FUNCTION_STATUS;
223
224                 #address-cells = <1>;
225                 #size-cells = <0>;
226
227                 led@1 {
228                         reg = <1>;
229                         color = <LED_COLOR_ID_BLUE>;
230                 };
231
232                 led@2 {
233                         reg = <2>;
234                         color = <LED_COLOR_ID_GREEN>;
235                 };
236
237                 led@3 {
238                         reg = <3>;
239                         color = <LED_COLOR_ID_RED>;
240                 };
241         };
242 };
243
244 &pon_pwrkey {
245         status = "okay";
246 };
247
248 &pon_resin {
249         status = "okay";
250
251         linux,code = <KEY_VOLUMEUP>;
252 };
253
254 &qhee_code {
255         reg = <0x00 0x85800000 0x00 0x3700000>;
256 };
257
258 &qusb2phy0 {
259         status = "okay";
260
261         vdd-supply = <&vreg_l1b_0p925>;
262         vdda-pll-supply = <&vreg_l10a_1p8>;
263         vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
264 };
265
266 &rpm_requests {
267         regulators-0 {
268                 compatible = "qcom,rpm-pm660l-regulators";
269
270                 vdd_s1-supply = <&vph_pwr>;
271                 vdd_s2-supply = <&vph_pwr>;
272                 vdd_s3_s4-supply = <&vph_pwr>;
273                 vdd_s5-supply = <&vph_pwr>;
274                 vdd_s6-supply = <&vph_pwr>;
275
276                 vdd_l1_l9_l10-supply = <&vreg_s2b_1p05>;
277                 vdd_l2-supply = <&vreg_bob>;
278                 vdd_l3_l5_l7_l8-supply = <&vreg_bob>;
279                 vdd_l4_l6-supply = <&vreg_bob>;
280                 vdd_bob-supply = <&vph_pwr>;
281
282                 vreg_s1b_1p125: s1 {
283                         regulator-min-microvolt = <1125000>;
284                         regulator-max-microvolt = <1125000>;
285                         regulator-enable-ramp-delay = <200>;
286                         regulator-ramp-delay = <0>;
287                 };
288
289                 vreg_s2b_1p05: s2 {
290                         regulator-min-microvolt = <1050000>;
291                         regulator-max-microvolt = <1050000>;
292                         regulator-enable-ramp-delay = <200>;
293                         regulator-ramp-delay = <0>;
294                 };
295
296                 /*
297                  * At least on Nile's configuration, S3B/S4B (VDD_CX) and
298                  * S5B (VDD_MX) are managed only through RPM Power Domains.
299                  * Trying to set a voltage on the main supply will create
300                  * havoc and freeze the SoC.
301                  * In any case, reference voltages for these regulators are:
302                  * S3B/S4B: 0.870V
303                  * S5B: 0.915V
304                  */
305
306                 /* LDOs */
307                 vreg_l1b_0p925: l1 {
308                         regulator-min-microvolt = <920000>;
309                         regulator-max-microvolt = <928000>;
310                         regulator-enable-ramp-delay = <250>;
311                         regulator-ramp-delay = <0>;
312                         regulator-allow-set-load;
313                 };
314
315                 vreg_l2b_2p95: l2 {
316                         /*
317                          * This regulator supports 1.648 - 3.104V on this board
318                          * but we set a max voltage of anything less than 2.7V
319                          * to satisfy a condition in sdhci.c that will disable
320                          * 3.3V SDHCI signaling, which happens to be not really
321                          * supported on the Xperia Nile/Ganges platform.
322                          */
323                         regulator-min-microvolt = <1648000>;
324                         regulator-max-microvolt = <2696000>;
325                         regulator-enable-ramp-delay = <250>;
326                         regulator-ramp-delay = <0>;
327                         regulator-allow-set-load;
328                 };
329
330                 vreg_l3b_3p0: l3 {
331                         regulator-min-microvolt = <2800000>;
332                         regulator-max-microvolt = <2800000>;
333                         regulator-enable-ramp-delay = <250>;
334                         regulator-ramp-delay = <0>;
335                         regulator-min-microamp = <200>;
336                         regulator-max-microamp = <600000>;
337                         regulator-system-load = <100000>;
338                         regulator-allow-set-load;
339                 };
340
341                 vreg_l4b_2p95: l4 {
342                         regulator-min-microvolt = <2944000>;
343                         regulator-max-microvolt = <2952000>;
344                         regulator-enable-ramp-delay = <250>;
345                         regulator-ramp-delay = <0>;
346
347                         regulator-min-microamp = <200>;
348                         regulator-max-microamp = <600000>;
349                         regulator-system-load = <570000>;
350                         regulator-allow-set-load;
351                 };
352
353                 /*
354                  * Downstream specifies a range of 1721-3600mV,
355                  * but the only assigned consumers are SDHCI2 VMMC
356                  * and Coresight QPDI that both request pinned 2.95V.
357                  * Tighten the range to 1.8-3.328 (closest to 3.3) to
358                  * make the mmc driver happy.
359                  */
360                 vreg_l5b_2p95: l5 {
361                         regulator-min-microvolt = <1800000>;
362                         regulator-max-microvolt = <3328000>;
363                         regulator-enable-ramp-delay = <250>;
364                         regulator-ramp-delay = <0>;
365                         regulator-allow-set-load;
366                         regulator-system-load = <800000>;
367                 };
368
369                 vreg_l6b_3p3: l6 {
370                         regulator-min-microvolt = <1704000>;
371                         regulator-max-microvolt = <3312000>;
372                         regulator-enable-ramp-delay = <250>;
373                         regulator-ramp-delay = <0>;
374                 };
375
376                 vreg_l7b_3p125: l7 {
377                         regulator-min-microvolt = <2704000>;
378                         regulator-max-microvolt = <3128000>;
379                         regulator-enable-ramp-delay = <250>;
380                         regulator-ramp-delay = <0>;
381                 };
382
383                 vreg_l8b_3p3: l8 {
384                         regulator-min-microvolt = <2800000>;
385                         regulator-max-microvolt = <3400000>;
386                         regulator-enable-ramp-delay = <250>;
387                         regulator-ramp-delay = <0>;
388                 };
389
390                 /* L9B (870mV) is currently unused */
391                 /* L10B (915mV) is currently unused */
392
393                 vreg_bob: bob {
394                         regulator-min-microvolt = <3304000>;
395                         regulator-max-microvolt = <3624000>;
396                         regulator-enable-ramp-delay = <500>;
397                         regulator-ramp-delay = <0>;
398                 };
399         };
400
401         regulators-1 {
402                 compatible = "qcom,rpm-pm660-regulators";
403
404                 vdd_s1-supply = <&vph_pwr>;
405                 vdd_s2-supply = <&vph_pwr>;
406                 vdd_s3-supply = <&vph_pwr>;
407                 vdd_s4-supply = <&vph_pwr>;
408                 vdd_s5-supply = <&vph_pwr>;
409                 vdd_s6-supply = <&vph_pwr>;
410
411                 vdd_l1_l6_l7-supply = <&vreg_s5a_1p35>;
412                 vdd_l2_l3-supply = <&vreg_s2b_1p05>;
413                 vdd_l5-supply = <&vreg_s2b_1p05>;
414                 vdd_l8_l9_l10_l11_l12_l13_l14-supply = <&vreg_s4a_2p04>;
415                 vdd_l15_l16_l17_l18_l19-supply = <&vreg_bob>;
416
417                 /*
418                  * S1A (FTAPC0), S2A (FTAPC1), S3A (HFAPC1) are managed
419                  * by the Core Power Reduction hardened (CPRh) and the
420                  * Operating State Manager (OSM) HW automatically.
421                  */
422
423                 vreg_s4a_2p04: s4 {
424                         regulator-min-microvolt = <2040000>;
425                         regulator-max-microvolt = <2040000>;
426                         regulator-enable-ramp-delay = <200>;
427                         regulator-ramp-delay = <0>;
428                         regulator-always-on;
429                 };
430
431                 vreg_s5a_1p35: s5 {
432                         regulator-min-microvolt = <1224000>;
433                         regulator-max-microvolt = <1350000>;
434                         regulator-enable-ramp-delay = <200>;
435                         regulator-ramp-delay = <0>;
436                 };
437
438                 vreg_s6a_0p87: s6 {
439                         regulator-min-microvolt = <504000>;
440                         regulator-max-microvolt = <992000>;
441                         regulator-enable-ramp-delay = <150>;
442                         regulator-ramp-delay = <0>;
443                 };
444
445                 /* LDOs */
446                 vreg_l1a_1p225: l1 {
447                         regulator-min-microvolt = <1226000>;
448                         regulator-max-microvolt = <1250000>;
449                         regulator-enable-ramp-delay = <250>;
450                         regulator-ramp-delay = <0>;
451                         regulator-allow-set-load;
452                 };
453
454                 vreg_l2a_1p0: l2 {
455                         regulator-min-microvolt = <944000>;
456                         regulator-max-microvolt = <1008000>;
457                         regulator-enable-ramp-delay = <250>;
458                         regulator-ramp-delay = <0>;
459                 };
460
461                 vreg_l3a_1p0: l3 {
462                         regulator-min-microvolt = <944000>;
463                         regulator-max-microvolt = <1008000>;
464                         regulator-enable-ramp-delay = <250>;
465                         regulator-ramp-delay = <0>;
466                 };
467
468                 vreg_l5a_0p848: l5 {
469                         regulator-min-microvolt = <800000>;
470                         regulator-max-microvolt = <952000>;
471                         regulator-enable-ramp-delay = <250>;
472                         regulator-ramp-delay = <0>;
473                 };
474
475                 vreg_l6a_1p3: l6 {
476                         regulator-min-microvolt = <1304000>;
477                         regulator-max-microvolt = <1368000>;
478                         regulator-allow-set-load;
479                         regulator-enable-ramp-delay = <250>;
480                         regulator-ramp-delay = <0>;
481                 };
482
483                 vreg_l7a_1p2: l7 {
484                         regulator-min-microvolt = <1200000>;
485                         regulator-max-microvolt = <1200000>;
486                         regulator-enable-ramp-delay = <250>;
487                         regulator-ramp-delay = <0>;
488                 };
489
490                 vreg_l8a_1p8: l8 {
491                         regulator-min-microvolt = <1800000>;
492                         regulator-max-microvolt = <1800000>;
493                         regulator-enable-ramp-delay = <250>;
494                         regulator-ramp-delay = <0>;
495                         regulator-system-load = <325000>;
496                         regulator-allow-set-load;
497                 };
498
499                 vreg_l9a_1p8: l9 {
500                         regulator-min-microvolt = <1804000>;
501                         regulator-max-microvolt = <1896000>;
502                         regulator-enable-ramp-delay = <250>;
503                         regulator-ramp-delay = <0>;
504                         regulator-allow-set-load;
505                 };
506
507                 vreg_l10a_1p8: l10 {
508                         regulator-min-microvolt = <1800000>;
509                         regulator-max-microvolt = <1944000>;
510                         regulator-enable-ramp-delay = <250>;
511                         regulator-ramp-delay = <0>;
512                         regulator-allow-set-load;
513                 };
514
515                 vreg_l11a_1p8: l11 {
516                         regulator-min-microvolt = <1784000>;
517                         regulator-max-microvolt = <1944000>;
518                         regulator-enable-ramp-delay = <250>;
519                         regulator-ramp-delay = <0>;
520                 };
521
522                 vreg_l12a_1p8: l12 {
523                         regulator-min-microvolt = <1800000>;
524                         regulator-max-microvolt = <1944000>;
525                         regulator-enable-ramp-delay = <250>;
526                         regulator-ramp-delay = <0>;
527                 };
528
529                 /* This gives power to the LPDDR4: never turn it off! */
530                 vreg_l13a_1p8: l13 {
531                         regulator-min-microvolt = <1800000>;
532                         regulator-max-microvolt = <1944000>;
533                         regulator-enable-ramp-delay = <250>;
534                         regulator-ramp-delay = <0>;
535                         regulator-boot-on;
536                         regulator-always-on;
537                 };
538
539                 vreg_l14a_1p8: l14 {
540                         regulator-min-microvolt = <1710000>;
541                         regulator-max-microvolt = <1904000>;
542                         regulator-enable-ramp-delay = <250>;
543                         regulator-ramp-delay = <0>;
544                 };
545
546                 vreg_l15a_1p8: l15 {
547                         regulator-min-microvolt = <1648000>;
548                         regulator-max-microvolt = <2952000>;
549                         regulator-enable-ramp-delay = <250>;
550                         regulator-ramp-delay = <0>;
551                 };
552
553                 /* L16A (2.70V) is unused */
554
555                 vreg_l17a_1p8: l17 {
556                         regulator-min-microvolt = <1648000>;
557                         regulator-max-microvolt = <2952000>;
558                         regulator-enable-ramp-delay = <250>;
559                         regulator-ramp-delay = <0>;
560                 };
561
562                 vreg_l18a_1v8: l18 {
563                         regulator-min-microvolt = <1800000>;
564                         regulator-max-microvolt = <1800000>;
565                         regulator-enable-ramp-delay = <250>;
566                         regulator-ramp-delay = <10>;
567                         regulator-min-microamp = <200>;
568                         regulator-max-microamp = <50000>;
569                         regulator-system-load = <10000>;
570                         regulator-allow-set-load;
571                 };
572
573                 vreg_l19a_3p3: l19 {
574                         regulator-min-microvolt = <3312000>;
575                         regulator-max-microvolt = <3400000>;
576                         regulator-enable-ramp-delay = <250>;
577                         regulator-ramp-delay = <0>;
578                         regulator-allow-set-load;
579                 };
580         };
581 };
582
583 &sdc2_state_on {
584         sd-cd-pins {
585                 pins = "gpio54";
586                 function = "gpio";
587                 bias-pull-up;
588                 drive-strength = <2>;
589         };
590 };
591
592 &sdc2_state_off {
593         sd-cd-pins {
594                 pins = "gpio54";
595                 function = "gpio";
596                 bias-disable;
597                 drive-strength = <2>;
598         };
599 };
600
601 &sdhc_1 {
602         status = "okay";
603         supports-cqe;
604
605         /* SoMC Nile platform's eMMC doesn't support HS200 mode */
606         mmc-ddr-1_8v;
607         mmc-hs400-1_8v;
608         mmc-hs400-enhanced-strobe;
609
610         vmmc-supply = <&vreg_l4b_2p95>;
611         vqmmc-supply = <&vreg_l8a_1p8>;
612 };
613
614 &sdhc_2 {
615         status = "okay";
616
617         vmmc-supply = <&vreg_l5b_2p95>;
618         vqmmc-supply = <&vreg_l2b_2p95>;
619 };
620
621 &tlmm {
622         gpio-reserved-ranges = <8 4>;
623
624         ts_int_active: ts-int-active-state {
625                 pins = "gpio45";
626                 function = "gpio";
627                 drive-strength = <8>;
628                 bias-pull-up;
629         };
630
631         ts_lcd_id_active: ts-lcd-id-active-state {
632                 pins = "gpio56";
633                 function = "gpio";
634                 drive-strength = <8>;
635                 bias-disable;
636         };
637
638         imx300_vana_default: imx300-vana-default-state {
639                 pins = "gpio50";
640                 function = "gpio";
641                 bias-disable;
642                 drive-strength = <2>;
643         };
644
645         imx219_vana_default: imx219-vana-default-state {
646                 pins = "gpio51";
647                 function = "gpio";
648                 bias-disable;
649                 drive-strength = <2>;
650         };
651
652         cam_vdig_default: cam-vdig-default-state {
653                 pins = "gpio52";
654                 function = "gpio";
655                 bias-disable;
656                 drive-strength = <2>;
657         };
658 };
659
660 &usb3 {
661         status = "okay";
662 };
663
664 &usb3_dwc3 {
665         dr_mode = "peripheral";
666         extcon = <&extcon_usb>;
667 };