1// SPDX-License-Identifier: GPL-2.0-only
2
3/dts-v1/;
4
5#include "msm8916-pm8916.dtsi"
6
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/input/input.h>
9#include <dt-bindings/interrupt-controller/irq.h>
10
11/*
12 * NOTE: The original firmware from Acer can only boot 32-bit kernels.
13 * To boot this device tree using arm64 it is necessary to flash 64-bit
14 * TZ/HYP firmware (e.g. taken from the DragonBoard 410c).
15 * See https://wiki.postmarketos.org/wiki/Acer_Iconia_Talk_S_(acer-a1-724)
16 * for suggested installation instructions.
17 */
18
19/ {
20	model = "Acer Iconia Talk S A1-724";
21	compatible = "acer,a1-724", "qcom,msm8916";
22	chassis-type = "tablet";
23
24	aliases {
25		serial0 = &blsp1_uart2;
26	};
27
28	chosen {
29		stdout-path = "serial0";
30	};
31
32	gpio-keys {
33		compatible = "gpio-keys";
34
35		pinctrl-names = "default";
36		pinctrl-0 = <&gpio_keys_default>;
37
38		label = "GPIO Buttons";
39
40		button-volume-up {
41			label = "Volume Up";
42			gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
43			linux,code = <KEY_VOLUMEUP>;
44		};
45	};
46
47	usb_id: usb-id {
48		compatible = "linux,extcon-usb-gpio";
49		id-gpio = <&msmgpio 110 GPIO_ACTIVE_HIGH>;
50		pinctrl-names = "default";
51		pinctrl-0 = <&usb_id_default>;
52	};
53};
54
55&blsp_i2c2 {
56	status = "okay";
57
58	accelerometer@10 {
59		compatible = "bosch,bmc150_accel";
60		reg = <0x10>;
61		interrupt-parent = <&msmgpio>;
62		interrupts = <115 IRQ_TYPE_EDGE_RISING>;
63
64		vdd-supply = <&pm8916_l17>;
65		vddio-supply = <&pm8916_l6>;
66
67		pinctrl-names = "default";
68		pinctrl-0 = <&accel_int_default>;
69
70		mount-matrix = "0", "-1", "0",
71			       "-1", "0", "0",
72			       "0", "0", "1";
73	};
74
75	magnetometer@12 {
76		compatible = "bosch,bmc150_magn";
77		reg = <0x12>;
78
79		vdd-supply = <&pm8916_l17>;
80		vddio-supply = <&pm8916_l6>;
81	};
82};
83
84&blsp_i2c5 {
85	status = "okay";
86
87	touchscreen@38 {
88		/* Actually ft5446 */
89		compatible = "edt,edt-ft5406";
90		reg = <0x38>;
91
92		interrupt-parent = <&msmgpio>;
93		interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
94
95		reset-gpios = <&msmgpio 12 GPIO_ACTIVE_LOW>;
96
97		vcc-supply = <&pm8916_l16>;
98		iovcc-supply = <&pm8916_l6>;
99
100		touchscreen-size-x = <720>;
101		touchscreen-size-y = <1280>;
102
103		pinctrl-names = "default";
104		pinctrl-0 = <&touchscreen_default>;
105	};
106};
107
108&blsp1_uart2 {
109	status = "okay";
110};
111
112&pm8916_resin {
113	linux,code = <KEY_VOLUMEDOWN>;
114	status = "okay";
115};
116
117&pm8916_vib {
118	status = "okay";
119};
120
121&sdhc_1 {
122	pinctrl-names = "default", "sleep";
123	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
124	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
125
126	status = "okay";
127};
128
129&sdhc_2 {
130	pinctrl-names = "default", "sleep";
131	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
132	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
133
134	cd-gpios = <&msmgpio 38 GPIO_ACTIVE_HIGH>;
135
136	status = "okay";
137};
138
139&usb {
140	extcon = <&usb_id>, <&usb_id>;
141	status = "okay";
142};
143
144&usb_hs_phy {
145	extcon = <&usb_id>;
146};
147
148&wcnss {
149	status = "okay";
150};
151
152&wcnss_iris {
153	compatible = "qcom,wcn3620";
154};
155
156&smd_rpm_regulators {
157	vdd_l1_l2_l3-supply = <&pm8916_s3>;
158	vdd_l4_l5_l6-supply = <&pm8916_s4>;
159	vdd_l7-supply = <&pm8916_s4>;
160
161	s3 {
162		regulator-min-microvolt = <1200000>;
163		regulator-max-microvolt = <1300000>;
164	};
165
166	s4 {
167		regulator-min-microvolt = <1800000>;
168		regulator-max-microvolt = <2100000>;
169	};
170
171	l1 {
172		regulator-min-microvolt = <1225000>;
173		regulator-max-microvolt = <1225000>;
174	};
175
176	l2 {
177		regulator-min-microvolt = <1200000>;
178		regulator-max-microvolt = <1200000>;
179	};
180
181	l4 {
182		regulator-min-microvolt = <2050000>;
183		regulator-max-microvolt = <2050000>;
184	};
185
186	l5 {
187		regulator-min-microvolt = <1800000>;
188		regulator-max-microvolt = <1800000>;
189	};
190
191	l6 {
192		regulator-min-microvolt = <1800000>;
193		regulator-max-microvolt = <1800000>;
194	};
195
196	l7 {
197		regulator-min-microvolt = <1800000>;
198		regulator-max-microvolt = <1800000>;
199	};
200
201	l8 {
202		regulator-min-microvolt = <2850000>;
203		regulator-max-microvolt = <2900000>;
204	};
205
206	l9 {
207		regulator-min-microvolt = <3300000>;
208		regulator-max-microvolt = <3300000>;
209	};
210
211	l10 {
212		regulator-min-microvolt = <2700000>;
213		regulator-max-microvolt = <2800000>;
214	};
215
216	l11 {
217		regulator-min-microvolt = <1800000>;
218		regulator-max-microvolt = <2950000>;
219		regulator-system-load = <200000>;
220		regulator-allow-set-load;
221	};
222
223	l12 {
224		regulator-min-microvolt = <1800000>;
225		regulator-max-microvolt = <2950000>;
226	};
227
228	l13 {
229		regulator-min-microvolt = <3075000>;
230		regulator-max-microvolt = <3075000>;
231	};
232
233	l14 {
234		regulator-min-microvolt = <1800000>;
235		regulator-max-microvolt = <3300000>;
236	};
237
238	l15 {
239		regulator-min-microvolt = <1800000>;
240		regulator-max-microvolt = <3300000>;
241	};
242
243	l16 {
244		regulator-min-microvolt = <2900000>;
245		regulator-max-microvolt = <2900000>;
246	};
247
248	l17 {
249		regulator-min-microvolt = <2850000>;
250		regulator-max-microvolt = <2850000>;
251	};
252
253	l18 {
254		regulator-min-microvolt = <2700000>;
255		regulator-max-microvolt = <2700000>;
256	};
257};
258
259&msmgpio {
260	accel_int_default: accel-int-default-state {
261		pins = "gpio115";
262		function = "gpio";
263
264		drive-strength = <2>;
265		bias-disable;
266	};
267
268	gpio_keys_default: gpio-keys-default-state {
269		pins = "gpio107";
270		function = "gpio";
271
272		drive-strength = <2>;
273		bias-pull-up;
274	};
275
276	touchscreen_default: touchscreen-default-state {
277		reset-pins {
278			pins = "gpio12";
279			function = "gpio";
280			drive-strength = <2>;
281			bias-disable;
282		};
283
284		touchscreen-pins {
285			pins = "gpio13";
286			function = "gpio";
287			drive-strength = <2>;
288			bias-pull-up;
289		};
290	};
291
292	usb_id_default: usb-id-default-state {
293		pins = "gpio110";
294		function = "gpio";
295
296		drive-strength = <8>;
297		bias-pull-up;
298	};
299};
300