1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2021, Raffaele Tranquillini <raffaele.tranquillini@gmail.com>
4 */
5
6/dts-v1/;
7
8#include "msm8996-xiaomi-common.dtsi"
9#include <dt-bindings/sound/qcom,q6afe.h>
10#include <dt-bindings/sound/qcom,q6asm.h>
11#include <dt-bindings/input/ti-drv260x.h>
12
13/ {
14	model = "Xiaomi Mi 5";
15	compatible = "xiaomi,gemini", "qcom,msm8996";
16	qcom,msm-id = <246 0x30001>;
17	qcom,pmic-id = <0x20009 0x2000a 0x00 0x00>;
18	qcom,board-id = <31 0>;
19
20	clocks {
21		divclk2_haptics: divclk2 {
22			compatible = "fixed-clock";
23			#clock-cells = <0>;
24			clock-frequency = <32768>;
25			clock-output-names = "divclk2";
26
27			pinctrl-names = "default";
28			pinctrl-0 = <&divclk2_pin_a>;
29		};
30	};
31};
32
33&adsp_pil {
34	firmware-name = "qcom/msm8996/gemini/adsp.mbn";
35};
36
37&blsp2_i2c3 {
38	haptics: drv2604@5a {
39		compatible = "ti,drv2604";
40		reg = <0x5a>;
41		enable-gpio = <&tlmm 93 0x00>;
42		mode = <DRV260X_LRA_MODE>;
43		library-sel = <DRV260X_LIB_LRA>;
44		pinctrl-names = "default","sleep";
45		pinctrl-0 = <&vibrator_default>;
46		pinctrl-1 = <&vibrator_sleep>;
47	};
48
49	lp5562@30 {
50		compatible = "ti,lp5562";
51		reg = <0x30>;
52		#address-cells = <1>;
53		#size-cells = <0>;
54		enable-gpio = <&pm8994_gpios 7 1>;
55		clock-mode = /bits/8 <2>;
56		label = "button-backlight";
57
58		led@0 {
59			reg = <0>;
60			chan-name = "button-backlight";
61			led-cur = /bits/ 8 <0x32>;
62			max-cur = /bits/ 8 <0xC8>;
63		};
64
65		led@1 {
66			reg = <0>;
67			chan-name = "button-backlight1";
68			led-cur = /bits/ 8 <0x32>;
69			max-cur = /bits/ 8 <0xC8>;
70		};
71	};
72};
73
74&blsp2_i2c6 {
75	synaptics@20 {
76		compatible = "syna,rmi4-i2c";
77		reg = <0x20>;
78		#address-cells = <1>;
79		#size-cells = <0>;
80		interrupt-parent = <&tlmm>;
81		interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
82		vdda-supply = <&vreg_l6a_1p8>;
83		vdd-supply = <&vdd_3v2_tp>;
84		reset-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
85
86		pinctrl-names = "default", "sleep";
87		pinctrl-0 = <&touchscreen_default>;
88		pinctrl-1 = <&touchscreen_sleep>;
89	};
90
91};
92
93&gpu {
94	zap-shader {
95		firmware-name = "qcom/msm8996/gemini/a530_zap.mbn";
96	};
97};
98
99&q6asmdai {
100	dai@0 {
101		reg = <0>;
102	};
103
104	dai@1 {
105		reg = <1>;
106	};
107
108	dai@2 {
109		reg = <2>;
110	};
111};
112
113&sound {
114	compatible = "qcom,apq8096-sndcard";
115	model = "gemini";
116	audio-routing =	"RX_BIAS", "MCLK",
117		"MM_DL1",  "MultiMedia1 Playback",
118		"MM_DL2",  "MultiMedia2 Playback",
119		"MultiMedia3 Capture", "MM_UL3";
120
121	mm1-dai-link {
122		link-name = "MultiMedia1";
123		cpu {
124			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
125		};
126	};
127
128	mm2-dai-link {
129		link-name = "MultiMedia2";
130		cpu {
131			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
132		};
133	};
134
135	mm3-dai-link {
136		link-name = "MultiMedia3";
137		cpu {
138			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
139		};
140	};
141
142	slim-dai-link {
143		link-name = "SLIM Playback";
144		cpu {
145			sound-dai = <&q6afedai SLIMBUS_6_RX>;
146		};
147
148		platform {
149			sound-dai = <&q6routing>;
150		};
151
152		codec {
153			sound-dai = <&wcd9335 6>;
154		};
155	};
156
157	slimcap-dai-link {
158		link-name = "SLIM Capture";
159		cpu {
160			sound-dai = <&q6afedai SLIMBUS_0_TX>;
161		};
162
163		platform {
164			sound-dai = <&q6routing>;
165		};
166
167		codec {
168			sound-dai = <&wcd9335 1>;
169		};
170	};
171};
172
173&venus {
174	firmware-name = "qcom/msm8996/gemini/venus.mbn";
175};
176
177&rpm_requests {
178	pm8994-regulators {
179		vreg_l17a_2p8: l17 {
180			regulator-name = "vreg_l17a_2p8";
181			regulator-min-microvolt = <2500000>;
182			regulator-max-microvolt = <2500000>;
183		};
184		vreg_l29a_2p7: l29 {
185			regulator-name = "vreg_l29a_2p7";
186			regulator-min-microvolt = <2800000>;
187			regulator-max-microvolt = <2800000>;
188		};
189	};
190};
191
192&pm8994_gpios {
193	gpio-line-names =
194		"NC",			/* GPIO_1  */
195		"VOL_UP_N",		/* GPIO_2  */
196		"SPKR_ID",		/* GPIO_3  */
197		"PWM_HAPTICS",		/* GPIO_4  */
198		"INFARED_DRV",		/* GPIO_5  */
199		"NC",			/* GPIO_6  */
200		"KEYPAD_LED_EN",	/* GPIO_7  */
201		"WL_EN",		/* GPIO_8  */
202		"3P3_ENABLE",		/* GPIO_9  */
203		"FP_ID",		/* GPIO_10 */
204		"NC",			/* GPIO_11 */
205		"NC",			/* GPIO_12 */
206		"NC",			/* GPIO_13 */
207		"NC",			/* GPIO_14 */
208		"DIVCLK1_CDC",		/* GPIO_15 */
209		"DIVCLK2_HAPTICS",	/* GPIO_16 */
210		"NC",			/* GPIO_17 */
211		"32KHz_CLK_IN",		/* GPIO_18 */
212		"BT_EN",		/* GPIO_19 */
213		"PMIC_SLB",		/* GPIO_20 */
214		"UIM_BATT_ALARM",	/* GPIO_21 */
215		"NC";			/* GPIO_22 */
216
217	divclk2_pin_a: divclk2 {
218		pins = "gpio16";
219		function = PMIC_GPIO_FUNC_FUNC2;
220		bias-disable;
221		power-source = <PM8994_GPIO_S4>;
222	};
223};
224
225&pm8994_mpps {
226	gpio-line-names =
227		"NC",			/* MPP_1 */
228		"CCI_TIMER1",		/* MPP_2 */
229		"PMIC_SLB",		/* MPP_3 */
230		"EXT_FET_WLED_PWR_EN_N",/* MPP_4 */
231		"NC",			/* MPP_5 */
232		"NC",			/* MPP_6 */
233		"NC",			/* MPP_7 */
234		"NC";			/* MPP_8 */
235};
236
237&pmi8994_gpios {
238	gpio-line-names =
239		"NC",			/* GPIO_1  */
240		"SPKR_PA_RST",		/* GPIO_2  */
241		"NC",			/* GPIO_3  */
242		"NC",			/* GPIO_4  */
243		"NC",			/* GPIO_5  */
244		"NC",			/* GPIO_6  */
245		"NC",			/* GPIO_7  */
246		"NC",			/* GPIO_8  */
247		"NC",			/* GPIO_9  */
248		"NC";			/* GPIO_10 */
249};
250
251&tlmm {
252	gpio-line-names =
253		"ESE_SPI_MOSI",		/* GPIO_0   */
254		"ESE_SPI_MISO",		/* GPIO_1   */
255		"ERR_INT_N",		/* GPIO_2   */
256		"ESE_SPI_CLK",		/* GPIO_3   */
257		"MSM_UART_TX",		/* GPIO_4   */
258		"MSM_UART_RX",		/* GPIO_5   */
259		"NFC_I2C_SDA",		/* GPIO_6   */
260		"NFC_I2C_SCL",		/* GPIO_7   */
261		"LCD0_RESET_N",		/* GPIO_8   */
262		"NFC_IRQ",		/* GPIO_9   */
263		"LCD_TE",		/* GPIO_10  */
264		"LCD_ID_DET1",		/* GPIO_11  */
265		"NFC_DISABLE",		/* GPIO_12  */
266		"CAM_MCLK0",		/* GPIO_13  */
267		"NC",			/* GPIO_14  */
268		"CAM_MCLK2",		/* GPIO_15  */
269		"ESE_PWR_REQ",		/* GPIO_16  */
270		"CCI_I2C_SDA0",		/* GPIO_17  */
271		"CCI_I2C_SCL0",		/* GPIO_18  */
272		"CCI_I2C_SDA1",		/* GPIO_19  */
273		"CCI_I2C_SCL1",		/* GPIO_20  */
274		"NFC_DWL_REQ",		/* GPIO_21  */
275		"CCI_TIMER1",		/* GPIO_22  */
276		"WEBCAM1_RESET_N",	/* GPIO_23  */
277		"ESE_IRQ",		/* GPIO_24  */
278		"NC",			/* GPIO_25  */
279		"WEBCAM1_STANDBY",	/* GPIO_26  */
280		"NC",			/* GPIO_27  */
281		"NC",			/* GPIO_28  */
282		"NC",			/* GPIO_29  */
283		"CAM1_RST_N",		/* GPIO_30  */
284		"NC",			/* GPIO_31  */
285		"NC",			/* GPIO_32  */
286		"NC",			/* GPIO_33  */
287		"FP_DOME_SW",		/* GPIO_34  */
288		"PCI_E0_RST_N",		/* GPIO_35  */
289		"PCI_E0_CLKREQ_N",	/* GPIO_36  */
290		"PCI_E0_WAKE",		/* GPIO_37  */
291		"FM_INT_N",		/* GPIO_38  */
292		"FM_RESET_N",		/* GPIO_39  */
293		"NC",			/* GPIO_40  */
294		"QCA_UART_TXD",		/* GPIO_41  */
295		"QCA_UART_RXD",		/* GPIO_42  */
296		"QCA_UART_CTS",		/* GPIO_43  */
297		"QCA_UART_RTS",		/* GPIO_44  */
298		"MAWC_UART_TX",		/* GPIO_45  */
299		"MAWC_UART_RX",		/* GPIO_46  */
300		"NC",			/* GPIO_47  */
301		"NC",			/* GPIO_48  */
302		"AUDIO_SWITCH_EN",	/* GPIO_49  */
303		"FP_SPI_RST",		/* GPIO_50  */
304		"TYPEC_I2C_SDA",	/* GPIO_51  */
305		"TYPEC_I2C_SCL",	/* GPIO_52  */
306		"CODEC_INT2_N",		/* GPIO_53  */
307		"CODEC_INT1_N",		/* GPIO_54  */
308		"APPS_I2C7_SDA",	/* GPIO_55  */
309		"APPS_I2C7_SCL",	/* GPIO_56  */
310		"FORCE_USB_BOOT",	/* GPIO_57  */
311		"SPKR_I2S_BCK",		/* GPIO_58  */
312		"SPKR_I2S_WS",		/* GPIO_59  */
313		"SPKR_I2S_DOUT",	/* GPIO_60  */
314		"SPKR_I2S_DIN",		/* GPIO_61  */
315		"ESE_RSTN",		/* GPIO_62  */
316		"TYPEC_INT",		/* GPIO_63  */
317		"CODEC_RESET_N",	/* GPIO_64  */
318		"PCM_CLK",		/* GPIO_65  */
319		"PCM_SYNC",		/* GPIO_66  */
320		"PCM_DIN",		/* GPIO_67  */
321		"PCM_DOUT",		/* GPIO_68  */
322		"HIFI_CLK",		/* GPIO_69  */
323		"SLIMBUS_CLK",		/* GPIO_70  */
324		"SLIMBUS_DATA0",	/* GPIO_71  */
325		"SLIMBUS_DATA1",	/* GPIO_72  */
326		"LDO_5V_IN_EN",		/* GPIO_73  */
327		"NC",			/* GPIO_74  */
328		"FM_I2S_CLK",		/* GPIO_75  */
329		"FM_I2S_SYNC",		/* GPIO_76  */
330		"FM_I2S_DATA",		/* GPIO_77  */
331		"FM_STATUS",		/* GPIO_78  */
332		"NC",			/* GPIO_79  */
333		"SENSOR_RESET_N",	/* GPIO_80  */
334		"FP_SPI_MOSI",		/* GPIO_81  */
335		"FP_SPI_MISO",		/* GPIO_82  */
336		"FP_SPI_CS_N",		/* GPIO_83  */
337		"FP_SPI_CLK",		/* GPIO_84  */
338		"NC",			/* GPIO_85  */
339		"CAM_VDD_1P05_EN",	/* GPIO_86  */
340		"MSM_TS_I2C_SDA",	/* GPIO_87  */
341		"MSM_TS_I2C_SCL",	/* GPIO_88  */
342		"TS_RESOUT_N",		/* GPIO_89  */
343		"ESE_SPI_CS_N",		/* GPIO_90  */
344		"NC",			/* GPIO_91  */
345		"NC",			/* GPIO_92  */
346		"HAPTICS_EN",		/* GPIO_93  */
347		"NC",			/* GPIO_94  */
348		"NC",			/* GPIO_95  */
349		"NC",			/* GPIO_96  */
350		"NC",			/* GPIO_97  */
351		"GRFC_1",		/* GPIO_98  */
352		"NC",			/* GPIO_99  */
353		"GRFC_3",		/* GPIO_100 */
354		"GRFC_4",		/* GPIO_101 */
355		"NC",			/* GPIO_102 */
356		"NC",			/* GPIO_103 */
357		"GRFC_7",		/* GPIO_104 */
358		"UIM2_DATA",		/* GPIO_105 */
359		"UIM2_CLK",		/* GPIO_106 */
360		"UIM2_RESET",		/* GPIO_107 */
361		"UIM2_PRESENT",		/* GPIO_108 */
362		"UIM1_DATA",		/* GPIO_109 */
363		"UIM1_CLK",		/* GPIO_110 */
364		"UIM1_RESET",		/* GPIO_111 */
365		"UIM1_PRESENT",		/* GPIO_112 */
366		"UIM_BATT_ALARM",	/* GPIO_113 */
367		"GRFC_8",		/* GPIO_114 */
368		"GRFC_9",		/* GPIO_115 */
369		"TX_GTR_THRES",		/* GPIO_116 */
370		"ACCEL_INT",		/* GPIO_117 */
371		"GYRO_INT",		/* GPIO_118 */
372		"COMPASS_INT",		/* GPIO_119 */
373		"PROXIMITY_INT_N",	/* GPIO_120 */
374		"FP_IRQ",		/* GPIO_121 */
375		"NC",			/* GPIO_122 */
376		"HALL_INTR2",		/* GPIO_123 */
377		"HALL_INTR1",		/* GPIO_124 */
378		"TS_INT_N",		/* GPIO_125 */
379		"NC",			/* GPIO_126 */
380		"GRFC_11",		/* GPIO_127 */
381		"NC",			/* GPIO_128 */
382		"EXT_GPS_LNA_EN",	/* GPIO_129 */
383		"NC",			/* GPIO_130 */
384		"NC",			/* GPIO_131 */
385		"NC",			/* GPIO_132 */
386		"GRFC_14",		/* GPIO_133 */
387		"GSM_TX2_PHASE_D",	/* GPIO_134 */
388		"NC",			/* GPIO_135 */
389		"NC",			/* GPIO_136 */
390		"RFFE3_DATA",		/* GPIO_137 */
391		"RFFE3_CLK",		/* GPIO_138 */
392		"NC",			/* GPIO_139 */
393		"NC",			/* GPIO_140 */
394		"RFFE5_DATA",		/* GPIO_141 */
395		"RFFE5_CLK",		/* GPIO_142 */
396		"NC",			/* GPIO_143 */
397		"COEX_UART_TX",		/* GPIO_144 */
398		"COEX_UART_RX",		/* GPIO_145 */
399		"RFFE2_DATA",		/* GPIO_146 */
400		"RFFE2_CLK",		/* GPIO_147 */
401		"RFFE1_DATA",		/* GPIO_148 */
402		"RFFE1_CLK";		/* GPIO_149 */
403
404	touchscreen_default: touchscreen_default {
405		pins = "gpio89", "gpio125";
406		function = "gpio";
407		drive-strength = <10>;
408		bias-pull-up;
409	};
410
411	touchscreen_sleep: touchscreen_sleep {
412		pins = "gpio89", "gpio125";
413		function = "gpio";
414		drive-strength = <2>;
415		bias-disable;
416	};
417
418	vibrator_default: vibrator_default {
419		pins = "gpio93";
420		function = "gpio";
421		drive-strength = <8>;
422		bias-pull-up;
423	};
424
425	vibrator_sleep: vibrator_sleep {
426		pins = "gpio93";
427		function = "gpio";
428		drive-strength = <2>;
429		bias-disable;
430	};
431};
432