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 button-volume-up {
53 label = "Volume Up";
54 gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
55 linux,code = <KEY_VOLUMEUP>;
56 };
57
58 button-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 event-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 = <®_touch_key>;
163 vdd-supply = <®_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 = <®_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 };
Cache object: 4bd508e431994eeb57e08dea71f031ce
|