1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2022, Danila Tikhonov <JIaxyga@protonmail.com>
4 * Copyright (c) 2022, Anton Bambura <jenneron@protonmail.com>
5 */
6/dts-v1/;
7
8#include "msm8953.dtsi"
9#include "pm8953.dtsi"
10#include "pmi8950.dtsi"
11#include <dt-bindings/leds/common.h>
12
13/delete-node/ &adsp_fw_mem;
14/delete-node/ &qseecom_mem;
15/delete-node/ &wcnss_fw_mem;
16
17/ {
18	model = "Xiaomi Mi A1";
19	compatible = "xiaomi,tissot", "qcom,msm8953";
20	chassis-type = "handset";
21	qcom,msm-id = <293 0>;
22	qcom,board-id = <0x1000b 0x00>;
23
24	gpio-keys {
25		compatible = "gpio-keys";
26
27		pinctrl-names = "default";
28		pinctrl-0 = <&gpio_key_default>, <&gpio_hall_sensor_default>;
29
30		event-hall-sensor {
31			label = "Hall Effect Sensor";
32			gpios = <&tlmm 44 GPIO_ACTIVE_LOW>;
33			linux,input-type = <EV_SW>;
34			linux,code = <SW_LID>;
35			linux,can-disable;
36		};
37
38		key-volume-up {
39			label = "Volume Up";
40			gpios = <&tlmm 85 GPIO_ACTIVE_LOW>;
41			linux,code = <KEY_VOLUMEUP>;
42		};
43	};
44
45	reserved-memory {
46		qseecom_mem: qseecom@84a00000 {
47			reg = <0x0 0x84a00000 0x0 0x1900000>;
48			no-map;
49		};
50
51		adsp_fw_mem: adsp@8d600000 {
52			reg = <0x0 0x8d600000 0x0 0x1200000>;
53			no-map;
54		};
55
56		wcnss_fw_mem: wcnss@8e800000 {
57			reg = <0x0 0x8e800000 0x0 0x700000>;
58			no-map;
59		};
60
61		ramoops@9ff00000 {
62			compatible = "ramoops";
63			reg = <0x0 0x9ff00000 0x0 0x00100000>;
64			record-size = <0x1000>;
65			console-size = <0x80000>;
66			ftrace-size = <0x1000>;
67			pmsg-size = <0x8000>;
68		};
69	};
70
71	vph_pwr: vph-pwr-regulator {
72		compatible = "regulator-fixed";
73		regulator-name = "vph_pwr";
74		regulator-always-on;
75		regulator-boot-on;
76	};
77};
78
79&hsusb_phy {
80	vdd-supply = <&pm8953_l3>;
81	vdda-pll-supply = <&pm8953_l7>;
82	vdda-phy-dpdm-supply = <&pm8953_l13>;
83
84	status = "okay";
85};
86
87&i2c_2 {
88	status = "okay";
89
90	max98927_codec: audio-codec@3a {
91		compatible = "maxim,max98927";
92		reg = <0x3a>;
93
94		reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;
95
96		vmon-slot-no = <1>;
97		imon-slot-no = <1>;
98
99		#sound-dai-cells = <1>;
100	};
101
102	led-controller@45 {
103		compatible = "awinic,aw2013";
104		reg = <0x45>;
105
106		vcc-supply = <&pm8953_l10>;
107
108		#address-cells = <1>;
109		#size-cells = <0>;
110
111		led@0 {
112			reg = <0>;
113			led-max-microamp = <5000>;
114			function = LED_FUNCTION_INDICATOR;
115			color = <LED_COLOR_ID_WHITE>;
116		};
117	};
118};
119
120&i2c_3 {
121	status = "okay";
122
123	touchscreen@38 {
124		compatible = "edt,edt-ft5406";
125		reg = <0x38>;
126
127		interrupt-parent = <&tlmm>;
128		interrupts = <65 IRQ_TYPE_EDGE_FALLING>;
129
130		pinctrl-names = "default";
131		pinctrl-0 = <&ts_int_default>;
132
133		reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
134
135		vcc-supply = <&pm8953_l10>;
136
137		touchscreen-size-x = <1080>;
138		touchscreen-size-y = <1920>;
139	};
140};
141
142&pm8953_resin {
143	linux,code = <KEY_VOLUMEDOWN>;
144	status = "okay";
145};
146
147&pmi8950_wled {
148	qcom,num-strings = <2>;
149	qcom,external-pfet;
150	qcom,cabc;
151
152	status = "okay";
153};
154
155&rpm_requests {
156	regulators {
157		compatible = "qcom,rpm-pm8953-regulators";
158
159		vdd_s1-supply = <&vph_pwr>;
160		vdd_s2-supply = <&vph_pwr>;
161		vdd_s3-supply = <&vph_pwr>;
162		vdd_s4-supply = <&vph_pwr>;
163		vdd_s5-supply = <&vph_pwr>;
164		vdd_s6-supply = <&vph_pwr>;
165		vdd_s7-supply = <&vph_pwr>;
166		vdd_l1-supply = <&pm8953_s3>;
167		vdd_l2_l3-supply = <&pm8953_s3>;
168		vdd_l4_l5_l6_l7_l16_l19-supply = <&pm8953_s4>;
169		vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
170		vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;
171
172		pm8953_s1: s1 {
173			regulator-min-microvolt = <870000>;
174			regulator-max-microvolt = <1156000>;
175		};
176
177		pm8953_s3: s3 {
178			regulator-min-microvolt = <1224000>;
179			regulator-max-microvolt = <1224000>;
180		};
181
182		pm8953_s4: s4 {
183			regulator-min-microvolt = <1900000>;
184			regulator-max-microvolt = <2050000>;
185		};
186
187		pm8953_l1: l1 {
188			regulator-min-microvolt = <1000000>;
189			regulator-max-microvolt = <1000000>;
190		};
191
192		pm8953_l2: l2 {
193			regulator-min-microvolt = <1200000>;
194			regulator-max-microvolt = <1225000>;
195		};
196
197		pm8953_l3: l3 {
198			regulator-min-microvolt = <925000>;
199			regulator-max-microvolt = <925000>;
200		};
201
202		pm8953_l5: l5 {
203			regulator-min-microvolt = <1800000>;
204			regulator-max-microvolt = <1800000>;
205		};
206
207		pm8953_l6: l6 {
208			regulator-min-microvolt = <1800000>;
209			regulator-max-microvolt = <1800000>;
210		};
211
212		pm8953_l7: l7 {
213			regulator-min-microvolt = <1800000>;
214			regulator-max-microvolt = <1900000>;
215		};
216
217		pm8953_l8: l8 {
218			regulator-min-microvolt = <2900000>;
219			regulator-max-microvolt = <2900000>;
220		};
221
222		pm8953_l9: l9 {
223			regulator-min-microvolt = <3300000>;
224			regulator-max-microvolt = <3300000>;
225		};
226
227		pm8953_l10:l10 {
228			regulator-min-microvolt = <2850000>;
229			regulator-max-microvolt = <2850000>;
230		};
231
232		pm8953_l11: l11 {
233			regulator-min-microvolt = <2950000>;
234			regulator-max-microvolt = <2950000>;
235		};
236
237		pm8953_l12: l12 {
238			regulator-min-microvolt = <1800000>;
239			regulator-max-microvolt = <2950000>;
240		};
241
242		pm8953_l13: l13 {
243			regulator-min-microvolt = <3125000>;
244			regulator-max-microvolt = <3125000>;
245		};
246
247		pm8953_l16: l16 {
248			regulator-min-microvolt = <1800000>;
249			regulator-max-microvolt = <1800000>;
250		};
251
252		pm8953_l17: l17 {
253			regulator-min-microvolt = <2750000>;
254			regulator-max-microvolt = <2850000>;
255		};
256
257		pm8953_l19: l19 {
258			regulator-min-microvolt = <1200000>;
259			regulator-max-microvolt = <1350000>;
260		};
261
262		pm8953_l22: l22 {
263			regulator-min-microvolt = <2800000>;
264			regulator-max-microvolt = <2800000>;
265		};
266
267		pm8953_l23: l23 {
268			regulator-min-microvolt = <1200000>;
269			regulator-max-microvolt = <1225000>;
270		};
271	};
272};
273
274&sdhc_1 {
275	vmmc-supply = <&pm8953_l8>;
276	vqmmc-supply = <&pm8953_l5>;
277
278	status = "okay";
279};
280
281&sdhc_2 {
282	vmmc-supply = <&pm8953_l11>;
283	vqmmc-supply = <&pm8953_l12>;
284
285	cd-gpios = <&tlmm 133 GPIO_ACTIVE_HIGH>;
286
287	pinctrl-names = "default", "sleep";
288	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
289	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
290
291	status = "okay";
292};
293
294&tlmm {
295	gpio-reserved-ranges = <0 4>, <16 4>, <135 4>;
296
297	gpio_hall_sensor_default: gpio-hall-sensor-state {
298		pins = "gpio44";
299		function = "gpio";
300		drive-strength = <2>;
301		bias-pull-up;
302	};
303
304	ts_int_default: ts-int-default-state {
305		pins = "gpio65";
306		function = "gpio";
307		drive-strength = <2>;
308		bias-pull-up;
309	};
310};
311
312&uart_0 {
313	pinctrl-names = "default";
314	pinctrl-0 = <&uart_console_active>;
315
316	status = "okay";
317};
318
319&usb3 {
320	status = "okay";
321};
322
323&usb3_dwc3 {
324	dr_mode = "peripheral";
325};
326