1// SPDX-License-Identifier: GPL-2.0
2#include "qcom-msm8974pro.dtsi"
3#include "pm8841.dtsi"
4#include "pm8941.dtsi"
5#include <dt-bindings/input/input.h>
6#include <dt-bindings/leds/common.h>
7#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
8
9/ {
10	model = "Fairphone 2";
11	compatible = "fairphone,fp2", "qcom,msm8974pro", "qcom,msm8974";
12	chassis-type = "handset";
13
14	aliases {
15		mmc0 = &sdhc_1;
16		mmc1 = &sdhc_2;
17		serial0 = &blsp1_uart2;
18	};
19
20	chosen {
21		stdout-path = "serial0:115200n8";
22	};
23
24	gpio-keys {
25		compatible = "gpio-keys";
26
27		pinctrl-names = "default";
28		pinctrl-0 = <&gpio_keys_pin_a>;
29
30		key-camera-snapshot {
31			label = "camera_snapshot";
32			gpios = <&pm8941_gpios 1 GPIO_ACTIVE_LOW>;
33			linux,code = <KEY_CAMERA>;
34			wakeup-source;
35			debounce-interval = <15>;
36		};
37
38		key-volume-down {
39			label = "volume_down";
40			gpios = <&pm8941_gpios 2 GPIO_ACTIVE_LOW>;
41			linux,code = <KEY_VOLUMEDOWN>;
42			wakeup-source;
43			debounce-interval = <15>;
44		};
45
46		key-volume-up {
47			label = "volume_up";
48			gpios = <&pm8941_gpios 5 GPIO_ACTIVE_LOW>;
49			linux,code = <KEY_VOLUMEUP>;
50			wakeup-source;
51			debounce-interval = <15>;
52		};
53	};
54
55	vibrator {
56		compatible = "gpio-vibrator";
57		enable-gpios = <&tlmm 86 GPIO_ACTIVE_HIGH>;
58		vcc-supply = <&pm8941_l18>;
59	};
60
61	vreg_boost: vreg-boost {
62		compatible = "regulator-fixed";
63
64		regulator-name = "vreg-boost";
65		regulator-min-microvolt = <3150000>;
66		regulator-max-microvolt = <3150000>;
67
68		regulator-always-on;
69		regulator-boot-on;
70
71		gpio = <&pm8941_gpios 21 GPIO_ACTIVE_HIGH>;
72		enable-active-high;
73
74		pinctrl-names = "default";
75		pinctrl-0 = <&boost_bypass_n_pin>;
76	};
77
78	vreg_vph_pwr: vreg-vph-pwr {
79		compatible = "regulator-fixed";
80		regulator-name = "vph-pwr";
81
82		regulator-min-microvolt = <3600000>;
83		regulator-max-microvolt = <3600000>;
84
85		regulator-always-on;
86	};
87};
88
89&blsp1_i2c2 {
90	status = "okay";
91
92	touchscreen@41 {
93		compatible = "ilitek,ili2120";
94		reg = <0x41>;
95		interrupt-parent = <&tlmm>;
96		interrupts = <28 IRQ_TYPE_EDGE_FALLING>;
97		reset-gpios = <&tlmm 55 GPIO_ACTIVE_LOW>;
98
99		touchscreen-size-x = <1080>;
100		touchscreen-size-y = <1920>;
101	};
102};
103
104&blsp1_uart2 {
105	status = "okay";
106};
107
108&imem {
109	reboot-mode {
110		mode-normal = <0x77665501>;
111		mode-bootloader = <0x77665500>;
112		mode-recovery = <0x77665502>;
113	};
114};
115
116&pm8941_gpios {
117	gpio_keys_pin_a: gpio-keys-active-state {
118		pins = "gpio1", "gpio2", "gpio5";
119		function = "normal";
120
121		bias-pull-up;
122		power-source = <PM8941_GPIO_S3>;
123	};
124};
125
126&pm8941_lpg {
127	status = "okay";
128
129	qcom,power-source = <1>;
130
131	multi-led {
132		color = <LED_COLOR_ID_RGB>;
133		function = LED_FUNCTION_STATUS;
134
135		#address-cells = <1>;
136		#size-cells = <0>;
137
138		led@7 {
139			reg = <7>;
140			color = <LED_COLOR_ID_RED>;
141		};
142
143		led@6 {
144			reg = <6>;
145			color = <LED_COLOR_ID_GREEN>;
146		};
147
148		led@5 {
149			reg = <5>;
150			color = <LED_COLOR_ID_BLUE>;
151		};
152	};
153};
154
155&pronto {
156	status = "okay";
157
158	vddmx-supply = <&pm8841_s1>;
159	vddcx-supply = <&pm8841_s2>;
160	vddpx-supply = <&pm8941_s3>;
161
162	pinctrl-names = "default";
163	pinctrl-0 = <&wcnss_pin_a>;
164
165	iris {
166		vddxo-supply = <&pm8941_l6>;
167		vddrfa-supply = <&pm8941_l11>;
168		vddpa-supply = <&pm8941_l19>;
169		vdddig-supply = <&pm8941_s3>;
170	};
171
172	smd-edge {
173		qcom,remote-pid = <4>;
174		label = "pronto";
175
176		wcnss {
177			status = "okay";
178		};
179	};
180};
181
182&remoteproc_adsp {
183	status = "okay";
184	cx-supply = <&pm8841_s2>;
185};
186
187&remoteproc_mss {
188	status = "okay";
189	cx-supply = <&pm8841_s2>;
190	mss-supply = <&pm8841_s3>;
191	mx-supply = <&pm8841_s1>;
192	pll-supply = <&pm8941_l12>;
193};
194
195&rpm_requests {
196	regulators-0 {
197		compatible = "qcom,rpm-pm8841-regulators";
198
199		pm8841_s1: s1 {
200			regulator-min-microvolt = <675000>;
201			regulator-max-microvolt = <1050000>;
202		};
203
204		pm8841_s2: s2 {
205			regulator-min-microvolt = <500000>;
206			regulator-max-microvolt = <1050000>;
207		};
208
209		pm8841_s3: s3 {
210			regulator-min-microvolt = <1050000>;
211			regulator-max-microvolt = <1050000>;
212		};
213	};
214
215	regulators-1 {
216		compatible = "qcom,rpm-pm8941-regulators";
217
218		vdd_l1_l3-supply = <&pm8941_s1>;
219		vdd_l2_lvs1_2_3-supply = <&pm8941_s3>;
220		vdd_l4_l11-supply = <&pm8941_s1>;
221		vdd_l5_l7-supply = <&pm8941_s2>;
222		vdd_l6_l12_l14_l15-supply = <&pm8941_s2>;
223		vdd_l9_l10_l17_l22-supply = <&vreg_boost>;
224		vdd_l13_l20_l23_l24-supply = <&vreg_boost>;
225		vdd_l21-supply = <&vreg_boost>;
226
227		pm8941_s1: s1 {
228			regulator-min-microvolt = <1300000>;
229			regulator-max-microvolt = <1300000>;
230			regulator-always-on;
231			regulator-boot-on;
232		};
233
234		pm8941_s2: s2 {
235			regulator-min-microvolt = <2150000>;
236			regulator-max-microvolt = <2150000>;
237			regulator-boot-on;
238		};
239
240		pm8941_s3: s3 {
241			regulator-min-microvolt = <1800000>;
242			regulator-max-microvolt = <1800000>;
243			regulator-always-on;
244			regulator-boot-on;
245		};
246
247		pm8941_l1: l1 {
248			regulator-min-microvolt = <1225000>;
249			regulator-max-microvolt = <1225000>;
250			regulator-always-on;
251			regulator-boot-on;
252		};
253
254		pm8941_l2: l2 {
255			regulator-min-microvolt = <1200000>;
256			regulator-max-microvolt = <1200000>;
257		};
258
259		pm8941_l3: l3 {
260			regulator-min-microvolt = <1225000>;
261			regulator-max-microvolt = <1225000>;
262		};
263
264		pm8941_l4: l4 {
265			regulator-min-microvolt = <1225000>;
266			regulator-max-microvolt = <1225000>;
267		};
268
269		pm8941_l5: l5 {
270			regulator-min-microvolt = <1800000>;
271			regulator-max-microvolt = <1800000>;
272		};
273
274		pm8941_l6: l6 {
275			regulator-min-microvolt = <1800000>;
276			regulator-max-microvolt = <1800000>;
277			regulator-boot-on;
278		};
279
280		pm8941_l7: l7 {
281			regulator-min-microvolt = <1800000>;
282			regulator-max-microvolt = <1800000>;
283			regulator-boot-on;
284		};
285
286		pm8941_l8: l8 {
287			regulator-min-microvolt = <1800000>;
288			regulator-max-microvolt = <1800000>;
289		};
290
291		pm8941_l9: l9 {
292			regulator-min-microvolt = <1800000>;
293			regulator-max-microvolt = <2950000>;
294		};
295
296		pm8941_l10: l10 {
297			regulator-min-microvolt = <1800000>;
298			regulator-max-microvolt = <2950000>;
299		};
300
301		pm8941_l11: l11 {
302			regulator-min-microvolt = <1225000>;
303			regulator-max-microvolt = <1350000>;
304		};
305
306		pm8941_l12: l12 {
307			regulator-min-microvolt = <1800000>;
308			regulator-max-microvolt = <1800000>;
309			regulator-always-on;
310			regulator-boot-on;
311		};
312
313		pm8941_l13: l13 {
314			regulator-min-microvolt = <1800000>;
315			regulator-max-microvolt = <2950000>;
316			regulator-boot-on;
317		};
318
319		pm8941_l14: l14 {
320			regulator-min-microvolt = <1800000>;
321			regulator-max-microvolt = <1800000>;
322		};
323
324		pm8941_l15: l15 {
325			regulator-min-microvolt = <2050000>;
326			regulator-max-microvolt = <2050000>;
327		};
328
329		pm8941_l16: l16 {
330			regulator-min-microvolt = <2700000>;
331			regulator-max-microvolt = <2700000>;
332		};
333
334		pm8941_l17: l17 {
335			regulator-min-microvolt = <2850000>;
336			regulator-max-microvolt = <2850000>;
337		};
338
339		pm8941_l18: l18 {
340			regulator-min-microvolt = <2850000>;
341			regulator-max-microvolt = <2850000>;
342		};
343
344		pm8941_l19: l19 {
345			regulator-min-microvolt = <2900000>;
346			regulator-max-microvolt = <3350000>;
347		};
348
349		pm8941_l20: l20 {
350			regulator-min-microvolt = <2950000>;
351			regulator-max-microvolt = <2950000>;
352			regulator-system-load = <200000>;
353			regulator-allow-set-load;
354			regulator-boot-on;
355		};
356
357		pm8941_l21: l21 {
358			regulator-min-microvolt = <2950000>;
359			regulator-max-microvolt = <2950000>;
360			regulator-boot-on;
361		};
362
363		pm8941_l22: l22 {
364			regulator-min-microvolt = <3000000>;
365			regulator-max-microvolt = <3300000>;
366		};
367
368		pm8941_l23: l23 {
369			regulator-min-microvolt = <3000000>;
370			regulator-max-microvolt = <3000000>;
371		};
372
373		pm8941_l24: l24 {
374			regulator-min-microvolt = <3075000>;
375			regulator-max-microvolt = <3075000>;
376			regulator-boot-on;
377		};
378	};
379};
380
381&sdhc_1 {
382	status = "okay";
383
384	vmmc-supply = <&pm8941_l20>;
385	vqmmc-supply = <&pm8941_s3>;
386
387	pinctrl-names = "default", "sleep";
388	pinctrl-0 = <&sdc1_on>;
389	pinctrl-1 = <&sdc1_off>;
390};
391
392&sdhc_2 {
393	status = "okay";
394
395	vmmc-supply = <&pm8941_l21>;
396	vqmmc-supply = <&pm8941_l13>;
397
398	pinctrl-names = "default", "sleep";
399	pinctrl-0 = <&sdc2_on>;
400	pinctrl-1 = <&sdc2_off>;
401};
402
403&smbb {
404	usb-charge-current-limit = <1500000>;
405	qcom,fast-charge-safe-current = <1500000>;
406	qcom,fast-charge-current-limit = <1500000>;
407	qcom,fast-charge-safe-voltage = <4380000>;
408	qcom,fast-charge-high-threshold-voltage = <4350000>;
409	qcom,auto-recharge-threshold-voltage = <4240000>;
410	qcom,minimum-input-voltage = <4450000>;
411
412	status = "okay";
413};
414
415&tlmm {
416	sdc1_on: sdc1-on-state {
417		clk-pins {
418			pins = "sdc1_clk";
419			drive-strength = <16>;
420			bias-disable;
421		};
422
423		cmd-data-pins {
424			pins = "sdc1_cmd", "sdc1_data";
425			drive-strength = <10>;
426			bias-pull-up;
427		};
428	};
429
430	sdc2_on: sdc2-on-state {
431		clk-pins {
432			pins = "sdc2_clk";
433			drive-strength = <10>;
434			bias-disable;
435		};
436
437		cmd-data-pins {
438			pins = "sdc2_cmd", "sdc2_data";
439			drive-strength = <6>;
440			bias-pull-up;
441		};
442	};
443
444	wcnss_pin_a: wcnss-pin-active-state {
445		wlan-pins {
446			pins = "gpio36", "gpio37", "gpio38", "gpio39", "gpio40";
447			function = "wlan";
448
449			drive-strength = <6>;
450			bias-pull-down;
451		};
452
453		bt-pins {
454			pins = "gpio35", "gpio43", "gpio44";
455			function = "bt";
456
457			drive-strength = <2>;
458			bias-pull-down;
459		};
460
461		fm-pins {
462			pins = "gpio41", "gpio42";
463			function = "fm";
464
465			drive-strength = <2>;
466			bias-pull-down;
467		};
468	};
469};
470
471&usb {
472	status = "okay";
473
474	phys = <&usb_hs1_phy>;
475	phy-select = <&tcsr 0xb000 0>;
476	extcon = <&smbb>, <&usb_id>;
477	vbus-supply = <&chg_otg>;
478
479	hnp-disable;
480	srp-disable;
481	adp-disable;
482};
483
484&usb_hs1_phy {
485	status = "okay";
486
487	v1p8-supply = <&pm8941_l6>;
488	v3p3-supply = <&pm8941_l24>;
489
490	extcon = <&smbb>;
491	qcom,init-seq = /bits/ 8 <0x1 0x64>;
492};
493