Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux-2.6-microblaze.git] / arch / arm64 / boot / dts / qcom / sdm845-oneplus-common.dtsi
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * SDM845 OnePlus 6(T) (enchilada / fajita) common device tree source
4  *
5  * Copyright (c) 2020, The Linux Foundation. All rights reserved.
6  */
7
8 /dts-v1/;
9
10 #include <dt-bindings/gpio/gpio.h>
11 #include <dt-bindings/input/linux-event-codes.h>
12 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
13
14 #include "sdm845.dtsi"
15 #include "pm8998.dtsi"
16 #include "pmi8998.dtsi"
17
18 /delete-node/ &rmtfs_mem;
19
20 / {
21         aliases {
22                 hsuart0 = &uart6;
23         };
24
25         gpio-keys {
26                 compatible = "gpio-keys";
27                 label = "Volume keys";
28                 autorepeat;
29
30                 pinctrl-names = "default";
31                 pinctrl-0 = <&volume_down_gpio &volume_up_gpio>;
32
33                 vol-down {
34                         label = "Volume down";
35                         linux,code = <KEY_VOLUMEDOWN>;
36                         gpios = <&pm8998_gpio 5 GPIO_ACTIVE_LOW>;
37                         debounce-interval = <15>;
38                 };
39
40                 vol-up {
41                         label = "Volume up";
42                         linux,code = <KEY_VOLUMEUP>;
43                         gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
44                         debounce-interval = <15>;
45                 };
46         };
47
48         reserved-memory {
49                 /*
50                  * The rmtfs memory region in downstream is 'dynamically allocated'
51                  * but given the same address every time. Hard code it as this address is
52                  * where the modem firmware expects it to be.
53                  */
54                 rmtfs_mem: memory@f5b01000 {
55                         compatible = "qcom,rmtfs-mem";
56                         reg = <0 0xf5b01000 0 0x200000>;
57                         no-map;
58
59                         qcom,client-id = <1>;
60                         qcom,vmid = <15>;
61                 };
62
63                 /*
64                  * It seems like reserving the old rmtfs_mem region is also needed to prevent
65                  * random crashes which are most likely modem related, more testing needed.
66                  */
67                 removed_region: memory@88f00000 {
68                         no-map;
69                         reg = <0 0x88f00000 0 0x200000>;
70                 };
71
72                 ramoops: ramoops@ac300000 {
73                         compatible = "ramoops";
74                         reg = <0 0xac300000 0 0x400000>;
75                         record-size = <0x40000>;
76                         console-size = <0x40000>;
77                         ftrace-size = <0x40000>;
78                         pmsg-size = <0x200000>;
79                         devinfo-size = <0x1000>;
80                         ecc-size = <16>;
81                 };
82         };
83
84         vph_pwr: vph-pwr-regulator {
85                 compatible = "regulator-fixed";
86                 regulator-name = "vph_pwr";
87                 regulator-min-microvolt = <3700000>;
88                 regulator-max-microvolt = <3700000>;
89         };
90
91         /*
92          * Apparently RPMh does not provide support for PM8998 S4 because it
93          * is always-on; model it as a fixed regulator.
94          */
95         vreg_s4a_1p8: pm8998-smps4 {
96                 compatible = "regulator-fixed";
97                 regulator-name = "vreg_s4a_1p8";
98
99                 regulator-min-microvolt = <1800000>;
100                 regulator-max-microvolt = <1800000>;
101
102                 regulator-always-on;
103                 regulator-boot-on;
104
105                 vin-supply = <&vph_pwr>;
106         };
107
108         /*
109          * The touchscreen regulator seems to be controlled somehow by a gpio.
110          * Model it as a fixed regulator and keep it on. Without schematics we
111          * don't know how this is actually wired up...
112          */
113         ts_1p8_supply: ts-1p8-regulator {
114                 compatible = "regulator-fixed";
115                 regulator-name = "ts_1p8_supply";
116
117                 regulator-min-microvolt = <1800000>;
118                 regulator-max-microvolt = <1800000>;
119
120                 gpio = <&tlmm 88 0>;
121                 enable-active-high;
122                 regulator-boot-on;
123         };
124 };
125
126 &adsp_pas {
127         status = "okay";
128         firmware-name = "qcom/sdm845/oneplus6/adsp.mbn";
129 };
130
131 &apps_rsc {
132         pm8998-rpmh-regulators {
133                 compatible = "qcom,pm8998-rpmh-regulators";
134                 qcom,pmic-id = "a";
135
136                 vdd-s1-supply = <&vph_pwr>;
137                 vdd-s2-supply = <&vph_pwr>;
138                 vdd-s3-supply = <&vph_pwr>;
139                 vdd-s4-supply = <&vph_pwr>;
140                 vdd-s5-supply = <&vph_pwr>;
141                 vdd-s6-supply = <&vph_pwr>;
142                 vdd-s7-supply = <&vph_pwr>;
143                 vdd-s8-supply = <&vph_pwr>;
144                 vdd-s9-supply = <&vph_pwr>;
145                 vdd-s10-supply = <&vph_pwr>;
146                 vdd-s11-supply = <&vph_pwr>;
147                 vdd-s12-supply = <&vph_pwr>;
148                 vdd-s13-supply = <&vph_pwr>;
149                 vdd-l1-l27-supply = <&vreg_s7a_1p025>;
150                 vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
151                 vdd-l3-l11-supply = <&vreg_s7a_1p025>;
152                 vdd-l4-l5-supply = <&vreg_s7a_1p025>;
153                 vdd-l6-supply = <&vph_pwr>;
154                 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
155                 vdd-l9-supply = <&vreg_bob>;
156                 vdd-l10-l23-l25-supply = <&vreg_bob>;
157                 vdd-l13-l19-l21-supply = <&vreg_bob>;
158                 vdd-l16-l28-supply = <&vreg_bob>;
159                 vdd-l18-l22-supply = <&vreg_bob>;
160                 vdd-l20-l24-supply = <&vreg_bob>;
161                 vdd-l26-supply = <&vreg_s3a_1p35>;
162                 vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
163
164                 vreg_s3a_1p35: smps3 {
165                         regulator-min-microvolt = <1352000>;
166                         regulator-max-microvolt = <1352000>;
167                 };
168
169                 vreg_s5a_2p04: smps5 {
170                         regulator-min-microvolt = <1904000>;
171                         regulator-max-microvolt = <2040000>;
172                 };
173
174                 vreg_s7a_1p025: smps7 {
175                         regulator-min-microvolt = <900000>;
176                         regulator-max-microvolt = <1028000>;
177                 };
178
179                 vdda_mipi_dsi0_pll:
180                 vdda_qlink_lv:
181                 vdda_ufs1_core:
182                 vdda_usb1_ss_core:
183                 vreg_l1a_0p875: ldo1 {
184                         regulator-min-microvolt = <880000>;
185                         regulator-max-microvolt = <880000>;
186                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
187                 };
188
189                 vreg_l2a_1p2: ldo2 {
190                         regulator-min-microvolt = <1200000>;
191                         regulator-max-microvolt = <1200000>;
192                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
193                         regulator-always-on;
194                 };
195
196                 vreg_l5a_0p8: ldo5 {
197                         regulator-min-microvolt = <800000>;
198                         regulator-max-microvolt = <800000>;
199                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
200                 };
201
202                 vreg_l7a_1p8: ldo7 {
203                         regulator-min-microvolt = <1800000>;
204                         regulator-max-microvolt = <1800000>;
205                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
206                 };
207
208                 vdda_qusb_hs0_1p8:
209                 vreg_l12a_1p8: ldo12 {
210                         regulator-min-microvolt = <1800000>;
211                         regulator-max-microvolt = <1800000>;
212                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
213                 };
214
215                 vreg_l14a_1p88: ldo14 {
216                         regulator-min-microvolt = <1800000>;
217                         regulator-max-microvolt = <1800000>;
218                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
219                         regulator-always-on;
220                 };
221
222                 vreg_l17a_1p3: ldo17 {
223                         regulator-min-microvolt = <1304000>;
224                         regulator-max-microvolt = <1304000>;
225                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
226                 };
227
228                 vreg_l20a_2p95: ldo20 {
229                         regulator-min-microvolt = <2704000>;
230                         regulator-max-microvolt = <2960000>;
231                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
232                 };
233
234                 vdda_qusb_hs0_3p1:
235                 vreg_l24a_3p075: ldo24 {
236                         regulator-min-microvolt = <3088000>;
237                         regulator-max-microvolt = <3088000>;
238                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
239                 };
240
241                 vreg_l25a_3p3: ldo25 {
242                         regulator-min-microvolt = <3300000>;
243                         regulator-max-microvolt = <3312000>;
244                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
245                 };
246
247                 vdda_mipi_dsi0_1p2:
248                 vdda_ufs1_1p2:
249                 vreg_l26a_1p2: ldo26 {
250                         regulator-min-microvolt = <1200000>;
251                         regulator-max-microvolt = <1200000>;
252                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
253                 };
254
255                 vreg_l28a_3p0: ldo28 {
256                         regulator-min-microvolt = <2856000>;
257                         regulator-max-microvolt = <3008000>;
258                         regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
259                 };
260         };
261
262         pmi8998-rpmh-regulators {
263                 compatible = "qcom,pmi8998-rpmh-regulators";
264                 qcom,pmic-id = "b";
265
266                 vdd-bob-supply = <&vph_pwr>;
267
268                 vreg_bob: bob {
269                         regulator-min-microvolt = <3312000>;
270                         regulator-max-microvolt = <3600000>;
271                         regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
272                         regulator-allow-bypass;
273                 };
274         };
275
276         pm8005-rpmh-regulators {
277                 compatible = "qcom,pm8005-rpmh-regulators";
278                 qcom,pmic-id = "c";
279
280                 vdd-s1-supply = <&vph_pwr>;
281                 vdd-s2-supply = <&vph_pwr>;
282                 vdd-s3-supply = <&vph_pwr>;
283                 vdd-s4-supply = <&vph_pwr>;
284
285                 vreg_s3c_0p6: smps3 {
286                         regulator-min-microvolt = <600000>;
287                         regulator-max-microvolt = <600000>;
288                 };
289         };
290 };
291
292 &cdsp_pas {
293         status = "okay";
294         firmware-name = "qcom/sdm845/oneplus6/cdsp.mbn";
295 };
296
297 &dsi0 {
298         status = "okay";
299         vdda-supply = <&vdda_mipi_dsi0_1p2>;
300
301         #address-cells = <1>;
302         #size-cells = <0>;
303
304         /*
305          * Both devices use different panels but all other properties
306          * are common. Compatible line is declared in device dts.
307          */
308         display_panel: panel@0 {
309                 status = "disabled";
310
311                 #address-cells = <1>;
312                 #size-cells = <0>;
313                 reg = <0>;
314
315                 vddio-supply = <&vreg_l14a_1p88>;
316
317                 reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
318
319                 pinctrl-names = "default";
320                 pinctrl-0 = <&panel_reset_pins &panel_te_pin &panel_esd_pin>;
321
322                 port {
323                         panel_in: endpoint {
324                                 remote-endpoint = <&dsi0_out>;
325                         };
326                 };
327         };
328 };
329
330 &dsi0_out {
331         remote-endpoint = <&panel_in>;
332         data-lanes = <0 1 2 3>;
333 };
334
335 &dsi0_phy {
336         status = "okay";
337         vdds-supply = <&vdda_mipi_dsi0_pll>;
338 };
339
340 &gcc {
341         protected-clocks = <GCC_QSPI_CORE_CLK>,
342                                 <GCC_QSPI_CORE_CLK_SRC>,
343                                 <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
344                                 <GCC_LPASS_Q6_AXI_CLK>,
345                                 <GCC_LPASS_SWAY_CLK>;
346 };
347
348 &gpu {
349         zap-shader {
350                 memory-region = <&gpu_mem>;
351                 firmware-name = "qcom/sdm845/oneplus6/a630_zap.mbn";
352         };
353 };
354
355 &i2c12 {
356         status = "okay";
357         clock-frequency = <400000>;
358
359         synaptics-rmi4-i2c@20 {
360                 compatible = "syna,rmi4-i2c";
361                 reg = <0x20>;
362                 #address-cells = <1>;
363                 #size-cells = <0>;
364                 interrupts-extended = <&tlmm 125 IRQ_TYPE_EDGE_FALLING>;
365
366                 pinctrl-names = "default";
367                 pinctrl-0 = <&ts_default_pins>;
368
369                 vdd-supply = <&vreg_l28a_3p0>;
370                 vio-supply = <&ts_1p8_supply>;
371
372                 syna,reset-delay-ms = <200>;
373                 syna,startup-delay-ms = <200>;
374
375                 rmi4-f01@1 {
376                         reg = <0x01>;
377                         syna,nosleep-mode = <1>;
378                 };
379
380                 rmi4_f12: rmi4-f12@12 {
381                         reg = <0x12>;
382                         touchscreen-x-mm = <68>;
383                         touchscreen-y-mm = <144>;
384                         syna,sensor-type = <1>;
385                         syna,rezero-wait-ms = <200>;
386                 };
387         };
388 };
389
390 &mdss {
391         status = "okay";
392 };
393
394 &mdss_mdp {
395         status = "okay";
396 };
397
398 /* Modem/wifi*/
399 &mss_pil {
400         status = "okay";
401         firmware-name = "qcom/sdm845/oneplus6/mba.mbn", "qcom/sdm845/oneplus6/modem.mbn";
402 };
403
404 &pm8998_gpio {
405         volume_down_gpio: pm8998_gpio5 {
406                 pinconf {
407                         pins = "gpio5";
408                         function = "normal";
409                         input-enable;
410                         bias-pull-up;
411                         qcom,drive-strength = <0>;
412                 };
413         };
414
415         volume_up_gpio: pm8998_gpio6 {
416                 pinconf {
417                         pins = "gpio6";
418                         function = "normal";
419                         input-enable;
420                         bias-pull-up;
421                         qcom,drive-strength = <0>;
422                 };
423         };
424 };
425
426 &qupv3_id_1 {
427         status = "okay";
428 };
429
430 &qupv3_id_0 {
431         status = "okay";
432 };
433
434 &qup_i2c12_default {
435         mux {
436                 pins = "gpio49", "gpio50";
437                 function = "qup12";
438                 drive-strength = <2>;
439                 bias-disable;
440         };
441 };
442
443 &qup_i2c10_default {
444         pinconf {
445                 pins = "gpio55", "gpio56";
446                 drive-strength = <2>;
447                 bias-disable;
448         };
449 };
450
451 &qup_uart9_default {
452         pinconf-tx {
453                 pins = "gpio4";
454                 drive-strength = <2>;
455                 bias-disable;
456         };
457
458         pinconf-rx {
459                 pins = "gpio5";
460                 drive-strength = <2>;
461                 bias-pull-up;
462         };
463 };
464
465 /*
466  * Prevent garbage data on bluetooth UART lines
467  */
468 &qup_uart6_default {
469         pinmux {
470                 pins = "gpio45", "gpio46", "gpio47", "gpio48";
471                 function = "qup6";
472         };
473
474         cts {
475                 pins = "gpio45";
476                 bias-pull-down;
477         };
478
479         rts-tx {
480                 pins = "gpio46", "gpio47";
481                 drive-strength = <2>;
482                 bias-disable;
483         };
484
485         rx {
486                 pins = "gpio48";
487                 bias-pull-up;
488         };
489 };
490
491 &uart6 {
492         status = "okay";
493
494         bluetooth {
495                 compatible = "qcom,wcn3990-bt";
496
497                 /*
498                  * This path is relative to the qca/
499                  * subdir under lib/firmware.
500                  */
501                 firmware-name = "oneplus6/crnv21.bin";
502
503                 vddio-supply = <&vreg_s4a_1p8>;
504                 vddxo-supply = <&vreg_l7a_1p8>;
505                 vddrf-supply = <&vreg_l17a_1p3>;
506                 vddch0-supply = <&vreg_l25a_3p3>;
507                 max-speed = <3200000>;
508         };
509 };
510
511 &ufs_mem_hc {
512         status = "okay";
513
514         reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
515
516         vcc-supply = <&vreg_l20a_2p95>;
517         vcc-max-microamp = <600000>;
518 };
519
520 &ufs_mem_phy {
521         status = "okay";
522
523         vdda-phy-supply = <&vdda_ufs1_core>;
524         vdda-pll-supply = <&vdda_ufs1_1p2>;
525 };
526
527 &usb_1 {
528         status = "okay";
529
530         /*
531          * disable USB3 clock requirement as the device only supports
532          * USB2.
533          */
534         qcom,select-utmi-as-pipe-clk;
535 };
536
537 &usb_1_dwc3 {
538         /*
539          * We don't have the capability to switch modes yet.
540          */
541         dr_mode = "peripheral";
542
543         /* fastest mode for USB 2 */
544         maximum-speed = "high-speed";
545
546         /* Remove USB3 phy as it's unused on this device. */
547         phys = <&usb_1_hsphy>;
548         phy-names = "usb2-phy";
549 };
550
551 &usb_1_hsphy {
552         status = "okay";
553
554         vdd-supply = <&vdda_usb1_ss_core>;
555         vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
556         vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
557
558         qcom,imp-res-offset-value = <8>;
559         qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
560         qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
561         qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
562 };
563
564 &tlmm {
565         gpio-reserved-ranges = <0 4>, <81 4>;
566
567         tri_state_key_default: tri_state_key_default {
568                 mux {
569                         pins = "gpio40", "gpio42", "gpio26";
570                         function = "gpio";
571                         drive-strength = <2>;
572                         bias-disable;
573                 };
574         };
575
576         ts_default_pins: ts-int {
577                 mux {
578                         pins = "gpio99", "gpio125";
579                         function = "gpio";
580                         drive-strength = <16>;
581                         bias-pull-up;
582                 };
583         };
584
585         panel_reset_pins: panel-reset {
586                 mux {
587                         pins = "gpio6", "gpio25", "gpio26";
588                         function = "gpio";
589                         drive-strength = <8>;
590                         bias-disable = <0>;
591                 };
592         };
593
594         panel_te_pin: panel-te {
595                 mux {
596                         pins = "gpio10";
597                         function = "mdp_vsync";
598                         drive-strength = <2>;
599                         bias-disable;
600                         input-enable;
601                 };
602         };
603
604         panel_esd_pin: panel-esd {
605                 mux {
606                         pins = "gpio30";
607                         function = "gpio";
608                         drive-strength = <2>;
609                         bias-pull-down;
610                         input-enable;
611                 };
612         };
613 };
614
615 &wifi {
616         status = "okay";
617         vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
618         vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
619         vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
620         vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
621
622         qcom,snoc-host-cap-8bit-quirk;
623 };