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 = <0>;
100	};
101
102	led-controller@45 {
103		compatible = "awinic,aw2013";
104		reg = <0x45>;
105
106		vcc-supply = <&pm8953_l10>;
107		vio-supply = <&pm8953_l5>;
108
109		#address-cells = <1>;
110		#size-cells = <0>;
111
112		led@0 {
113			reg = <0>;
114			led-max-microamp = <5000>;
115			function = LED_FUNCTION_INDICATOR;
116			color = <LED_COLOR_ID_WHITE>;
117		};
118	};
119};
120
121&i2c_3 {
122	status = "okay";
123
124	touchscreen@38 {
125		compatible = "edt,edt-ft5406";
126		reg = <0x38>;
127
128		interrupt-parent = <&tlmm>;
129		interrupts = <65 IRQ_TYPE_EDGE_FALLING>;
130
131		pinctrl-names = "default";
132		pinctrl-0 = <&ts_int_default>;
133
134		reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
135
136		vcc-supply = <&pm8953_l10>;
137
138		touchscreen-size-x = <1080>;
139		touchscreen-size-y = <1920>;
140	};
141};
142
143&pm8953_resin {
144	linux,code = <KEY_VOLUMEDOWN>;
145	status = "okay";
146};
147
148&pmi8950_wled {
149	qcom,num-strings = <2>;
150	qcom,external-pfet;
151	qcom,cabc;
152
153	status = "okay";
154};
155
156&rpm_requests {
157	regulators {
158		compatible = "qcom,rpm-pm8953-regulators";
159
160		vdd_s1-supply = <&vph_pwr>;
161		vdd_s2-supply = <&vph_pwr>;
162		vdd_s3-supply = <&vph_pwr>;
163		vdd_s4-supply = <&vph_pwr>;
164		vdd_s5-supply = <&vph_pwr>;
165		vdd_s6-supply = <&vph_pwr>;
166		vdd_s7-supply = <&vph_pwr>;
167		vdd_l1-supply = <&pm8953_s3>;
168		vdd_l2_l3-supply = <&pm8953_s3>;
169		vdd_l4_l5_l6_l7_l16_l19-supply = <&pm8953_s4>;
170		vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
171		vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;
172
173		pm8953_s1: s1 {
174			regulator-min-microvolt = <870000>;
175			regulator-max-microvolt = <1156000>;
176		};
177
178		pm8953_s3: s3 {
179			regulator-min-microvolt = <1224000>;
180			regulator-max-microvolt = <1224000>;
181		};
182
183		pm8953_s4: s4 {
184			regulator-min-microvolt = <1900000>;
185			regulator-max-microvolt = <2050000>;
186		};
187
188		pm8953_l1: l1 {
189			regulator-min-microvolt = <1000000>;
190			regulator-max-microvolt = <1000000>;
191		};
192
193		pm8953_l2: l2 {
194			regulator-min-microvolt = <1200000>;
195			regulator-max-microvolt = <1225000>;
196		};
197
198		pm8953_l3: l3 {
199			regulator-min-microvolt = <925000>;
200			regulator-max-microvolt = <925000>;
201		};
202
203		pm8953_l5: l5 {
204			regulator-min-microvolt = <1800000>;
205			regulator-max-microvolt = <1800000>;
206		};
207
208		pm8953_l6: l6 {
209			regulator-min-microvolt = <1800000>;
210			regulator-max-microvolt = <1800000>;
211		};
212
213		pm8953_l7: l7 {
214			regulator-min-microvolt = <1800000>;
215			regulator-max-microvolt = <1900000>;
216		};
217
218		pm8953_l8: l8 {
219			regulator-min-microvolt = <2900000>;
220			regulator-max-microvolt = <2900000>;
221		};
222
223		pm8953_l9: l9 {
224			regulator-min-microvolt = <3300000>;
225			regulator-max-microvolt = <3300000>;
226		};
227
228		pm8953_l10:l10 {
229			regulator-min-microvolt = <2850000>;
230			regulator-max-microvolt = <2850000>;
231		};
232
233		pm8953_l11: l11 {
234			regulator-min-microvolt = <2950000>;
235			regulator-max-microvolt = <2950000>;
236		};
237
238		pm8953_l12: l12 {
239			regulator-min-microvolt = <1800000>;
240			regulator-max-microvolt = <2950000>;
241		};
242
243		pm8953_l13: l13 {
244			regulator-min-microvolt = <3125000>;
245			regulator-max-microvolt = <3125000>;
246		};
247
248		pm8953_l16: l16 {
249			regulator-min-microvolt = <1800000>;
250			regulator-max-microvolt = <1800000>;
251		};
252
253		pm8953_l17: l17 {
254			regulator-min-microvolt = <2750000>;
255			regulator-max-microvolt = <2850000>;
256		};
257
258		pm8953_l19: l19 {
259			regulator-min-microvolt = <1200000>;
260			regulator-max-microvolt = <1350000>;
261		};
262
263		pm8953_l22: l22 {
264			regulator-min-microvolt = <2800000>;
265			regulator-max-microvolt = <2800000>;
266		};
267
268		pm8953_l23: l23 {
269			regulator-min-microvolt = <1200000>;
270			regulator-max-microvolt = <1225000>;
271		};
272	};
273};
274
275&sdhc_1 {
276	vmmc-supply = <&pm8953_l8>;
277	vqmmc-supply = <&pm8953_l5>;
278
279	status = "okay";
280};
281
282&sdhc_2 {
283	vmmc-supply = <&pm8953_l11>;
284	vqmmc-supply = <&pm8953_l12>;
285
286	cd-gpios = <&tlmm 133 GPIO_ACTIVE_HIGH>;
287
288	pinctrl-names = "default", "sleep";
289	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
290	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
291
292	status = "okay";
293};
294
295&tlmm {
296	gpio-reserved-ranges = <0 4>, <16 4>, <135 4>;
297
298	gpio_hall_sensor_default: gpio-hall-sensor-state {
299		pins = "gpio44";
300		function = "gpio";
301		drive-strength = <2>;
302		bias-pull-up;
303	};
304
305	ts_int_default: ts-int-default-state {
306		pins = "gpio65";
307		function = "gpio";
308		drive-strength = <2>;
309		bias-pull-up;
310	};
311};
312
313&uart_0 {
314	pinctrl-names = "default";
315	pinctrl-0 = <&uart_console_active>;
316
317	status = "okay";
318};
319
320&usb3 {
321	status = "okay";
322};
323
324&usb3_dwc3 {
325	dr_mode = "peripheral";
326};
327