1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2022, Alejandro Tafalla
4 */
5/dts-v1/;
6
7#include "msm8953.dtsi"
8#include "pm8953.dtsi"
9#include "pmi8950.dtsi"
10
11/delete-node/ &adsp_fw_mem;
12/delete-node/ &qseecom_mem;
13/delete-node/ &wcnss_fw_mem;
14
15/ {
16	model = "Xiaomi Mi A2 Lite";
17	compatible = "xiaomi,daisy", "qcom,msm8953";
18	chassis-type = "handset";
19	qcom,msm-id = <293 0>;
20	qcom,board-id = <0x1000b 0x9>;
21
22	chosen {
23		#address-cells = <2>;
24		#size-cells = <2>;
25		ranges;
26
27		framebuffer@90001000 {
28			compatible = "simple-framebuffer";
29			reg = <0 0x90001000 0 (1920 * 2280 * 3)>;
30
31			width = <1080>;
32			height = <2280>;
33			stride = <(1080 * 3)>;
34			format = "r8g8b8";
35
36			power-domains = <&gcc MDSS_GDSC>;
37
38			clocks = <&gcc GCC_MDSS_AHB_CLK>,
39				 <&gcc GCC_MDSS_AXI_CLK>,
40				 <&gcc GCC_MDSS_VSYNC_CLK>,
41				 <&gcc GCC_MDSS_MDP_CLK>,
42				 <&gcc GCC_MDSS_BYTE0_CLK>,
43				 <&gcc GCC_MDSS_PCLK0_CLK>,
44				 <&gcc GCC_MDSS_ESC0_CLK>;
45		};
46	};
47
48	gpio-keys {
49		compatible = "gpio-keys";
50
51		pinctrl-names = "default";
52		pinctrl-0 = <&gpio_key_default>;
53
54		key-volume-up {
55			label = "Volume Up";
56			gpios = <&tlmm 85 GPIO_ACTIVE_LOW>;
57			linux,code = <KEY_VOLUMEUP>;
58		};
59	};
60
61	reserved-memory {
62		qseecom_mem: qseecom@84a00000 {
63			reg = <0x0 0x84a00000 0x0 0x1900000>;
64			no-map;
65		};
66
67		adsp_fw_mem: adsp@8d600000 {
68			reg = <0x0 0x8d600000 0x0 0x1200000>;
69			no-map;
70		};
71
72		wcnss_fw_mem: wcnss@8e800000 {
73			reg = <0x0 0x8e800000 0x0 0x700000>;
74			no-map;
75		};
76	};
77
78	/*
79	 * We bitbang on &i2c_4 because BLSP is protected by TZ as sensors are
80	 * normally proxied via ADSP firmware. GPIOs aren't protected.
81	 */
82	i2c-sensors {
83		compatible = "i2c-gpio";
84		sda-gpios = <&tlmm 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
85		scl-gpios = <&tlmm 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
86		i2c-gpio,delay-us = <2>; /* ~100 kHz */
87		#address-cells = <1>;
88		#size-cells = <0>;
89
90		imu@6a {
91			compatible = "st,lsm6dsl";
92			reg = <0x6a>;
93			vdd-supply = <&pm8953_l10>;
94			vddio-supply = <&pm8953_l6>;
95			mount-matrix = "-1", "0", "0",
96					"0", "-1", "0",
97					"0", "0", "1";
98		};
99	};
100
101	vph_pwr: vph-pwr-regulator {
102		compatible = "regulator-fixed";
103		regulator-name = "vph_pwr";
104		regulator-always-on;
105		regulator-boot-on;
106	};
107};
108
109&hsusb_phy {
110	vdd-supply = <&pm8953_l3>;
111	vdda-pll-supply = <&pm8953_l7>;
112	vdda-phy-dpdm-supply = <&pm8953_l13>;
113
114	status = "okay";
115};
116
117&i2c_2 {
118	status = "okay";
119
120	speaker_codec: audio-codec@3a {
121		compatible = "maxim,max98927";
122		reg = <0x3a>;
123
124		reset-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
125
126		vmon-slot-no = <1>;
127		imon-slot-no = <1>;
128		maxim,interleave-mode;
129
130		#sound-dai-cells = <0>;
131	};
132};
133
134&i2c_3 {
135	status = "okay";
136
137	touchscreen@38 {
138		compatible = "edt,edt-ft5406";
139		reg = <0x38>;
140
141		interrupt-parent = <&tlmm>;
142		interrupts = <65 IRQ_TYPE_EDGE_FALLING>;
143
144		reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
145
146		vcc-supply = <&pm8953_l10>;
147
148		touchscreen-size-x = <1080>;
149		touchscreen-size-y = <2280>;
150	};
151};
152
153&pm8953_resin {
154	linux,code = <KEY_VOLUMEDOWN>;
155	status = "okay";
156};
157
158&pmi8950_wled {
159	qcom,current-limit-microamp = <20000>;
160	qcom,num-strings = <2>;
161
162	status = "okay";
163};
164
165&rpm_requests {
166	regulators {
167		compatible = "qcom,rpm-pm8953-regulators";
168
169		vdd_s1-supply = <&vph_pwr>;
170		vdd_s2-supply = <&vph_pwr>;
171		vdd_s3-supply = <&vph_pwr>;
172		vdd_s4-supply = <&vph_pwr>;
173		vdd_s5-supply = <&vph_pwr>;
174		vdd_s6-supply = <&vph_pwr>;
175		vdd_s7-supply = <&vph_pwr>;
176		vdd_l1-supply = <&pm8953_s3>;
177		vdd_l2_l3-supply = <&pm8953_s3>;
178		vdd_l4_l5_l6_l7_l16_l19-supply = <&pm8953_s4>;
179		vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
180		vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;
181
182		pm8953_s1: s1 {
183			regulator-min-microvolt = <863000>;
184			regulator-max-microvolt = <1152000>;
185		};
186
187		pm8953_s3: s3 {
188			regulator-min-microvolt = <1224000>;
189			regulator-max-microvolt = <1224000>;
190		};
191
192		pm8953_s4: s4 {
193			regulator-min-microvolt = <1896000>;
194			regulator-max-microvolt = <2048000>;
195		};
196
197		pm8953_l1: l1 {
198			regulator-min-microvolt = <1000000>;
199			regulator-max-microvolt = <1100000>;
200		};
201
202		pm8953_l2: l2 {
203			regulator-min-microvolt = <975000>;
204			regulator-max-microvolt = <1225000>;
205		};
206
207		pm8953_l3: l3 {
208			regulator-min-microvolt = <925000>;
209			regulator-max-microvolt = <925000>;
210			regulator-allow-set-load;
211		};
212
213		pm8953_l5: l5 {
214			regulator-min-microvolt = <1800000>;
215			regulator-max-microvolt = <1800000>;
216		};
217
218		pm8953_l6: l6 {
219			regulator-min-microvolt = <1800000>;
220			regulator-max-microvolt = <1800000>;
221			regulator-always-on;
222		};
223
224		pm8953_l7: l7 {
225			regulator-min-microvolt = <1800000>;
226			regulator-max-microvolt = <1900000>;
227		};
228
229		pm8953_l8: l8 {
230			regulator-min-microvolt = <2900000>;
231			regulator-max-microvolt = <2900000>;
232		};
233
234		pm8953_l9: l9 {
235			regulator-min-microvolt = <3000000>;
236			regulator-max-microvolt = <3300000>;
237		};
238
239		pm8953_l10: l10 {
240			regulator-min-microvolt = <2850000>;
241			regulator-max-microvolt = <2850000>;
242			regulator-always-on;
243		};
244
245		pm8953_l11: l11 {
246			regulator-min-microvolt = <2950000>;
247			regulator-max-microvolt = <2950000>;
248		};
249
250		pm8953_l12: l12 {
251			regulator-min-microvolt = <1800000>;
252			regulator-max-microvolt = <2950000>;
253		};
254
255		pm8953_l13: l13 {
256			regulator-min-microvolt = <3125000>;
257			regulator-max-microvolt = <3125000>;
258		};
259
260		pm8953_l16: l16 {
261			regulator-min-microvolt = <1800000>;
262			regulator-max-microvolt = <1800000>;
263		};
264
265		pm8953_l17: l17 {
266			regulator-min-microvolt = <2850000>;
267			regulator-max-microvolt = <2850000>;
268		};
269
270		pm8953_l19: l19 {
271			regulator-min-microvolt = <1200000>;
272			regulator-max-microvolt = <1350000>;
273		};
274
275		pm8953_l22: l22 {
276			regulator-min-microvolt = <2800000>;
277			regulator-max-microvolt = <2850000>;
278			regulator-always-on;
279		};
280
281		pm8953_l23: l23 {
282			regulator-min-microvolt = <975000>;
283			regulator-max-microvolt = <1225000>;
284		};
285	};
286};
287
288&sdhc_1 {
289	vmmc-supply = <&pm8953_l8>;
290	vqmmc-supply = <&pm8953_l5>;
291
292	status = "okay";
293};
294
295&sdhc_2 {
296	vmmc-supply = <&pm8953_l11>;
297	vqmmc-supply = <&pm8953_l12>;
298
299	cd-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
300
301	pinctrl-names = "default", "sleep";
302	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
303	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
304
305	status = "okay";
306};
307
308&tlmm {
309	gpio-reserved-ranges = <0 4>, <16 4>, <135 4>;
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