Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / qcom / msm8998-fxtec-pro1.dts
1 // SPDX-License-Identifier: BSD-3-Clause
2 /*
3  * Copyright (c) 2021, AngeloGioacchino Del Regno
4  *                     <angelogioacchino.delregno@somainline.org>
5  */
6
7 /dts-v1/;
8
9 #include <dt-bindings/input/input.h>
10 #include <dt-bindings/leds/common.h>
11 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
12 #include "msm8998.dtsi"
13 #include "pm8005.dtsi"
14 #include "pm8998.dtsi"
15 #include "pmi8998.dtsi"
16
17 / {
18         model = "F(x)tec Pro1 (QX1000)";
19         compatible = "fxtec,pro1", "qcom,msm8998";
20         chassis-type = "handset";
21         qcom,board-id = <0x02000b 0x10>;
22
23         aliases {
24                 serial0 = &blsp2_uart1;
25                 serial1 = &blsp1_uart3;
26         };
27
28         /*
29          * Until we hook up type-c detection, we
30          * have to stick with this. But it works.
31          */
32         extcon_usb: extcon-usb {
33                 compatible = "linux,extcon-usb-gpio";
34                 id-gpios = <&tlmm 38 GPIO_ACTIVE_HIGH>;
35         };
36
37         gpio-hall-sensors {
38                 compatible = "gpio-keys";
39                 label = "Hall sensors";
40                 pinctrl-names = "default";
41                 pinctrl-0 = <&hall_sensor1_default>;
42
43                 event-hall-sensor1 {
44                         label = "Keyboard Hall Sensor";
45                         gpios = <&tlmm 124 GPIO_ACTIVE_HIGH>;
46                         debounce-interval = <15>;
47                         wakeup-source;
48                         linux,input-type = <EV_SW>;
49                         linux,code = <SW_KEYPAD_SLIDE>;
50                 };
51         };
52
53         gpio-kb-extra-keys {
54                 compatible = "gpio-keys";
55                 label = "Keyboard extra keys";
56                 pinctrl-names = "default";
57                 pinctrl-0 = <&gpio_kb_pins_extra>;
58
59                 key-home {
60                         label = "Home";
61                         gpios = <&tlmm 21 GPIO_ACTIVE_LOW>;
62                         linux,code = <KEY_HOMEPAGE>;
63                         debounce-interval = <15>;
64                         linux,can-disable;
65                 };
66
67                 key-super-l {
68                         label = "Super Left";
69                         gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
70                         linux,code = <KEY_FN>;
71                         debounce-interval = <15>;
72                         linux,can-disable;
73                 };
74
75                 key-super-r {
76                         label = "Super Right";
77                         gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
78                         linux,code = <KEY_FN>;
79                         debounce-interval = <15>;
80                         linux,can-disable;
81                 };
82
83                 key-shift {
84                         label = "Shift";
85                         gpios = <&tlmm 114 GPIO_ACTIVE_LOW>;
86                         linux,code = <KEY_RIGHTSHIFT>;
87                         debounce-interval = <15>;
88                         linux,can-disable;
89                 };
90
91                 key-ctrl {
92                         label = "Ctrl";
93                         gpios = <&tlmm 128 GPIO_ACTIVE_LOW>;
94                         linux,code = <KEY_LEFTCTRL>;
95                         debounce-interval = <15>;
96                         linux,can-disable;
97                 };
98
99                 key-alt {
100                         label = "Alt";
101                         gpios = <&tlmm 129 GPIO_ACTIVE_LOW>;
102                         linux,code = <KEY_LEFTALT>;
103                         debounce-interval = <15>;
104                         linux,can-disable;
105                 };
106         };
107
108         gpio-keys {
109                 compatible = "gpio-keys";
110                 label = "Side buttons";
111                 pinctrl-names = "default";
112                 pinctrl-0 = <&vol_up_pin_a>, <&cam_focus_pin_a>,
113                             <&cam_snapshot_pin_a>;
114                 button-vol-up {
115                         label = "Volume Up";
116                         gpios = <&pm8998_gpios 6 GPIO_ACTIVE_LOW>;
117                         linux,input-type = <EV_KEY>;
118                         linux,code = <KEY_VOLUMEUP>;
119                         wakeup-source;
120                         debounce-interval = <15>;
121                 };
122
123                 button-camera-snapshot {
124                         label = "Camera Snapshot";
125                         gpios = <&pm8998_gpios 7 GPIO_ACTIVE_LOW>;
126                         linux,input-type = <EV_KEY>;
127                         linux,code = <KEY_CAMERA>;
128                         debounce-interval = <15>;
129                 };
130
131                 button-camera-focus {
132                         label = "Camera Focus";
133                         gpios = <&pm8998_gpios 8 GPIO_ACTIVE_LOW>;
134                         linux,input-type = <EV_KEY>;
135                         linux,code = <KEY_CAMERA_FOCUS>;
136                         debounce-interval = <15>;
137                 };
138         };
139
140         keyboard-leds {
141                 compatible = "gpio-leds";
142
143                 led-0 {
144                         color = <LED_COLOR_ID_WHITE>;
145                         default-state = "off";
146                         function = LED_FUNCTION_KBD_BACKLIGHT;
147                         gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
148                         label = "white:kbd_backlight";
149                         retain-state-suspended;
150                 };
151
152                 led-1 {
153                         color = <LED_COLOR_ID_YELLOW>;
154                         default-state = "off";
155                         function = LED_FUNCTION_CAPSLOCK;
156                         gpios = <&tlmm 26 GPIO_ACTIVE_HIGH>;
157                         label = "yellow:capslock";
158                         linux,default-trigger = "kbd-capslock";
159                 };
160         };
161
162         reserved-memory {
163                 cont_splash_mem: memory@9d400000 {
164                         reg = <0x0 0x9d400000 0x0 0x2000000>;
165                         no-map;
166                 };
167
168                 zap_shader_region: memory@f6400000 {
169                         compatible = "shared-dma-pool";
170                         reg = <0x0 0xf6400000 0x0 0x2000>;
171                         no-map;
172                 };
173
174                 ramoops@ffc00000 {
175                         compatible = "ramoops";
176                         reg = <0x0 0xffc00000 0x0 0x100000>;
177                         console-size = <0x60000>;
178                         ecc-size = <16>;
179                         ftrace-size = <0x10000>;
180                         pmsg-size = <0x20000>;
181                         record-size = <0x10000>;
182                 };
183         };
184
185         ts_vio_vreg: ts-vio-vreg {
186                 compatible = "regulator-fixed";
187                 regulator-name = "ts_vio_reg";
188                 startup-delay-us = <2>;
189                 enable-active-high;
190                 gpio = <&tlmm 81 GPIO_ACTIVE_HIGH>;
191                 pinctrl-names = "default";
192                 pinctrl-0 = <&ts_vio_default>;
193                 regulator-always-on;
194         };
195
196         vph_pwr: vph-pwr-regulator {
197                 compatible = "regulator-fixed";
198                 regulator-name = "vph_pwr";
199                 regulator-always-on;
200                 regulator-boot-on;
201         };
202 };
203
204 &blsp1_uart3 {
205         status = "okay";
206
207         bluetooth {
208                 compatible = "qcom,wcn3990-bt";
209
210                 vddio-supply = <&vreg_s4a_1p8>;
211                 vddxo-supply = <&vreg_l7a_1p8>;
212                 vddrf-supply = <&vreg_l17a_1p3>;
213                 vddch0-supply = <&vreg_l25a_3p3>;
214                 max-speed = <3200000>;
215         };
216 };
217
218 &blsp1_uart3_on {
219         rx-pins {
220                 /delete-property/ bias-disable;
221                 /*
222                  * Configure a pull-up on 45 (RX). This is needed to
223                  * avoid garbage data when the TX pin of the Bluetooth
224                  * module is in tri-state (module powered off or not
225                  * driving the signal yet).
226                  */
227                 bias-pull-up;
228         };
229
230         cts-pins {
231                 /delete-property/ bias-disable;
232                 /*
233                  * Configure a pull-down on 47 (CTS) to match the pull
234                  * of the Bluetooth module.
235                  */
236                 bias-pull-down;
237         };
238 };
239
240 &blsp2_uart1 {
241         status = "okay";
242 };
243
244 &blsp2_i2c1 {
245         status = "okay";
246
247         touchscreen@14 {
248                 compatible = "goodix,gt9286";
249                 reg = <0x14>;
250                 interrupt-parent = <&tlmm>;
251                 interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
252                 reset-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
253                 AVDD28-supply = <&vreg_l28_3p0>;
254                 VDDIO-supply = <&ts_vio_vreg>;
255                 pinctrl-names = "active";
256                 pinctrl-0 = <&ts_rst_n>, <&ts_int_n>;
257         };
258 };
259
260 &etf {
261         status = "okay";
262 };
263
264 &etm1 {
265         status = "okay";
266 };
267
268 &etm2 {
269         status = "okay";
270 };
271
272 &etm3 {
273         status = "okay";
274 };
275
276 &etm4 {
277         status = "okay";
278 };
279
280 &etm5 {
281         status = "okay";
282 };
283
284 &etm6 {
285         status = "okay";
286 };
287
288 &etm7 {
289         status = "okay";
290 };
291
292 &etm8 {
293         status = "okay";
294 };
295
296 &etr {
297         status = "okay";
298 };
299
300 &funnel1 {
301         status = "okay";
302 };
303
304 &funnel2 {
305         status = "okay";
306 };
307
308 &funnel3 {
309         status = "okay";
310 };
311
312 &funnel4 {
313         /* FIXME: Figure out why clock late_initcall crashes the board with this enabled. */
314 };
315
316 &funnel5 {
317         /* FIXME: Figure out why clock late_initcall crashes the board with this enabled. */
318 };
319
320 &pcie0 {
321         status = "okay";
322 };
323
324 &pcie_phy {
325         status = "okay";
326 };
327
328 &pm8005_regulators {
329         vdd_s1-supply = <&vph_pwr>;
330
331         pm8005_s1: s1 { /* VDD_GFX supply */
332                 regulator-min-microvolt = <524000>;
333                 regulator-max-microvolt = <1100000>;
334                 regulator-enable-ramp-delay = <500>;
335
336                 /* Hack until we rig up the gpu consumer */
337                 regulator-always-on;
338         };
339 };
340
341 &pm8998_gpios {
342         vol_up_pin_a: vol-up-active-state {
343                 pins = "gpio6";
344                 function = "normal";
345                 bias-pull-up;
346                 input-enable;
347                 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
348         };
349
350         cam_focus_pin_a: cam-focus-btn-active-state {
351                 pins = "gpio7";
352                 function = "normal";
353                 bias-pull-up;
354                 input-enable;
355                 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
356         };
357
358         cam_snapshot_pin_a: cam-snapshot-btn-active-state {
359                 pins = "gpio8";
360                 function = "normal";
361                 bias-pull-up;
362                 input-enable;
363                 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
364         };
365 };
366
367 &pm8998_resin {
368         linux,code = <KEY_VOLUMEDOWN>;
369         status = "okay";
370 };
371
372 &qusb2phy {
373         status = "okay";
374
375         vdda-pll-supply = <&vreg_l12a_1p8>;
376         vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
377 };
378
379 &replicator1 {
380         status = "okay";
381 };
382
383 &rpm_requests {
384         regulators-0 {
385                 compatible = "qcom,rpm-pm8998-regulators";
386
387                 vdd_s1-supply = <&vph_pwr>;
388                 vdd_s2-supply = <&vph_pwr>;
389                 vdd_s3-supply = <&vph_pwr>;
390                 vdd_s4-supply = <&vph_pwr>;
391                 vdd_s5-supply = <&vph_pwr>;
392                 vdd_s6-supply = <&vph_pwr>;
393                 vdd_s7-supply = <&vph_pwr>;
394                 vdd_s8-supply = <&vph_pwr>;
395                 vdd_s9-supply = <&vph_pwr>;
396                 vdd_s10-supply = <&vph_pwr>;
397                 vdd_s11-supply = <&vph_pwr>;
398                 vdd_s12-supply = <&vph_pwr>;
399                 vdd_s13-supply = <&vph_pwr>;
400                 vdd_l1_l27-supply = <&vreg_s7a_1p025>;
401                 vdd_l2_l8_l17-supply = <&vreg_s3a_1p35>;
402                 vdd_l3_l11-supply = <&vreg_s7a_1p025>;
403                 vdd_l4_l5-supply = <&vreg_s7a_1p025>;
404                 vdd_l6-supply = <&vreg_s5a_2p04>;
405                 vdd_l7_l12_l14_l15-supply = <&vreg_s5a_2p04>;
406                 vdd_l9-supply = <&vreg_bob>;
407                 vdd_l10_l23_l25-supply = <&vreg_bob>;
408                 vdd_l13_l19_l21-supply = <&vreg_bob>;
409                 vdd_l16_l28-supply = <&vreg_bob>;
410                 vdd_l18_l22-supply = <&vreg_bob>;
411                 vdd_l20_l24-supply = <&vreg_bob>;
412                 vdd_l26-supply = <&vreg_s3a_1p35>;
413                 vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;
414
415                 vreg_s3a_1p35: s3 {
416                         regulator-min-microvolt = <1352000>;
417                         regulator-max-microvolt = <1352000>;
418                 };
419
420                 vreg_s4a_1p8: s4 {
421                         regulator-min-microvolt = <1800000>;
422                         regulator-max-microvolt = <1800000>;
423                         regulator-allow-set-load;
424                 };
425
426                 vreg_s5a_2p04: s5 {
427                         regulator-min-microvolt = <1904000>;
428                         regulator-max-microvolt = <2040000>;
429                 };
430
431                 vreg_s7a_1p025: s7 {
432                         regulator-min-microvolt = <900000>;
433                         regulator-max-microvolt = <1028000>;
434                 };
435
436                 vreg_l1a_0p875: l1 {
437                         regulator-min-microvolt = <880000>;
438                         regulator-max-microvolt = <880000>;
439                 };
440
441                 vreg_l2a_1p2: l2 {
442                         regulator-min-microvolt = <1200000>;
443                         regulator-max-microvolt = <1200000>;
444                 };
445
446                 vreg_l3a_1p0: l3 {
447                         regulator-min-microvolt = <1000000>;
448                         regulator-max-microvolt = <1000000>;
449                 };
450
451                 vreg_l5a_0p8: l5 {
452                         regulator-min-microvolt = <800000>;
453                         regulator-max-microvolt = <800000>;
454                 };
455
456                 vreg_l6a_1p8: l6 {
457                         regulator-min-microvolt = <1808000>;
458                         regulator-max-microvolt = <1808000>;
459                 };
460
461                 vreg_l7a_1p8: l7 {
462                         regulator-min-microvolt = <1800000>;
463                         regulator-max-microvolt = <1800000>;
464                 };
465
466                 vreg_l8a_1p2: l8 {
467                         regulator-min-microvolt = <1200000>;
468                         regulator-max-microvolt = <1200000>;
469                 };
470
471                 vreg_l9a_1p8: l9 {
472                         regulator-min-microvolt = <1808000>;
473                         regulator-max-microvolt = <2960000>;
474                 };
475
476                 vreg_l10a_1p8: l10 {
477                         regulator-min-microvolt = <1808000>;
478                         regulator-max-microvolt = <2960000>;
479                 };
480
481                 vreg_l11a_1p0: l11 {
482                         regulator-min-microvolt = <1000000>;
483                         regulator-max-microvolt = <1000000>;
484                 };
485
486                 vreg_l12a_1p8: l12 {
487                         regulator-min-microvolt = <1800000>;
488                         regulator-max-microvolt = <1800000>;
489                 };
490
491                 vreg_l13a_2p95: l13 {
492                         regulator-min-microvolt = <1808000>;
493                         regulator-max-microvolt = <2960000>;
494                 };
495
496                 vreg_l14a_1p88: l14 {
497                         regulator-min-microvolt = <1880000>;
498                         regulator-max-microvolt = <1880000>;
499                 };
500
501                 vreg_l15a_1p8: l15 {
502                         regulator-min-microvolt = <1800000>;
503                         regulator-max-microvolt = <1800000>;
504                 };
505
506                 vreg_l16a_2p7: l16 {
507                         regulator-min-microvolt = <2704000>;
508                         regulator-max-microvolt = <2704000>;
509                 };
510
511                 vreg_l17a_1p3: l17 {
512                         regulator-min-microvolt = <1304000>;
513                         regulator-max-microvolt = <1304000>;
514                 };
515
516                 vreg_l18a_2p7: l18 {
517                         regulator-min-microvolt = <2704000>;
518                         regulator-max-microvolt = <2704000>;
519                 };
520
521                 vreg_l19a_3p0: l19 {
522                         regulator-min-microvolt = <3008000>;
523                         regulator-max-microvolt = <3008000>;
524                 };
525
526                 vreg_l20a_2p95: l20 {
527                         regulator-min-microvolt = <2960000>;
528                         regulator-max-microvolt = <2960000>;
529                         regulator-allow-set-load;
530                 };
531
532                 vreg_l21a_2p95: l21 {
533                         regulator-min-microvolt = <2960000>;
534                         regulator-max-microvolt = <2960000>;
535                         regulator-system-load = <800000>;
536                         regulator-allow-set-load;
537                 };
538
539                 vreg_l22a_2p85: l22 {
540                         regulator-min-microvolt = <2864000>;
541                         regulator-max-microvolt = <2864000>;
542                 };
543
544                 vreg_l23a_3p3: l23 {
545                         regulator-min-microvolt = <3312000>;
546                         regulator-max-microvolt = <3312000>;
547                 };
548
549                 vreg_l24a_3p075: l24 {
550                         regulator-min-microvolt = <3088000>;
551                         regulator-max-microvolt = <3088000>;
552                 };
553
554                 vreg_l25a_3p3: l25 {
555                         regulator-min-microvolt = <3104000>;
556                         regulator-max-microvolt = <3312000>;
557                 };
558
559                 vreg_l26a_1p2: l26 {
560                         regulator-min-microvolt = <1200000>;
561                         regulator-max-microvolt = <1200000>;
562                         regulator-allow-set-load;
563                 };
564
565                 vreg_l28_3p0: l28 {
566                         regulator-min-microvolt = <3008000>;
567                         regulator-max-microvolt = <3008000>;
568                 };
569
570                 vreg_lvs1a_1p8: lvs1 {
571                         regulator-min-microvolt = <1800000>;
572                         regulator-max-microvolt = <1800000>;
573                 };
574
575                 vreg_lvs2a_1p8: lvs2 {
576                         regulator-min-microvolt = <1800000>;
577                         regulator-max-microvolt = <1800000>;
578                 };
579
580         };
581
582         regulators-1 {
583                 compatible = "qcom,rpm-pmi8998-regulators";
584
585                 vdd_bob-supply = <&vph_pwr>;
586
587                 vreg_bob: bob {
588                         regulator-min-microvolt = <3312000>;
589                         regulator-max-microvolt = <3600000>;
590                 };
591         };
592 };
593
594 &remoteproc_adsp {
595         status = "okay";
596 };
597
598 &remoteproc_mss {
599         status = "okay";
600 };
601
602 &remoteproc_slpi {
603         status = "okay";
604 };
605
606 &tlmm {
607         gpio-reserved-ranges = <0 4>;
608
609         mdp_vsync_n: mdp-vsync-n-state {
610                 pins = "gpio10";
611                 function = "mdp_vsync_a";
612                 bias-pull-down;
613                 drive-strength = <2>;
614         };
615
616         gpio_kb_pins_extra: gpio-kb-pins-extra-state {
617                 pins = "gpio21", "gpio32", "gpio33", "gpio114",
618                        "gpio128", "gpio129";
619                 function = "gpio";
620                 drive-strength = <2>;
621                 bias-pull-up;
622         };
623
624         ts_vio_default: ts-vio-def-state {
625                 pins = "gpio81";
626                 function = "gpio";
627                 bias-disable;
628                 drive-strength = <2>;
629         };
630
631         ts_rst_n: ts-rst-n-state {
632                 pins = "gpio89";
633                 function = "gpio";
634                 bias-pull-up;
635                 drive-strength = <8>;
636         };
637
638         hall_sensor1_default: hall-sensor1-def-state {
639                 pins = "gpio124";
640                 function = "gpio";
641                 bias-disable;
642                 drive-strength = <2>;
643         };
644
645         ts_int_n: ts-int-n-state {
646                 pins = "gpio125";
647                 function = "gpio";
648                 bias-disable;
649                 drive-strength = <8>;
650         };
651 };
652
653 &sdhc2 {
654         status = "okay";
655         cd-gpios = <&tlmm 95 GPIO_ACTIVE_LOW>;
656
657         vmmc-supply = <&vreg_l21a_2p95>;
658         vqmmc-supply = <&vreg_l13a_2p95>;
659
660         pinctrl-names = "default", "sleep";
661         pinctrl-0 = <&sdc2_on &sdc2_cd>;
662         pinctrl-1 = <&sdc2_off &sdc2_cd>;
663 };
664
665 &stm {
666         status = "okay";
667 };
668
669 &ufshc {
670         status = "okay";
671         vcc-supply = <&vreg_l20a_2p95>;
672         vccq-supply = <&vreg_l26a_1p2>;
673         vccq2-supply = <&vreg_s4a_1p8>;
674         vdd-hba-supply = <&vreg_l26a_1p2>;
675         vcc-max-microamp = <750000>;
676         vccq-max-microamp = <560000>;
677         vccq2-max-microamp = <750000>;
678 };
679
680 &ufsphy {
681         status = "okay";
682         vdda-phy-supply = <&vreg_l1a_0p875>;
683         vdda-pll-supply = <&vreg_l2a_1p2>;
684 };
685
686 &usb3 {
687         status = "okay";
688 };
689
690 &usb3_dwc3 {
691         dr_mode = "peripheral";
692         extcon = <&extcon_usb>;
693 };
694
695 &usb3phy {
696         status = "okay";
697
698         vdda-phy-supply = <&vreg_l1a_0p875>;
699         vdda-pll-supply = <&vreg_l2a_1p2>;
700 };
701
702 /* GT9286 analog supply */
703 &vreg_l28_3p0 {
704         regulator-min-microvolt = <2800000>;
705         regulator-max-microvolt = <2800000>;
706 };
707
708 &wifi {
709         status = "okay";
710
711         vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
712         vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
713         vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
714         vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
715 };