1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2020 Stephan Gerhold
4 */
5
6/dts-v1/;
7
8#include "msm8916-pm8916.dtsi"
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/input/input.h>
11#include <dt-bindings/leds/common.h>
12
13/ {
14	model = "Xiaomi Redmi 2 (Wingtech WT88047)";
15	compatible = "wingtech,wt88047", "qcom,msm8916";
16	chassis-type = "handset";
17
18	aliases {
19		mmc0 = &sdhc_1; /* eMMC */
20		mmc1 = &sdhc_2; /* SD card */
21		serial0 = &blsp_uart2;
22	};
23
24	chosen {
25		stdout-path = "serial0";
26	};
27
28	flash-led-controller {
29		compatible = "ocs,ocp8110";
30		enable-gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>;
31		flash-gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>;
32
33		pinctrl-names = "default";
34		pinctrl-0 = <&camera_flash_default>;
35
36		flash_led: led {
37			function = LED_FUNCTION_FLASH;
38			color = <LED_COLOR_ID_WHITE>;
39		};
40	};
41
42	gpio-keys {
43		compatible = "gpio-keys";
44
45		pinctrl-names = "default";
46		pinctrl-0 = <&gpio_keys_default>;
47
48		label = "GPIO Buttons";
49
50		button-volume-up {
51			label = "Volume Up";
52			gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
53			linux,code = <KEY_VOLUMEUP>;
54		};
55	};
56
57	usb_id: usb-id {
58		compatible = "linux,extcon-usb-gpio";
59		id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
60		pinctrl-names = "default";
61		pinctrl-0 = <&usb_id_default>;
62	};
63};
64
65&blsp_i2c2 {
66	status = "okay";
67
68	imu@68 {
69		compatible = "invensense,mpu6880";
70		reg = <0x68>;
71
72		interrupt-parent = <&tlmm>;
73		interrupts = <115 IRQ_TYPE_EDGE_RISING>;
74
75		vdd-supply = <&pm8916_l17>;
76		vddio-supply = <&pm8916_l6>;
77
78		pinctrl-names = "default";
79		pinctrl-0 = <&imu_default>;
80
81		mount-matrix = "1",  "0", "0",
82			       "0", "-1", "0",
83			       "0",  "0", "1";
84	};
85};
86
87&blsp_i2c5 {
88	status = "okay";
89
90	touchscreen@38 {
91		/* Likely some other model but works just fine with this one */
92		compatible = "edt,edt-ft5506";
93		reg = <0x38>;
94
95		interrupt-parent = <&tlmm>;
96		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
97
98		reset-gpios = <&tlmm 12 GPIO_ACTIVE_LOW>;
99
100		vcc-supply = <&pm8916_l17>;
101		iovcc-supply = <&pm8916_l6>;
102
103		touchscreen-size-x = <720>;
104		touchscreen-size-y = <1280>;
105
106		pinctrl-names = "default";
107		pinctrl-0 = <&touchscreen_default>;
108	};
109};
110
111&blsp_i2c6 {
112	status = "okay";
113
114	led-controller@45 {
115		compatible = "awinic,aw2013";
116		reg = <0x45>;
117		#address-cells = <1>;
118		#size-cells = <0>;
119
120		vcc-supply = <&pm8916_l16>;
121
122		led@0 {
123			reg = <0>;
124			led-max-microamp = <15000>;
125			function = LED_FUNCTION_INDICATOR;
126			color = <LED_COLOR_ID_RED>;
127		};
128
129		led@1 {
130			reg = <1>;
131			led-max-microamp = <15000>;
132			function = LED_FUNCTION_INDICATOR;
133			color = <LED_COLOR_ID_GREEN>;
134		};
135
136		led@2 {
137			reg = <2>;
138			led-max-microamp = <15000>;
139			function = LED_FUNCTION_INDICATOR;
140			color = <LED_COLOR_ID_BLUE>;
141		};
142	};
143};
144
145&blsp_uart2 {
146	status = "okay";
147};
148
149&pm8916_resin {
150	status = "okay";
151	linux,code = <KEY_VOLUMEDOWN>;
152};
153
154&pm8916_rpm_regulators {
155	pm8916_l16: l16 {
156		/*
157		 * L16 is only used for AW2013 which is fine with 2.5-3.3V.
158		 * Use the recommended typical voltage of 2.8V as minimum.
159		 */
160		regulator-min-microvolt = <2800000>;
161		regulator-max-microvolt = <3300000>;
162	};
163
164	pm8916_l17: l17 {
165		regulator-min-microvolt = <2850000>;
166		regulator-max-microvolt = <2850000>;
167	};
168};
169
170&pm8916_vib {
171	status = "okay";
172};
173
174&sdhc_1 {
175	status = "okay";
176};
177
178&sdhc_2 {
179	status = "okay";
180	non-removable;
181};
182
183&usb {
184	status = "okay";
185	extcon = <&usb_id>, <&usb_id>;
186};
187
188&usb_hs_phy {
189	extcon = <&usb_id>;
190};
191
192&wcnss {
193	status = "okay";
194};
195
196&wcnss_iris {
197	compatible = "qcom,wcn3620";
198};
199
200&tlmm {
201	camera_flash_default: camera-flash-default-state {
202		pins = "gpio31", "gpio32";
203		function = "gpio";
204
205		drive-strength = <2>;
206		bias-disable;
207	};
208
209	gpio_keys_default: gpio-keys-default-state {
210		pins = "gpio107";
211		function = "gpio";
212
213		drive-strength = <2>;
214		bias-pull-up;
215	};
216
217	imu_default: imu-default-state {
218		pins = "gpio115";
219		function = "gpio";
220
221		drive-strength = <2>;
222		bias-disable;
223	};
224
225	touchscreen_default: touchscreen-default-state {
226		touchscreen-pins {
227			pins = "gpio13";
228			function = "gpio";
229
230			drive-strength = <2>;
231			bias-pull-up;
232		};
233		reset-pins {
234			pins = "gpio12";
235			function = "gpio";
236
237			drive-strength = <2>;
238			bias-disable;
239		};
240	};
241
242	usb_id_default: usb-id-default-state {
243		pins = "gpio110";
244		function = "gpio";
245
246		drive-strength = <8>;
247		bias-pull-up;
248	};
249};
250