1// SPDX-License-Identifier: GPL-2.0-only
2
3/dts-v1/;
4
5#include "msm8939-pm8916.dtsi"
6
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	model = "Samsung Galaxy A7 (2015)";
13	compatible = "samsung,a7", "qcom,msm8939";
14	chassis-type = "handset";
15
16	aliases {
17		mmc0 = &sdhc_1; /* SDC1 eMMC slot */
18		mmc1 = &sdhc_2; /* SDC2 SD card slot */
19		serial0 = &blsp_uart2;
20	};
21
22	chosen {
23		stdout-path = "serial0";
24	};
25
26	reserved-memory {
27		/* Additional memory used by Samsung firmware modifications */
28		tz-apps@85500000 {
29			reg = <0x0 0x85500000 0x0 0xb00000>;
30			no-map;
31		};
32	};
33
34	gpio-hall-sensor {
35		compatible = "gpio-keys";
36
37		pinctrl-0 = <&gpio_hall_sensor_default>;
38		pinctrl-names = "default";
39
40		label = "GPIO Hall Effect Sensor";
41
42		event-hall-sensor {
43			label = "Hall Effect Sensor";
44			gpios = <&tlmm 52 GPIO_ACTIVE_LOW>;
45			linux,input-type = <EV_SW>;
46			linux,code = <SW_LID>;
47			linux,can-disable;
48		};
49	};
50
51	gpio-keys {
52		compatible = "gpio-keys";
53
54		pinctrl-0 = <&gpio_keys_default>;
55		pinctrl-names = "default";
56
57		label = "GPIO Buttons";
58
59		button-volume-up {
60			label = "Volume Up";
61			gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
62			linux,code = <KEY_VOLUMEUP>;
63		};
64
65		button-home {
66			label = "Home";
67			gpios = <&tlmm 109 GPIO_ACTIVE_LOW>;
68			linux,code = <KEY_HOMEPAGE>;
69		};
70	};
71
72	i2c-fg {
73		compatible = "i2c-gpio";
74		sda-gpios = <&tlmm 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
75		scl-gpios = <&tlmm 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
76
77		pinctrl-0 = <&fg_i2c_default>;
78		pinctrl-names = "default";
79
80		#address-cells = <1>;
81		#size-cells = <0>;
82
83		battery@35 {
84			compatible = "richtek,rt5033-battery";
85			reg = <0x35>;
86
87			interrupt-parent = <&tlmm>;
88			interrupts = <121 IRQ_TYPE_EDGE_BOTH>;
89
90			pinctrl-0 = <&fg_alert_default>;
91			pinctrl-names = "default";
92		};
93	};
94
95	i2c-nfc {
96		compatible = "i2c-gpio";
97		sda-gpios = <&tlmm 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
98		scl-gpios = <&tlmm 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
99
100		pinctrl-0 = <&nfc_i2c_default>;
101		pinctrl-names = "default";
102
103		#address-cells = <1>;
104		#size-cells = <0>;
105
106		nfc@2b {
107			compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
108			reg = <0x2b>;
109
110			interrupt-parent = <&tlmm>;
111			interrupts = <21 IRQ_TYPE_EDGE_RISING>;
112
113			enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
114			firmware-gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>;
115
116			pinctrl-0 = <&nfc_default>;
117			pinctrl-names = "default";
118		};
119	};
120
121	i2c-sensor {
122		compatible = "i2c-gpio";
123		sda-gpios = <&tlmm 84 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
124		scl-gpios = <&tlmm 85 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
125
126		pinctrl-0 = <&sensor_i2c_default>;
127		pinctrl-names = "default";
128
129		#address-cells = <1>;
130		#size-cells = <0>;
131
132		accelerometer: accelerometer@10 {
133			compatible = "bosch,bmc150_accel";
134			reg = <0x10>;
135			interrupt-parent = <&tlmm>;
136			interrupts = <115 IRQ_TYPE_EDGE_RISING>;
137
138			vdd-supply = <&pm8916_l17>;
139			vddio-supply = <&pm8916_l5>;
140
141			pinctrl-0 = <&accel_int_default>;
142			pinctrl-names = "default";
143
144			mount-matrix = "-1", "0", "0",
145					"0", "-1", "0",
146					"0", "0", "1";
147		};
148
149		magnetometer@12 {
150			compatible = "bosch,bmc150_magn";
151			reg = <0x12>;
152
153			vdd-supply = <&pm8916_l17>;
154			vddio-supply = <&pm8916_l5>;
155		};
156	};
157
158	i2c-tkey {
159		compatible = "i2c-gpio";
160		sda-gpios = <&tlmm 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
161		scl-gpios = <&tlmm 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
162
163		pinctrl-0 = <&tkey_i2c_default>;
164		pinctrl-names = "default";
165
166		#address-cells = <1>;
167		#size-cells = <0>;
168
169		touchkey@20 {
170			/* Note: Actually an ABOV MCU that implements same interface */
171			compatible = "coreriver,tc360-touchkey";
172			reg = <0x20>;
173
174			interrupt-parent = <&tlmm>;
175			interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
176
177			vcc-supply = <&reg_touch_key>;
178			vdd-supply = <&reg_keyled>;
179			vddio-supply = <&pm8916_l6>;
180
181			linux,keycodes = <KEY_APPSELECT KEY_BACK>;
182
183			pinctrl-0 = <&tkey_default>;
184			pinctrl-names = "default";
185		};
186	};
187
188	pwm_vibrator: pwm-vibrator {
189		compatible = "clk-pwm";
190		#pwm-cells = <2>;
191
192		clocks = <&gcc GCC_GP2_CLK>;
193
194		pinctrl-0 = <&motor_pwm_default>;
195		pinctrl-names = "default";
196	};
197
198	reg_keyled: regulator-keyled {
199		compatible = "regulator-fixed";
200		regulator-name = "keyled";
201		regulator-min-microvolt = <3300000>;
202		regulator-max-microvolt = <3300000>;
203
204		/* NOTE: On some variants e.g. SM-A700FD it's GPIO 91 */
205		gpio = <&tlmm 100 GPIO_ACTIVE_HIGH>;
206		enable-active-high;
207
208		pinctrl-0 = <&tkey_led_en_default>;
209		pinctrl-names = "default";
210	};
211
212	reg_touch_key: regulator-touch-key {
213		compatible = "regulator-fixed";
214		regulator-name = "touch_key";
215		regulator-min-microvolt = <2800000>;
216		regulator-max-microvolt = <2800000>;
217
218		gpio = <&tlmm 56 GPIO_ACTIVE_HIGH>;
219		enable-active-high;
220
221		pinctrl-0 = <&tkey_en_default>;
222		pinctrl-names = "default";
223	};
224
225	reg_tsp_vdd: regulator-tsp-vdd {
226		compatible = "regulator-fixed";
227		regulator-name = "tsp_vdd";
228		regulator-min-microvolt = <1800000>;
229		regulator-max-microvolt = <1800000>;
230		vin-supply = <&pm8916_s4>;
231
232		gpio = <&tlmm 8 GPIO_ACTIVE_HIGH>;
233		enable-active-high;
234
235		pinctrl-0 = <&reg_tsp_io_en_default>;
236		pinctrl-names = "default";
237	};
238
239	reg_vdd_tsp: regulator-vdd-tsp {
240		compatible = "regulator-fixed";
241		regulator-name = "vdd_tsp";
242		regulator-min-microvolt = <3300000>;
243		regulator-max-microvolt = <3300000>;
244
245		gpio = <&tlmm 73 GPIO_ACTIVE_HIGH>;
246		enable-active-high;
247
248		pinctrl-0 = <&reg_tsp_en_default>;
249		pinctrl-names = "default";
250	};
251
252	reg_vibrator: regulator-vibrator {
253		compatible = "regulator-fixed";
254		regulator-name = "motor_en";
255		regulator-min-microvolt = <3000000>;
256		regulator-max-microvolt = <3000000>;
257
258		gpio = <&tlmm 86 GPIO_ACTIVE_HIGH>;
259		enable-active-high;
260
261		pinctrl-0 = <&motor_en_default>;
262		pinctrl-names = "default";
263	};
264
265	vibrator {
266		compatible = "pwm-vibrator";
267
268		pwms = <&pwm_vibrator 0 100000>;
269		pwm-names = "enable";
270
271		vcc-supply = <&reg_vibrator>;
272	};
273};
274
275&blsp_i2c1 {
276	status = "okay";
277
278	muic: extcon@25 {
279		compatible = "siliconmitus,sm5502-muic";
280		reg = <0x25>;
281
282		interrupt-parent = <&tlmm>;
283		interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
284
285		pinctrl-0 = <&muic_int_default>;
286		pinctrl-names = "default";
287	};
288};
289
290&blsp_i2c5 {
291	status = "okay";
292
293	touchscreen@24 {
294		compatible = "cypress,tt21000";
295
296		reg = <0x24>;
297		interrupt-parent = <&tlmm>;
298		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
299
300		vdd-supply = <&reg_vdd_tsp>;
301		vddio-supply = <&reg_tsp_vdd>;
302
303		pinctrl-0 = <&tsp_int_default>;
304		pinctrl-names = "default";
305	};
306};
307
308&blsp_uart2 {
309	status = "okay";
310};
311
312&pm8916_resin {
313	linux,code = <KEY_VOLUMEDOWN>;
314	status = "okay";
315};
316
317&pm8916_rpm_regulators {
318	pm8916_l17: l17 {
319		regulator-min-microvolt = <2850000>;
320		regulator-max-microvolt = <2850000>;
321	};
322};
323
324&sdhc_1 {
325	status = "okay";
326};
327
328&sdhc_2 {
329	pinctrl-0 = <&sdc2_default &sdc2_cd_default>;
330	pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>;
331	pinctrl-names = "default", "sleep";
332
333	cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
334
335	status = "okay";
336};
337
338&usb {
339	extcon = <&muic>, <&muic>;
340	status = "okay";
341};
342
343&usb_hs_phy {
344	extcon = <&muic>;
345};
346
347&wcnss {
348	status = "okay";
349};
350
351&wcnss_iris {
352	compatible = "qcom,wcn3660b";
353};
354
355&tlmm {
356	accel_int_default: accel-int-default-state {
357		pins = "gpio115";
358		function = "gpio";
359		drive-strength = <2>;
360		bias-disable;
361	};
362
363	fg_alert_default: fg-alert-default-state {
364		pins = "gpio121";
365		function = "gpio";
366		drive-strength = <2>;
367		bias-disable;
368	};
369
370	fg_i2c_default: fg-i2c-default-state {
371		pins = "gpio105", "gpio106";
372		function = "gpio";
373		drive-strength = <2>;
374		bias-disable;
375	};
376
377	gpio_hall_sensor_default: gpio-hall-sensor-default-state {
378		pins = "gpio52";
379		function = "gpio";
380		drive-strength = <2>;
381		bias-disable;
382	};
383
384	gpio_keys_default: gpio-keys-default-state {
385		pins = "gpio107", "gpio109";
386		function = "gpio";
387		drive-strength = <2>;
388		bias-pull-up;
389	};
390
391	motor_en_default: motor-en-default-state {
392		pins = "gpio86";
393		function = "gpio";
394		drive-strength = <2>;
395		bias-disable;
396	};
397
398	motor_pwm_default: motor-pwm-default-state {
399		pins = "gpio50";
400		function = "gcc_gp2_clk_a";
401	};
402
403	muic_int_default: muic-int-default-state {
404		pins = "gpio12";
405		function = "gpio";
406		drive-strength = <2>;
407		bias-disable;
408	};
409
410	nfc_default: nfc-default-state {
411		irq-pins {
412			pins = "gpio21";
413			function = "gpio";
414			drive-strength = <2>;
415			bias-pull-down;
416		};
417
418		nfc-pins {
419			pins = "gpio49", "gpio116";
420			function = "gpio";
421			drive-strength = <2>;
422			bias-disable;
423		};
424	};
425
426	nfc_i2c_default: nfc-i2c-default-state {
427		pins = "gpio0", "gpio1";
428		function = "gpio";
429		drive-strength = <2>;
430		bias-disable;
431	};
432
433	reg_tsp_en_default: reg-tsp-en-default-state {
434		pins = "gpio73";
435		function = "gpio";
436		drive-strength = <2>;
437		bias-disable;
438	};
439
440	reg_tsp_io_en_default: reg-tsp-io-en-default-state {
441		pins = "gpio8";
442		function = "gpio";
443		drive-strength = <2>;
444		bias-disable;
445	};
446
447	sdc2_cd_default: sdc2-cd-default-state {
448		pins = "gpio38";
449		function = "gpio";
450		drive-strength = <2>;
451		bias-disable;
452	};
453
454	sensor_i2c_default: sensor-i2c-default-state {
455		pins = "gpio84", "gpio85";
456		function = "gpio";
457		drive-strength = <2>;
458		bias-disable;
459	};
460
461	tkey_default: tkey-default-state {
462		pins = "gpio20";
463		function = "gpio";
464		drive-strength = <2>;
465		bias-disable;
466	};
467
468	tkey_en_default: tkey-en-default-state {
469		pins = "gpio56";
470		function = "gpio";
471		drive-strength = <2>;
472		bias-disable;
473	};
474
475	tkey_i2c_default: tkey-i2c-default-state {
476		pins = "gpio16", "gpio17";
477		function = "gpio";
478		drive-strength = <2>;
479		bias-disable;
480	};
481
482	tkey_led_en_default: tkey-led-en-default-state {
483		pins = "gpio100";
484		function = "gpio";
485		drive-strength = <2>;
486		bias-disable;
487	};
488
489	tsp_int_default: tsp-int-default-state {
490		pins = "gpio13";
491		function = "gpio";
492		drive-strength = <2>;
493		bias-disable;
494	};
495};
496