Merge tag 'write-page-prefaulting' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / arch / arm64 / boot / dts / qcom / msm8916-samsung-serranove.dts
1 // SPDX-License-Identifier: GPL-2.0-only
2 // Copyright (C) 2019 Stephan Gerhold
3
4 /dts-v1/;
5
6 #include "msm8916-pm8916.dtsi"
7 #include <dt-bindings/gpio/gpio.h>
8 #include <dt-bindings/input/input.h>
9 #include <dt-bindings/interrupt-controller/irq.h>
10
11 /*
12  * NOTE: The original firmware from Samsung can only boot ARM32 kernels.
13  * Unfortunately, the firmware is signed and cannot be replaced easily.
14  * There seems to be no way to boot ARM64 kernels on this device at the moment,
15  * even though the hardware would support it.
16  *
17  * However, it is possible to use this device tree by compiling an ARM32 kernel
18  * instead. For clarity and build testing this device tree is maintained next
19  * to the other MSM8916 device trees. However, it is actually used through
20  *   arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts
21  */
22
23 / {
24         model = "Samsung Galaxy S4 Mini Value Edition";
25         compatible = "samsung,serranove", "qcom,msm8916";
26         chassis-type = "handset";
27
28         aliases {
29                 serial0 = &blsp1_uart2;
30         };
31
32         chosen {
33                 stdout-path = "serial0";
34         };
35
36         reserved-memory {
37                 /* Additional memory used by Samsung firmware modifications */
38                 tz-apps@85500000 {
39                         reg = <0x0 0x85500000 0x0 0xb00000>;
40                         no-map;
41                 };
42         };
43
44         gpio-keys {
45                 compatible = "gpio-keys";
46
47                 pinctrl-names = "default";
48                 pinctrl-0 = <&gpio_keys_default>;
49
50                 label = "GPIO Buttons";
51
52                 volume-up {
53                         label = "Volume Up";
54                         gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
55                         linux,code = <KEY_VOLUMEUP>;
56                 };
57
58                 home {
59                         label = "Home";
60                         gpios = <&msmgpio 109 GPIO_ACTIVE_LOW>;
61                         linux,code = <KEY_HOMEPAGE>;
62                 };
63         };
64
65         gpio-hall-sensor {
66                 compatible = "gpio-keys";
67
68                 pinctrl-names = "default";
69                 pinctrl-0 = <&gpio_hall_sensor_default>;
70
71                 label = "GPIO Hall Effect Sensor";
72
73                 hall-sensor {
74                         label = "Hall Effect Sensor";
75                         gpios = <&msmgpio 52 GPIO_ACTIVE_LOW>;
76                         linux,input-type = <EV_SW>;
77                         linux,code = <SW_LID>;
78                         linux,can-disable;
79                 };
80         };
81
82         reg_vdd_tsp: regulator-vdd-tsp {
83                 compatible = "regulator-fixed";
84                 regulator-name = "vdd_tsp";
85                 regulator-min-microvolt = <3300000>;
86                 regulator-max-microvolt = <3300000>;
87
88                 gpio = <&msmgpio 73 GPIO_ACTIVE_HIGH>;
89                 enable-active-high;
90
91                 pinctrl-names = "default";
92                 pinctrl-0 = <&tsp_en_default>;
93         };
94
95         reg_touch_key: regulator-touch-key {
96                 compatible = "regulator-fixed";
97                 regulator-name = "touch_key";
98                 regulator-min-microvolt = <2800000>;
99                 regulator-max-microvolt = <2800000>;
100
101                 gpio = <&msmgpio 86 GPIO_ACTIVE_HIGH>;
102                 enable-active-high;
103
104                 pinctrl-names = "default";
105                 pinctrl-0 = <&tkey_en_default>;
106         };
107
108         reg_key_led: regulator-key-led {
109                 compatible = "regulator-fixed";
110                 regulator-name = "key_led";
111                 regulator-min-microvolt = <3300000>;
112                 regulator-max-microvolt = <3300000>;
113
114                 gpio = <&msmgpio 60 GPIO_ACTIVE_HIGH>;
115                 enable-active-high;
116
117                 pinctrl-names = "default";
118                 pinctrl-0 = <&tkey_led_en_default>;
119         };
120
121         i2c-muic {
122                 compatible = "i2c-gpio";
123                 sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
124                 scl-gpios = <&msmgpio 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
125
126                 pinctrl-names = "default";
127                 pinctrl-0 = <&muic_i2c_default>;
128
129                 #address-cells = <1>;
130                 #size-cells = <0>;
131
132                 muic: extcon@14 {
133                         compatible = "siliconmitus,sm5504-muic";
134                         reg = <0x14>;
135
136                         interrupt-parent = <&msmgpio>;
137                         interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
138
139                         pinctrl-names = "default";
140                         pinctrl-0 = <&muic_irq_default>;
141                 };
142         };
143
144         i2c-tkey {
145                 compatible = "i2c-gpio";
146                 sda-gpios = <&msmgpio 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
147                 scl-gpios = <&msmgpio 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
148
149                 pinctrl-names = "default";
150                 pinctrl-0 = <&tkey_i2c_default>;
151
152                 #address-cells = <1>;
153                 #size-cells = <0>;
154
155                 touchkey@20 {
156                         compatible = "coreriver,tc360-touchkey";
157                         reg = <0x20>;
158
159                         interrupt-parent = <&msmgpio>;
160                         interrupts = <98 IRQ_TYPE_EDGE_FALLING>;
161
162                         vcc-supply = <&reg_touch_key>;
163                         vdd-supply = <&reg_key_led>;
164                         vddio-supply = <&pm8916_l6>;
165
166                         linux,keycodes = <KEY_APPSELECT KEY_BACK>;
167
168                         pinctrl-names = "default";
169                         pinctrl-0 = <&tkey_default>;
170                 };
171         };
172
173         i2c-nfc {
174                 compatible = "i2c-gpio";
175                 sda-gpios = <&msmgpio 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
176                 scl-gpios = <&msmgpio 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
177
178                 pinctrl-names = "default";
179                 pinctrl-0 = <&nfc_i2c_default>;
180
181                 #address-cells = <1>;
182                 #size-cells = <0>;
183
184                 nfc@2b {
185                         compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
186                         reg = <0x2b>;
187
188                         interrupt-parent = <&msmgpio>;
189                         interrupts = <21 IRQ_TYPE_EDGE_RISING>;
190
191                         enable-gpios = <&msmgpio 20 GPIO_ACTIVE_HIGH>;
192                         firmware-gpios = <&msmgpio 49 GPIO_ACTIVE_HIGH>;
193
194                         pinctrl-names = "default";
195                         pinctrl-0 = <&nfc_default>;
196                 };
197         };
198 };
199
200 &blsp_i2c2 {
201         status = "okay";
202
203         imu@6b {
204                 compatible = "st,lsm6ds3";
205                 reg = <0x6b>;
206
207                 interrupt-parent = <&msmgpio>;
208                 interrupts = <115 IRQ_TYPE_EDGE_RISING>;
209
210                 pinctrl-names = "default";
211                 pinctrl-0 = <&imu_irq_default>;
212         };
213 };
214
215 &blsp_i2c4 {
216         status = "okay";
217
218         battery@35 {
219                 compatible = "richtek,rt5033-battery";
220                 reg = <0x35>;
221
222                 interrupt-parent = <&msmgpio>;
223                 interrupts = <121 IRQ_TYPE_EDGE_FALLING>;
224
225                 pinctrl-names = "default";
226                 pinctrl-0 = <&fg_alert_default>;
227         };
228 };
229
230 &blsp_i2c5 {
231         status = "okay";
232
233         touchscreen@20 {
234                 compatible = "zinitix,bt541";
235                 reg = <0x20>;
236
237                 interrupt-parent = <&msmgpio>;
238                 interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
239
240                 touchscreen-size-x = <540>;
241                 touchscreen-size-y = <960>;
242
243                 vdd-supply = <&reg_vdd_tsp>;
244                 vddo-supply = <&pm8916_l6>;
245
246                 pinctrl-names = "default";
247                 pinctrl-0 = <&tsp_irq_default>;
248         };
249 };
250
251 &blsp1_uart2 {
252         status = "okay";
253 };
254
255 &pm8916_resin {
256         status = "okay";
257         linux,code = <KEY_VOLUMEDOWN>;
258 };
259
260 &pm8916_vib {
261         status = "okay";
262 };
263
264 &pronto {
265         status = "okay";
266
267         iris {
268                 compatible = "qcom,wcn3660b";
269         };
270 };
271
272 &sdhc_1 {
273         status = "okay";
274
275         pinctrl-names = "default", "sleep";
276         pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
277         pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
278 };
279
280 &sdhc_2 {
281         status = "okay";
282
283         pinctrl-names = "default", "sleep";
284         pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
285         pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
286
287         non-removable;
288
289         /*
290          * FIXME: Disable UHS-I modes since tuning fails with:
291          *
292          * sdhci_msm 7864900.sdhci: mmc1: No tuning point found
293          * mmc1: tuning execution failed: -5
294          * mmc1: error -5 whilst initialising SD card
295          *
296          * This is the quirk used on downstream, which suggests this is
297          * a hardware limitation. However, probing a card using DDR50 works
298          * (without tuning), so maybe only tuning is broken?
299          */
300         no-1-8-v;
301 };
302
303 &usb {
304         status = "okay";
305         extcon = <&muic>, <&muic>;
306 };
307
308 &usb_hs_phy {
309         extcon = <&muic>;
310 };
311
312 &smd_rpm_regulators {
313         vdd_l1_l2_l3-supply = <&pm8916_s3>;
314         vdd_l4_l5_l6-supply = <&pm8916_s4>;
315         vdd_l7-supply = <&pm8916_s4>;
316
317         s3 {
318                 regulator-min-microvolt = <1200000>;
319                 regulator-max-microvolt = <1300000>;
320         };
321
322         s4 {
323                 regulator-min-microvolt = <1800000>;
324                 regulator-max-microvolt = <2100000>;
325         };
326
327         l1 {
328                 regulator-min-microvolt = <1225000>;
329                 regulator-max-microvolt = <1225000>;
330         };
331
332         l2 {
333                 regulator-min-microvolt = <1200000>;
334                 regulator-max-microvolt = <1200000>;
335         };
336
337         l4 {
338                 regulator-min-microvolt = <2050000>;
339                 regulator-max-microvolt = <2050000>;
340         };
341
342         l5 {
343                 regulator-min-microvolt = <1800000>;
344                 regulator-max-microvolt = <1800000>;
345         };
346
347         l6 {
348                 regulator-min-microvolt = <1800000>;
349                 regulator-max-microvolt = <1800000>;
350         };
351
352         l7 {
353                 regulator-min-microvolt = <1800000>;
354                 regulator-max-microvolt = <1800000>;
355         };
356
357         l8 {
358                 regulator-min-microvolt = <2850000>;
359                 regulator-max-microvolt = <2900000>;
360         };
361
362         l9 {
363                 regulator-min-microvolt = <3300000>;
364                 regulator-max-microvolt = <3300000>;
365         };
366
367         l10 {
368                 regulator-min-microvolt = <2700000>;
369                 regulator-max-microvolt = <2800000>;
370         };
371
372         l11 {
373                 regulator-min-microvolt = <1800000>;
374                 regulator-max-microvolt = <2950000>;
375                 regulator-allow-set-load;
376                 regulator-system-load = <200000>;
377         };
378
379         l12 {
380                 regulator-min-microvolt = <1800000>;
381                 regulator-max-microvolt = <2950000>;
382         };
383
384         l13 {
385                 regulator-min-microvolt = <3075000>;
386                 regulator-max-microvolt = <3075000>;
387         };
388
389         l14 {
390                 regulator-min-microvolt = <1800000>;
391                 regulator-max-microvolt = <3300000>;
392         };
393
394         l15 {
395                 regulator-min-microvolt = <1800000>;
396                 regulator-max-microvolt = <3300000>;
397         };
398
399         l16 {
400                 regulator-min-microvolt = <1800000>;
401                 regulator-max-microvolt = <3300000>;
402         };
403
404         l17 {
405                 regulator-min-microvolt = <2850000>;
406                 regulator-max-microvolt = <2850000>;
407         };
408
409         l18 {
410                 regulator-min-microvolt = <2700000>;
411                 regulator-max-microvolt = <2700000>;
412         };
413 };
414
415 &msmgpio {
416         fg_alert_default: fg-alert-default {
417                 pins = "gpio121";
418                 function = "gpio";
419
420                 drive-strength = <2>;
421                 bias-disable;
422         };
423
424         gpio_keys_default: gpio-keys-default {
425                 pins = "gpio107", "gpio109";
426                 function = "gpio";
427
428                 drive-strength = <2>;
429                 bias-pull-up;
430         };
431
432         gpio_hall_sensor_default: gpio-hall-sensor-default {
433                 pins = "gpio52";
434                 function = "gpio";
435
436                 drive-strength = <2>;
437                 bias-disable;
438         };
439
440         imu_irq_default: imu-irq-default {
441                 pins = "gpio115";
442                 function = "gpio";
443
444                 drive-strength = <2>;
445                 bias-disable;
446         };
447
448         muic_i2c_default: muic-i2c-default {
449                 pins = "gpio105", "gpio106";
450                 function = "gpio";
451
452                 drive-strength = <2>;
453                 bias-disable;
454         };
455
456         muic_irq_default: muic-irq-default {
457                 pins = "gpio12";
458                 function = "gpio";
459
460                 drive-strength = <2>;
461                 bias-disable;
462         };
463
464         nfc_default: nfc-default {
465                 pins = "gpio20", "gpio49";
466                 function = "gpio";
467
468                 drive-strength = <2>;
469                 bias-disable;
470
471                 irq {
472                         pins = "gpio21";
473                         function = "gpio";
474
475                         drive-strength = <2>;
476                         bias-pull-down;
477                 };
478         };
479
480         nfc_i2c_default: nfc-i2c-default {
481                 pins = "gpio0", "gpio1";
482                 function = "gpio";
483
484                 drive-strength = <2>;
485                 bias-disable;
486         };
487
488         tkey_default: tkey-default {
489                 pins = "gpio98";
490                 function = "gpio";
491
492                 drive-strength = <2>;
493                 bias-disable;
494         };
495
496         tkey_en_default: tkey-en-default {
497                 pins = "gpio86";
498                 function = "gpio";
499
500                 drive-strength = <2>;
501                 bias-disable;
502         };
503
504         tkey_i2c_default: tkey-i2c-default {
505                 pins = "gpio16", "gpio17";
506                 function = "gpio";
507
508                 drive-strength = <2>;
509                 bias-disable;
510         };
511
512         tkey_led_en_default: tkey-led-en-default {
513                 pins = "gpio60";
514                 function = "gpio";
515
516                 drive-strength = <2>;
517                 bias-disable;
518         };
519
520         tsp_en_default: tsp-en-default {
521                 pins = "gpio73";
522                 function = "gpio";
523
524                 drive-strength = <2>;
525                 bias-disable;
526         };
527
528         tsp_irq_default: tsp-irq-default {
529                 pins = "gpio13";
530                 function = "gpio";
531
532                 drive-strength = <2>;
533                 bias-disable;
534         };
535 };