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