Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / qcom / msm8994-msft-lumia-octagon.dtsi
1 // SPDX-License-Identifier: BSD-3-Clause
2 /*
3  * Common Board Device Tree for
4  * Microsoft Mobile MSM8994 Octagon Platforms
5  *
6  * Copyright (c) 2020, Konrad Dybcio
7  * Copyright (c) 2020, Gustave Monce <gustave.monce@outlook.com>
8  */
9
10 #include "pm8994.dtsi"
11 #include "pmi8994.dtsi"
12 #include <dt-bindings/gpio/gpio.h>
13 #include <dt-bindings/input/gpio-keys.h>
14 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
15
16 /*
17  * Delete all generic (msm8994.dtsi) reserved
18  * memory mappings which are different in this device.
19  */
20 /delete-node/ &adsp_mem;
21 /delete-node/ &audio_mem;
22 /delete-node/ &cont_splash_mem;
23 /delete-node/ &mba_mem;
24 /delete-node/ &mpss_mem;
25 /delete-node/ &peripheral_region;
26 /delete-node/ &res_hyp_mem;
27 /delete-node/ &rmtfs_mem;
28 /delete-node/ &smem_mem;
29
30 / {
31         /*
32          * Most Lumia 950/XL users use GRUB to load their kernels,
33          * hence there is no need for msm-id and friends.
34          */
35
36         /*
37          * This enables graphical output via bootloader-enabled display.
38          * acpi=no is required due to WP platforms having ACPI support, but
39          * only for Windows-based OSes.
40          */
41         chosen {
42                 bootargs = "earlycon=efifb console=efifb acpi=no";
43
44                 #address-cells = <2>;
45                 #size-cells = <2>;
46                 ranges;
47         };
48
49         clocks {
50                 divclk4: divclk4 {
51                         compatible = "fixed-clock";
52                         #clock-cells = <0>;
53
54                         clock-frequency = <32768>;
55                         clock-output-names = "divclk4";
56
57                         pinctrl-names = "default";
58                         pinctrl-0 = <&divclk4_pin_a>;
59                 };
60         };
61
62         gpio-keys {
63                 compatible = "gpio-keys";
64                 autorepeat;
65
66                 volup-key {
67                         label = "Volume Up";
68                         gpios = <&pm8994_gpios 3 GPIO_ACTIVE_LOW>;
69                         linux,input-type = <1>;
70                         linux,code = <KEY_VOLUMEUP>;
71                         wakeup-source;
72                         debounce-interval = <15>;
73                 };
74
75                 camsnap-key {
76                         label = "Camera Snapshot";
77                         gpios = <&pm8994_gpios 4 GPIO_ACTIVE_LOW>;
78                         linux,input-type = <1>;
79                         linux,code = <KEY_CAMERA>;
80                         wakeup-source;
81                         debounce-interval = <15>;
82                 };
83
84                 camfocus-key {
85                         label = "Camera Focus";
86                         gpios = <&pm8994_gpios 5 GPIO_ACTIVE_LOW>;
87                         linux,input-type = <1>;
88                         linux,code = <KEY_VOLUMEUP>;
89                         wakeup-source;
90                         debounce-interval = <15>;
91                 };
92         };
93
94         gpio-hall-sensor {
95                 compatible = "gpio-keys";
96
97                 pinctrl-names = "default";
98                 pinctrl-0 = <&hall_front_default &hall_back_default>;
99
100                 label = "GPIO Hall Effect Sensor";
101
102                 event-hall-front-sensor {
103                         label = "Hall Effect Front Sensor";
104                         gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
105                         linux,input-type = <EV_SW>;
106                         linux,code = <SW_LID>;
107                         linux,can-disable;
108                 };
109
110                 event-hall-back-sensor {
111                         label = "Hall Effect Back Sensor";
112                         gpios = <&tlmm 75 GPIO_ACTIVE_HIGH>;
113                         linux,input-type = <EV_SW>;
114                         linux,code = <SW_MACHINE_COVER>;
115                         linux,can-disable;
116                 };
117         };
118
119         reserved-memory {
120                 /*
121                  * This device being a WP platform has a very different
122                  * memory layout than other Android based devices.
123                  * This memory layout is directly copied from the original
124                  * device UEFI firmware, and adapted based on observations
125                  * using JTAG for the Qualcomm Peripheral Image regions.
126                  */
127
128                 uefi_mem: memory@200000 {
129                         reg = <0 0x00200000 0 0x100000>;
130                         no-map;
131                 };
132
133                 mppark_mem: memory@300000 {
134                         reg = <0 0x00300000 0 0x80000>;
135                         no-map;
136                 };
137
138                 fbpt_mem: memory@380000 {
139                         reg = <0 0x00380000 0 0x1000>;
140                         no-map;
141                 };
142
143                 dbg2_mem: memory@381000 {
144                         reg = <0 0x00381000 0 0x4000>;
145                         no-map;
146                 };
147
148                 capsule_mem: memory@385000 {
149                         reg = <0 0x00385000 0 0x1000>;
150                         no-map;
151                 };
152
153                 tpmctrl_mem: memory@386000 {
154                         reg = <0 0x00386000 0 0x3000>;
155                         no-map;
156                 };
157
158                 uefiinfo_mem: memory@389000 {
159                         reg = <0 0x00389000 0 0x1000>;
160                         no-map;
161                 };
162
163                 reset_mem: memory@389000 {
164                         reg = <0 0x00389000 0 0x1000>;
165                         no-map;
166                 };
167
168                 resuncached_mem: memory@38e000 {
169                         reg = <0 0x0038e000 0 0x72000>;
170                         no-map;
171                 };
172
173                 disp_mem: memory@400000 {
174                         reg = <0 0x00400000 0 0x800000>;
175                         no-map;
176                 };
177
178                 uefistack_mem: memory@c00000 {
179                         reg = <0 0x00c00000 0 0x40000>;
180                         no-map;
181                 };
182
183                 cpuvect_mem: memory@c40000 {
184                         reg = <0 0x00c40000 0 0x10000>;
185                         no-map;
186                 };
187
188                 rescached_mem: memory@400000 {
189                         reg = <0 0x00c50000 0 0xb0000>;
190                         no-map;
191                 };
192
193                 tzapps_mem: memory@6500000 {
194                         reg = <0 0x06500000 0 0x500000>;
195                         no-map;
196                 };
197
198                 smem_mem: memory@6a00000 {
199                         reg = <0 0x06a00000 0 0x200000>;
200                         no-map;
201                 };
202
203                 hyp_mem: memory@6c00000 {
204                         reg = <0 0x06c00000 0 0x100000>;
205                         no-map;
206                 };
207
208                 tz_mem: memory@6d00000 {
209                         reg = <0 0x06d00000 0 0x160000>;
210                         no-map;
211                 };
212
213                 rfsa_adsp_mem: memory@6e60000 {
214                         reg = <0 0x06e60000 0 0x10000>;
215                         no-map;
216                 };
217
218                 rfsa_mpss_mem: memory@6e70000 {
219                         compatible = "qcom,rmtfs-mem";
220                         reg = <0 0x06e70000 0 0x10000>;
221                         no-map;
222
223                         qcom,client-id = <1>;
224                 };
225
226                 /*
227                  * Value obtained from the device original ACPI DSDT table
228                  * MPSS_EFS / SBL
229                  */
230                 mba_mem: memory@6e80000 {
231                         reg = <0 0x06e80000 0 0x180000>;
232                         no-map;
233                 };
234
235                 /*
236                  * Peripheral Image loader region begin!
237                  * The region reserved for pil is 0x7000000-0xef00000
238                  */
239
240                 mpss_mem: memory@7000000 {
241                         reg = <0 0x07000000 0 0x5a00000>;
242                         no-map;
243                 };
244
245                 adsp_mem: memory@ca00000 {
246                         reg = <0 0x0ca00000 0 0x1800000>;
247                         no-map;
248                 };
249
250                 venus_mem: memory@e200000 {
251                         reg = <0 0x0e200000 0 0x500000>;
252                         no-map;
253                 };
254
255                 pil_metadata_mem: memory@e700000 {
256                         reg = <0 0x0e700000 0 0x4000>;
257                         no-map;
258                 };
259
260                 memory@e704000 {
261                         reg = <0 0x0e704000 0 0x7fc000>;
262                         no-map;
263                 };
264                 /* Peripheral Image loader region end */
265
266                 cnss_mem: memory@ef00000 {
267                         reg = <0 0x0ef00000 0 0x300000>;
268                         no-map;
269                 };
270         };
271 };
272
273 &blsp1_i2c1 {
274         status = "okay";
275
276         rmi4-i2c-dev@4b {
277                 compatible = "syna,rmi4-i2c";
278                 reg = <0x4b>;
279                 #address-cells = <1>;
280                 #size-cells = <0>;
281
282                 interrupt-parent = <&tlmm>;
283                 interrupts = <77 IRQ_TYPE_EDGE_FALLING>;
284
285                 rmi4-f01@1 {
286                         reg = <0x01>;
287                         syna,nosleep-mode = <1>;
288                 };
289
290                 rmi4-f12@12 {
291                         reg = <0x12>;
292                         syna,sensor-type = <1>;
293                         syna,clip-x-low = <0>;
294                         syna,clip-x-high = <1440>;
295                         syna,clip-y-low = <0>;
296                         syna,clip-y-high = <2560>;
297                 };
298         };
299 };
300
301 &blsp1_i2c2 {
302         status = "okay";
303
304         /*
305          * This device uses the Texas Instruments TAS2553, however the TAS2552 driver
306          * seems to work here. In the future a proper driver might need to
307          * be written for this device.
308          */
309         tas2553: tas2553@40 {
310                 compatible = "ti,tas2552";
311                 reg = <0x40>;
312
313                 vbat-supply = <&vph_pwr>;
314                 iovdd-supply = <&vreg_s4a_1p8>;
315                 avdd-supply = <&vreg_s4a_1p8>;
316
317                 enable-gpio = <&pm8994_gpios 12 GPIO_ACTIVE_HIGH>;
318         };
319 };
320
321 &blsp1_i2c5 {
322         status = "okay";
323
324         ak09912: magnetometer@c {
325                 compatible = "asahi-kasei,ak09912";
326                 reg = <0xc>;
327
328                 interrupt-parent = <&tlmm>;
329                 interrupts = <26 IRQ_TYPE_EDGE_RISING>;
330
331                 vdd-supply = <&vreg_l18a_2p85>;
332                 vid-supply = <&vreg_lvs2a_1p8>;
333         };
334
335         zpa2326: barometer@5c {
336                 compatible = "murata,zpa2326";
337                 reg = <0x5c>;
338
339                 interrupt-parent = <&tlmm>;
340                 interrupts = <74 IRQ_TYPE_EDGE_RISING>;
341
342                 vdd-supply = <&vreg_lvs2a_1p8>;
343         };
344
345         mpu6050: accelerometer@68 {
346                 compatible = "invensense,mpu6500";
347                 reg = <0x68>;
348
349                 interrupt-parent = <&tlmm>;
350                 interrupts = <64 IRQ_TYPE_EDGE_RISING>;
351
352                 vdd-supply = <&vreg_lvs2a_1p8>;
353                 vddio-supply = <&vreg_lvs2a_1p8>;
354         };
355 };
356
357 &blsp1_i2c6 {
358         status = "okay";
359
360         pn547: pn547@28 {
361                 compatible = "nxp,pn544-i2c";
362
363                 reg = <0x28>;
364
365                 interrupt-parent = <&tlmm>;
366                 interrupts = <29 IRQ_TYPE_EDGE_RISING>;
367
368                 enable-gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>;
369                 firmware-gpios = <&tlmm 94 GPIO_ACTIVE_HIGH>;
370         };
371 };
372
373 &blsp1_uart2 {
374         status = "okay";
375 };
376
377 &blsp2_i2c1 {
378         status = "okay";
379
380         sideinteraction: ad7147_captouch@2c {
381                 compatible = "ad,ad7147_captouch";
382                 reg = <0x2c>;
383
384                 pinctrl-names = "default", "sleep";
385                 pinctrl-0 = <&grip_default>;
386                 pinctrl-1 = <&grip_sleep>;
387
388                 interrupts = <&tlmm 96 IRQ_TYPE_EDGE_FALLING>;
389
390                 button_num = <8>;
391                 touchpad_num = <0>;
392                 wheel_num = <0>;
393                 slider_num = <0>;
394
395                 vcc-supply = <&vreg_l18a_2p85>;
396         };
397
398         /*
399          * The QPDS-T900/QPDS-T930 is a customized part built for Nokia
400          * by Avago. It is very similar to the Avago APDS-9930 with some
401          * minor differences. In the future a proper driver might need to
402          * be written for this device. For now this works fine.
403          */
404         qpdst900: qpdst900@39 {
405                 compatible = "avago,apds9930";
406                 reg = <0x39>;
407
408                 interrupt-parent = <&tlmm>;
409                 interrupts = <40 IRQ_TYPE_EDGE_FALLING>;
410         };
411 };
412
413 &blsp2_i2c5 {
414         status = "okay";
415
416         fm_radio: si4705@11 {
417                 compatible = "silabs,si470x";
418                 reg = <0x11>;
419
420                 interrupt-parent = <&tlmm>;
421                 interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
422                 reset-gpios = <&tlmm 93 GPIO_ACTIVE_HIGH>;
423         };
424
425         vreg_lpddr_1p1: fan53526a@6c {
426                 compatible = "fcs,fan53526";
427                 reg = <0x6c>;
428
429                 regulator-min-microvolt = <1100000>;
430                 regulator-max-microvolt = <1100000>;
431                 vin-supply = <&vph_pwr>;
432                 fcs,suspend-voltage-selector = <1>;
433                 regulator-always-on; /* Turning off DDR power doesn't sound good. */
434         };
435
436         /* ANX7816 HDMI bridge (needs MDSS HDMI) */
437 };
438
439 &blsp2_spi4 {
440         status = "okay";
441
442         /*
443          * This device is a Lattice UC120 USB-C PD PHY.
444          * It is actually a Lattice iCE40 FPGA pre-programmed by
445          * the device firmware with a specific bitstream
446          * enabling USB Type C PHY functionality.
447          * Communication is done via a proprietary protocol over SPI.
448          *
449          * TODO: Once a proper driver is available, replace this.
450          */
451         uc120: ice5lp2k@0 {
452                 compatible = "lattice,ice40-fpga-mgr";
453                 reg = <0>;
454                 spi-max-frequency = <5000000>;
455                 cdone-gpios = <&tlmm 95 GPIO_ACTIVE_HIGH>;
456                 reset-gpios = <&pmi8994_gpios 4 GPIO_ACTIVE_LOW>;
457         };
458 };
459
460 &blsp2_uart2 {
461         status = "okay";
462
463         qca6174_bt: bluetooth {
464                 compatible = "qcom,qca6174-bt";
465
466                 enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
467                 clocks = <&divclk4>;
468         };
469 };
470
471 &pm8994_gpios {
472         bt_en_gpios: bt-en-gpios-state {
473                 pinconf {
474                         pins = "gpio19";
475                         function = PMIC_GPIO_FUNC_NORMAL;
476                         output-low;
477                         power-source = <PM8994_GPIO_S4>;
478                         qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
479                         bias-pull-down;
480                 };
481         };
482
483         divclk4_pin_a: divclk4-state {
484                 pinconf {
485                         pins = "gpio18";
486                         function = PMIC_GPIO_FUNC_FUNC2;
487                         power-source = <PM8994_GPIO_S4>;
488                         bias-disable;
489                 };
490         };
491 };
492
493 &pm8994_pon {
494         pwrkey {
495                 compatible = "qcom,pm8941-pwrkey";
496                 interrupts = <0 8 0 IRQ_TYPE_EDGE_BOTH>;
497                 debounce = <15625>;
498                 linux,code = <KEY_POWER>;
499         };
500
501         resin {
502                 compatible = "qcom,pm8941-resin";
503                 interrupts = <0 8 1 IRQ_TYPE_EDGE_BOTH>;
504                 debounce = <15625>;
505                 linux,code = <KEY_VOLUMEDOWN>;
506         };
507 };
508
509 &pmi8994_gpios {
510         pinctrl-0 = <&hd3ss460_pol &hd3ss460_amsel &hd3ss460_en>;
511         pinctrl-names = "default";
512
513         /*
514          * This device uses a TI HD3SS460 Type-C MUX
515          * As this device has no driver currently,
516          * the configuration for USB Face Up is set-up here.
517          *
518          * TODO: remove once a driver is available
519          * TODO: add VBUS GPIO 5
520          */
521         hd3ss460_pol: pol-low-state {
522                 pins = "gpio8";
523                 function = PMIC_GPIO_FUNC_NORMAL;
524                 qcom,drive-strength = <3>;
525                 bias-pull-down;
526         };
527
528         hd3ss460_amsel: amsel-high-state {
529                 pins = "gpio9";
530                 function = PMIC_GPIO_FUNC_NORMAL;
531                 qcom,drive-strength = <1>;
532                 bias-pull-up;
533         };
534
535         hd3ss460_en: en-high-state {
536                 pins = "gpio10";
537                 function = PMIC_GPIO_FUNC_NORMAL;
538                 qcom,drive-strength = <1>;
539                 bias-pull-up;
540         };
541 };
542
543 &pmi8994_spmi_regulators {
544         vdd_gfx: s2 {
545                 regulator-min-microvolt = <980000>;
546                 regulator-max-microvolt = <980000>;
547         };
548 };
549
550 &rpm_requests {
551         /* These values were taken from the original firmware ACPI tables */
552         pm8994_regulators: regulators-0 {
553                 compatible = "qcom,rpm-pm8994-regulators";
554
555                 vdd_s1-supply = <&vph_pwr>;
556                 vdd_s2-supply = <&vph_pwr>;
557                 vdd_s3-supply = <&vph_pwr>;
558                 vdd_s4-supply = <&vph_pwr>;
559                 vdd_s5-supply = <&vph_pwr>;
560                 vdd_s6-supply = <&vph_pwr>;
561                 vdd_s7-supply = <&vph_pwr>;
562                 vdd_s8-supply = <&vph_pwr>;
563                 vdd_s9-supply = <&vph_pwr>;
564                 vdd_s10-supply = <&vph_pwr>;
565                 vdd_s11-supply = <&vph_pwr>;
566                 vdd_s12-supply = <&vph_pwr>;
567                 vdd_l1-supply = <&vreg_s1b_1p0>;
568                 vdd_l2_l26_l28-supply = <&vreg_s3a_1p3>;
569                 vdd_l3_l11-supply = <&vreg_s3a_1p3>;
570                 vdd_l4_l27_l31-supply = <&vreg_s3a_1p3>;
571                 vdd_l5_l7-supply = <&vreg_s5a_2p15>;
572                 vdd_l6_l12_l32-supply = <&vreg_s5a_2p15>;
573                 vdd_l8_l16_l30-supply = <&vph_pwr>;
574                 vdd_l9_l10_l18_l22-supply = <&vph_pwr_bbyp>;
575                 vdd_l13_l19_l23_l24-supply = <&vph_pwr_bbyp>;
576                 vdd_l14_l15-supply = <&vreg_s5a_2p15>;
577                 vdd_l17_l29-supply = <&vph_pwr_bbyp>;
578                 vdd_l20_l21-supply = <&vph_pwr_bbyp>;
579                 vdd_l25-supply = <&vreg_s5a_2p15>;
580                 vdd_lvs1_2-supply = <&vreg_s4a_1p8>;
581
582                 /* S1, S2, S6 and S12 are managed by RPMPD */
583
584                 vreg_s3a_1p3: s3 {
585                         regulator-min-microvolt = <1300000>;
586                         regulator-max-microvolt = <1300000>;
587                         regulator-allow-set-load;
588                         regulator-system-load = <300000>;
589                 };
590
591                 vreg_s4a_1p8: s4 {
592                         regulator-min-microvolt = <1800000>;
593                         regulator-max-microvolt = <1800000>;
594                         regulator-allow-set-load;
595                         regulator-always-on;
596                         regulator-system-load = <325000>;
597                 };
598
599                 vreg_s5a_2p15: s5 {
600                         regulator-min-microvolt = <2150000>;
601                         regulator-max-microvolt = <2150000>;
602                         regulator-allow-set-load;
603                         regulator-system-load = <325000>;
604                 };
605
606                 vreg_s7a_1p0: s7 {
607                         regulator-min-microvolt = <1000000>;
608                         regulator-max-microvolt = <1000000>;
609                 };
610
611                 /*
612                  * S8 - SPMI-managed VDD_APC0
613                  * S9, S10 and S11 (the main one) - SPMI-managed VDD_APC1
614                  */
615
616                 vreg_l1a_1p0: l1 {
617                         regulator-min-microvolt = <1000000>;
618                         regulator-max-microvolt = <1000000>;
619                 };
620
621                 vreg_l2a_1p25: l2 {
622                         regulator-min-microvolt = <1250000>;
623                         regulator-max-microvolt = <1250000>;
624                         regulator-allow-set-load;
625                         regulator-system-load = <4160>;
626                 };
627
628                 vreg_l3a_1p2: l3 {
629                         regulator-min-microvolt = <1200000>;
630                         regulator-max-microvolt = <1200000>;
631                         regulator-always-on;
632                         regulator-allow-set-load;
633                         regulator-system-load = <80000>;
634                 };
635
636                 vreg_l4a_1p225: l4 {
637                         regulator-min-microvolt = <1225000>;
638                         regulator-max-microvolt = <1225000>;
639                 };
640
641                 /* L5 is inaccessible from RPM */
642
643                 vreg_l6a_1p8: l6 {
644                         regulator-min-microvolt = <1800000>;
645                         regulator-max-microvolt = <1800000>;
646                         regulator-allow-set-load;
647                         regulator-system-load = <1000>;
648                 };
649
650                 /* L7 is inaccessible from RPM */
651
652                 vreg_l8a_1p8: l8 {
653                         regulator-min-microvolt = <1800000>;
654                         regulator-max-microvolt = <1800000>;
655                 };
656
657                 vreg_l9a_1p8: l9 {
658                         regulator-min-microvolt = <1800000>;
659                         regulator-max-microvolt = <1800000>;
660                 };
661
662                 vreg_l10a_1p8: l10 {
663                         regulator-min-microvolt = <1800000>;
664                         regulator-max-microvolt = <1800000>;
665                 };
666
667                 vreg_l11a_1p2: l11 {
668                         regulator-min-microvolt = <1200000>;
669                         regulator-max-microvolt = <1200000>;
670                         regulator-always-on;
671                         regulator-allow-set-load;
672                         regulator-system-load = <35000>;
673                 };
674
675                 vreg_l12a_1p8: l12 {
676                         regulator-min-microvolt = <1800000>;
677                         regulator-max-microvolt = <1800000>;
678                         regulator-always-on;
679                         regulator-allow-set-load;
680                         regulator-system-load = <50000>;
681                 };
682
683                 vreg_l13a_2p95: l13 {
684                         regulator-min-microvolt = <1850000>;
685                         regulator-max-microvolt = <2950000>;
686                         regulator-always-on;
687                         regulator-allow-set-load;
688                         regulator-system-load = <22000>;
689                 };
690
691                 vreg_l14a_1p8: l14 {
692                         regulator-min-microvolt = <1800000>;
693                         regulator-max-microvolt = <1800000>;
694                         regulator-always-on;
695                         regulator-allow-set-load;
696                         regulator-system-load = <52000>;
697                 };
698
699                 vreg_l15a_1p8: l15 {
700                         regulator-min-microvolt = <1800000>;
701                         regulator-max-microvolt = <1800000>;
702                 };
703
704                 vreg_l16a_2p7: l16 {
705                         regulator-min-microvolt = <2700000>;
706                         regulator-max-microvolt = <2700000>;
707                 };
708
709                 vreg_l17a_2p7: l17 {
710                         regulator-min-microvolt = <2800000>;
711                         regulator-max-microvolt = <2800000>;
712                         regulator-always-on;
713                         regulator-allow-set-load;
714                         regulator-system-load = <300000>;
715                 };
716
717                 vreg_l18a_2p85: l18 {
718                         regulator-min-microvolt = <2850000>;
719                         regulator-max-microvolt = <2850000>;
720                         regulator-always-on;
721                         regulator-allow-set-load;
722                         regulator-system-load = <600000>;
723                 };
724
725                 vreg_l19a_3p3: l19 {
726                         regulator-min-microvolt = <3300000>;
727                         regulator-max-microvolt = <3300000>;
728                         regulator-always-on;
729                         regulator-allow-set-load;
730                         regulator-system-load = <500000>;
731                 };
732
733                 vreg_l20a_2p95: l20 {
734                         regulator-min-microvolt = <2950000>;
735                         regulator-max-microvolt = <2950000>;
736                         regulator-always-on;
737                         regulator-boot-on;
738                         regulator-allow-set-load;
739                         regulator-system-load = <570000>;
740                 };
741
742                 vreg_l21a_2p95: l21 {
743                         regulator-min-microvolt = <2950000>;
744                         regulator-max-microvolt = <2950000>;
745                         regulator-always-on;
746                         regulator-allow-set-load;
747                         regulator-system-load = <800000>;
748                 };
749
750                 vreg_l22a_3p0: l22 {
751                         regulator-min-microvolt = <3000000>;
752                         regulator-max-microvolt = <3000000>;
753                         regulator-always-on;
754                         regulator-allow-set-load;
755                         regulator-system-load = <150000>;
756                 };
757
758                 vreg_l23a_2p8: l23 {
759                         regulator-min-microvolt = <2850000>;
760                         regulator-max-microvolt = <2850000>;
761                         regulator-always-on;
762                         regulator-allow-set-load;
763                         regulator-system-load = <80000>;
764                 };
765
766                 vreg_l24a_3p075: l24 {
767                         regulator-min-microvolt = <3075000>;
768                         regulator-max-microvolt = <3150000>;
769                         regulator-allow-set-load;
770                         regulator-system-load = <5800>;
771                 };
772
773                 vreg_l25a_1p1: l25 {
774                         regulator-min-microvolt = <1150000>;
775                         regulator-max-microvolt = <1150000>;
776                         regulator-always-on;
777                         regulator-allow-set-load;
778                         regulator-system-load = <80000>;
779                 };
780
781                 vreg_l26a_1p0: l26 {
782                         regulator-min-microvolt = <1000000>;
783                         regulator-max-microvolt = <1000000>;
784                 };
785
786                 vreg_l27a_1p05: l27 {
787                         regulator-min-microvolt = <1000000>;
788                         regulator-max-microvolt = <1000000>;
789                         regulator-always-on;
790                         regulator-allow-set-load;
791                         regulator-system-load = <500000>;
792                 };
793
794                 vreg_l28a_1p0: l28 {
795                         regulator-min-microvolt = <1000000>;
796                         regulator-max-microvolt = <1000000>;
797                         regulator-always-on;
798                         regulator-allow-set-load;
799                         regulator-system-load = <26000>;
800                 };
801
802                 vreg_l29a_2p8: l29 {
803                         regulator-min-microvolt = <2850000>;
804                         regulator-max-microvolt = <2850000>;
805                         regulator-always-on;
806                         regulator-allow-set-load;
807                         regulator-system-load = <80000>;
808                 };
809
810                 vreg_l30a_1p8: l30 {
811                         regulator-min-microvolt = <1800000>;
812                         regulator-max-microvolt = <1800000>;
813                         regulator-always-on;
814                         regulator-allow-set-load;
815                         regulator-system-load = <2500>;
816                 };
817
818                 vreg_l31a_1p2: l31 {
819                         regulator-min-microvolt = <1200000>;
820                         regulator-max-microvolt = <1200000>;
821                         regulator-always-on;
822                         regulator-allow-set-load;
823                         regulator-system-load = <600000>;
824                 };
825
826                 vreg_l32a_1p8: l32 {
827                         regulator-min-microvolt = <1800000>;
828                         regulator-max-microvolt = <1800000>;
829                 };
830
831                 vreg_lvs1a_1p8: lvs1 { };
832
833                 vreg_lvs2a_1p8: lvs2 { };
834         };
835
836         pmi8994_regulators: regulators-1 {
837                 compatible = "qcom,rpm-pmi8994-regulators";
838
839                 vdd_s1-supply = <&vph_pwr>;
840                 vdd_bst_byp-supply = <&vph_pwr>;
841
842                 vreg_s1b_1p0: s1 {
843                         regulator-min-microvolt = <1025000>;
844                         regulator-max-microvolt = <1025000>;
845                 };
846
847                 /* S2 & S3 - VDD_GFX */
848
849                 vph_pwr_bbyp: boost-bypass {
850                         regulator-min-microvolt = <3300000>;
851                         regulator-max-microvolt = <3300000>;
852                 };
853         };
854 };
855
856 &sdhc1 {
857         status = "okay";
858
859         /*
860          * This device is shipped with HS400 capabable eMMCs
861          * However various brands have been used in various product batches,
862          * including a Samsung eMMC (BGND3R) which features a quirk with HS400.
863          * Set the speed to HS200 as a safety measure.
864          */
865         mmc-hs200-1_8v;
866 };
867
868 &sdhc2 {
869         status = "okay";
870
871         pinctrl-names = "default", "sleep";
872         pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
873         pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
874
875         vmmc-supply = <&vreg_l21a_2p95>;
876         vqmmc-supply = <&vreg_l13a_2p95>;
877
878         cd-gpios = <&pm8994_gpios 8 GPIO_ACTIVE_LOW>;
879 };
880
881 &tlmm {
882         grip_default: grip-default-state {
883                 pins = "gpio39";
884                 function = "gpio";
885                 drive-strength = <6>;
886                 bias-pull-down;
887         };
888
889         grip_sleep: grip-sleep-state {
890                 pins = "gpio39";
891                 function = "gpio";
892                 drive-strength = <2>;
893                 bias-pull-down;
894         };
895
896         hall_front_default: hall-front-default-state {
897                 pins = "gpio42";
898                 function = "gpio";
899                 drive-strength = <2>;
900                 bias-disable;
901         };
902
903         hall_back_default: hall-back-default-state {
904                 pins = "gpio75";
905                 function = "gpio";
906                 drive-strength = <2>;
907                 bias-disable;
908         };
909 };