1// SPDX-License-Identifier: GPL-2.0-only
2
3#include "msm8916-pm8916.dtsi"
4#include <dt-bindings/gpio/gpio.h>
5#include <dt-bindings/input/input.h>
6#include <dt-bindings/interrupt-controller/irq.h>
7#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
8
9/ {
10	aliases {
11		serial0 = &blsp1_uart2;
12	};
13
14	chosen {
15		stdout-path = "serial0";
16	};
17
18	reserved-memory {
19		/* Additional memory used by Samsung firmware modifications */
20		tz-apps@85500000 {
21			reg = <0x0 0x85500000 0x0 0xb00000>;
22			no-map;
23		};
24	};
25
26	gpio-keys {
27		compatible = "gpio-keys";
28
29		pinctrl-names = "default";
30		pinctrl-0 = <&gpio_keys_default>;
31
32		label = "GPIO Buttons";
33
34		button-volume-up {
35			label = "Volume Up";
36			gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
37			linux,code = <KEY_VOLUMEUP>;
38		};
39
40		button-home {
41			label = "Home";
42			gpios = <&msmgpio 109 GPIO_ACTIVE_LOW>;
43			linux,code = <KEY_HOMEPAGE>;
44		};
45	};
46
47	gpio-hall-sensor {
48		compatible = "gpio-keys";
49
50		pinctrl-names = "default";
51		pinctrl-0 = <&gpio_hall_sensor_default>;
52
53		label = "GPIO Hall Effect Sensor";
54
55		event-hall-sensor {
56			label = "Hall Effect Sensor";
57			gpios = <&msmgpio 52 GPIO_ACTIVE_LOW>;
58			linux,input-type = <EV_SW>;
59			linux,code = <SW_LID>;
60			linux,can-disable;
61		};
62	};
63
64	reg_vdd_tsp: regulator-vdd-tsp {
65		compatible = "regulator-fixed";
66		regulator-name = "vdd_tsp";
67		regulator-min-microvolt = <3300000>;
68		regulator-max-microvolt = <3300000>;
69
70		gpio = <&msmgpio 73 GPIO_ACTIVE_HIGH>;
71		enable-active-high;
72
73		pinctrl-names = "default";
74		pinctrl-0 = <&tsp_en_default>;
75	};
76
77	i2c-muic {
78		compatible = "i2c-gpio";
79		sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
80		scl-gpios = <&msmgpio 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
81
82		pinctrl-names = "default";
83		pinctrl-0 = <&muic_i2c_default>;
84
85		#address-cells = <1>;
86		#size-cells = <0>;
87
88		muic: extcon@25 {
89			compatible = "siliconmitus,sm5502-muic";
90
91			reg = <0x25>;
92			interrupt-parent = <&msmgpio>;
93			interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
94
95			pinctrl-names = "default";
96			pinctrl-0 = <&muic_int_default>;
97		};
98	};
99
100	i2c-tkey {
101		compatible = "i2c-gpio";
102		sda-gpios = <&msmgpio 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
103		scl-gpios = <&msmgpio 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
104
105		pinctrl-names = "default";
106		pinctrl-0 = <&tkey_i2c_default>;
107
108		#address-cells = <1>;
109		#size-cells = <0>;
110
111		touchkey: touchkey@20 {
112			/* Note: Actually an ABOV MCU that implements same interface */
113			compatible = "coreriver,tc360-touchkey";
114			reg = <0x20>;
115
116			interrupt-parent = <&msmgpio>;
117			interrupts = <98 IRQ_TYPE_EDGE_FALLING>;
118
119			/* vcc/vdd-supply are board-specific */
120			vddio-supply = <&pm8916_l6>;
121
122			linux,keycodes = <KEY_APPSELECT KEY_BACK>;
123
124			pinctrl-names = "default";
125			pinctrl-0 = <&tkey_default>;
126		};
127	};
128
129	i2c-nfc {
130		compatible = "i2c-gpio";
131		sda-gpios = <&msmgpio 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
132		scl-gpios = <&msmgpio 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
133
134		pinctrl-names = "default";
135		pinctrl-0 = <&nfc_i2c_default>;
136
137		#address-cells = <1>;
138		#size-cells = <0>;
139
140		nfc@27 {
141			compatible = "samsung,s3fwrn5-i2c";
142			reg = <0x27>;
143
144			interrupt-parent = <&msmgpio>;
145			interrupts = <21 IRQ_TYPE_EDGE_RISING>;
146
147			en-gpios = <&msmgpio 20 GPIO_ACTIVE_HIGH>;
148			wake-gpios = <&msmgpio 49 GPIO_ACTIVE_HIGH>;
149
150			clocks = <&rpmcc RPM_SMD_BB_CLK2_PIN>;
151
152			pinctrl-names = "default";
153			pinctrl-0 = <&nfc_default &nfc_clk_req>;
154		};
155	};
156};
157
158&blsp_i2c2 {
159	status = "okay";
160
161	accelerometer: accelerometer@10 {
162		compatible = "bosch,bmc150_accel";
163		reg = <0x10>;
164		interrupt-parent = <&msmgpio>;
165		interrupts = <115 IRQ_TYPE_EDGE_RISING>;
166
167		vdd-supply = <&pm8916_l17>;
168		vddio-supply = <&pm8916_l5>;
169
170		pinctrl-names = "default";
171		pinctrl-0 = <&accel_int_default>;
172	};
173
174	magnetometer@12 {
175		compatible = "bosch,bmc150_magn";
176		reg = <0x12>;
177
178		vdd-supply = <&pm8916_l17>;
179		vddio-supply = <&pm8916_l5>;
180	};
181};
182
183&blsp_i2c4 {
184	status = "okay";
185
186	battery@35 {
187		compatible = "richtek,rt5033-battery";
188		reg = <0x35>;
189		interrupt-parent = <&msmgpio>;
190		interrupts = <121 IRQ_TYPE_EDGE_BOTH>;
191
192		pinctrl-names = "default";
193		pinctrl-0 = <&fg_alert_default>;
194	};
195};
196
197&blsp1_uart2 {
198	status = "okay";
199};
200
201&dsi0 {
202	pinctrl-names = "default", "sleep";
203	pinctrl-0 = <&mdss_default>;
204	pinctrl-1 = <&mdss_sleep>;
205};
206
207&mdss {
208	status = "okay";
209};
210
211&pm8916_resin {
212	status = "okay";
213	linux,code = <KEY_VOLUMEDOWN>;
214};
215
216&pronto {
217	status = "okay";
218};
219
220&sdhc_1 {
221	status = "okay";
222
223	pinctrl-names = "default", "sleep";
224	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
225	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
226};
227
228&sdhc_2 {
229	status = "okay";
230
231	pinctrl-names = "default", "sleep";
232	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
233	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
234
235	cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>;
236};
237
238&usb {
239	status = "okay";
240	extcon = <&muic>, <&muic>;
241};
242
243&usb_hs_phy {
244	extcon = <&muic>;
245};
246
247&smd_rpm_regulators {
248	vdd_l1_l2_l3-supply = <&pm8916_s3>;
249	vdd_l4_l5_l6-supply = <&pm8916_s4>;
250	vdd_l7-supply = <&pm8916_s4>;
251
252	s3 {
253		regulator-min-microvolt = <1200000>;
254		regulator-max-microvolt = <1300000>;
255	};
256
257	s4 {
258		regulator-min-microvolt = <1800000>;
259		regulator-max-microvolt = <2100000>;
260	};
261
262	l1 {
263		regulator-min-microvolt = <1225000>;
264		regulator-max-microvolt = <1225000>;
265	};
266
267	l2 {
268		regulator-min-microvolt = <1200000>;
269		regulator-max-microvolt = <1200000>;
270	};
271
272	l4 {
273		regulator-min-microvolt = <2050000>;
274		regulator-max-microvolt = <2050000>;
275	};
276
277	l5 {
278		regulator-min-microvolt = <1800000>;
279		regulator-max-microvolt = <1800000>;
280	};
281
282	l6 {
283		regulator-min-microvolt = <1800000>;
284		regulator-max-microvolt = <1800000>;
285	};
286
287	l7 {
288		regulator-min-microvolt = <1800000>;
289		regulator-max-microvolt = <1800000>;
290	};
291
292	l8 {
293		regulator-min-microvolt = <2850000>;
294		regulator-max-microvolt = <2900000>;
295	};
296
297	l9 {
298		regulator-min-microvolt = <3300000>;
299		regulator-max-microvolt = <3300000>;
300	};
301
302	l10 {
303		regulator-min-microvolt = <2700000>;
304		regulator-max-microvolt = <2800000>;
305	};
306
307	l11 {
308		regulator-min-microvolt = <1800000>;
309		regulator-max-microvolt = <2950000>;
310		regulator-allow-set-load;
311		regulator-system-load = <200000>;
312	};
313
314	l12 {
315		regulator-min-microvolt = <1800000>;
316		regulator-max-microvolt = <2950000>;
317	};
318
319	l13 {
320		regulator-min-microvolt = <3075000>;
321		regulator-max-microvolt = <3075000>;
322	};
323
324	l14 {
325		regulator-min-microvolt = <1800000>;
326		regulator-max-microvolt = <3300000>;
327	};
328
329	l15 {
330		regulator-min-microvolt = <1800000>;
331		regulator-max-microvolt = <3300000>;
332	};
333
334	l16 {
335		regulator-min-microvolt = <1800000>;
336		regulator-max-microvolt = <3300000>;
337	};
338
339	l17 {
340		regulator-min-microvolt = <2850000>;
341		regulator-max-microvolt = <2850000>;
342	};
343
344	l18 {
345		regulator-min-microvolt = <2700000>;
346		regulator-max-microvolt = <2700000>;
347	};
348};
349
350&msmgpio {
351	accel_int_default: accel-int-default {
352		pins = "gpio115";
353		function = "gpio";
354
355		drive-strength = <2>;
356		bias-disable;
357	};
358
359	fg_alert_default: fg-alert-default {
360		pins = "gpio121";
361		function = "gpio";
362
363		drive-strength = <2>;
364		bias-disable;
365	};
366
367	gpio_keys_default: gpio-keys-default {
368		pins = "gpio107", "gpio109";
369		function = "gpio";
370
371		drive-strength = <2>;
372		bias-pull-up;
373	};
374
375	gpio_hall_sensor_default: gpio-hall-sensor-default {
376		pins = "gpio52";
377		function = "gpio";
378
379		drive-strength = <2>;
380		bias-disable;
381	};
382
383	mdss {
384		mdss_default: mdss-default {
385			pins = "gpio25";
386			function = "gpio";
387
388			drive-strength = <8>;
389			bias-disable;
390		};
391		mdss_sleep: mdss-sleep {
392			pins = "gpio25";
393			function = "gpio";
394
395			drive-strength = <2>;
396			bias-pull-down;
397		};
398	};
399
400	muic_i2c_default: muic-i2c-default {
401		pins = "gpio105", "gpio106";
402		function = "gpio";
403
404		drive-strength = <2>;
405		bias-disable;
406	};
407
408	muic_int_default: muic-int-default {
409		pins = "gpio12";
410		function = "gpio";
411
412		drive-strength = <2>;
413		bias-disable;
414	};
415
416	nfc_default: nfc-default {
417		pins = "gpio20", "gpio49";
418		function = "gpio";
419
420		drive-strength = <2>;
421		bias-disable;
422
423		irq {
424			pins = "gpio21";
425			function = "gpio";
426
427			drive-strength = <2>;
428			bias-pull-down;
429		};
430	};
431
432	nfc_i2c_default: nfc-i2c-default {
433		pins = "gpio0", "gpio1";
434		function = "gpio";
435
436		drive-strength = <2>;
437		bias-disable;
438	};
439
440	tkey_default: tkey-default {
441		pins = "gpio98";
442		function = "gpio";
443
444		drive-strength = <2>;
445		bias-disable;
446	};
447
448	tkey_i2c_default: tkey-i2c-default {
449		pins = "gpio16", "gpio17";
450		function = "gpio";
451
452		drive-strength = <2>;
453		bias-disable;
454	};
455
456	tsp_en_default: tsp-en-default {
457		pins = "gpio73";
458		function = "gpio";
459
460		drive-strength = <2>;
461		bias-disable;
462	};
463
464	ts_int_default: ts-int-default {
465		pins = "gpio13";
466		function = "gpio";
467
468		drive-strength = <2>;
469		bias-disable;
470	};
471};
472
473&pm8916_gpios {
474	nfc_clk_req: nfc-clk-req-state {
475		pins = "gpio2";
476		function = "func1";
477
478		input-enable;
479		bias-disable;
480		power-source = <PM8916_GPIO_L2>;
481	};
482};
483