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