Skip to content

Commit 0f5cdb3

Browse files
konradybcioandersson
authored andcommitted
arm64: dts: qcom: Add Xiaomi Libra (Mi 4C) device tree
This commit adds support for the Xiaomi Libra (Mi 4C) smartphone. It's based on the Qualcomm msm8992 SoC. It currently supports: * Screen console from bootloader * SDHCI * Regulator configuration * Serial console * I2C Signed-off-by: Konrad Dybcio <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Bjorn Andersson <[email protected]>
1 parent 75c8a10 commit 0f5cdb3

File tree

2 files changed

+365
-0
lines changed

2 files changed

+365
-0
lines changed

arch/arm64/boot/dts/qcom/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-longcheer-l8150.dtb
99
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-a3u-eur.dtb
1010
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-a5u-eur.dtb
1111
dtb-$(CONFIG_ARCH_QCOM) += msm8992-bullhead-rev-101.dtb
12+
dtb-$(CONFIG_ARCH_QCOM) += msm8992-xiaomi-libra.dtb
1213
dtb-$(CONFIG_ARCH_QCOM) += msm8994-angler-rev-101.dtb
1314
dtb-$(CONFIG_ARCH_QCOM) += msm8994-sony-xperia-kitakami-sumire.dtb
1415
dtb-$(CONFIG_ARCH_QCOM) += msm8996-mtp.dtb
Lines changed: 364 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,364 @@
1+
// SPDX-License-Identifier: BSD-3-Clause
2+
/*
3+
* Copyright (c) 2020, Konrad Dybcio
4+
*/
5+
6+
/dts-v1/;
7+
8+
#include "msm8992.dtsi"
9+
#include "pm8994.dtsi"
10+
#include "pmi8994.dtsi"
11+
#include <dt-bindings/gpio/gpio.h>
12+
#include <dt-bindings/input/gpio-keys.h>
13+
14+
/ {
15+
model = "Xiaomi Mi 4C";
16+
compatible = "xiaomi,libra", "qcom,msm8992";
17+
/* required for bootloader to select correct board */
18+
qcom,msm-id = <251 0 252 0>;
19+
qcom,pmic-id = <65545 65546 0 0>;
20+
qcom,board-id = <12 0>;
21+
22+
/* This enables graphical output via bootloader-enabled display */
23+
chosen {
24+
bootargs = "earlycon=tty0 console=tty0";
25+
26+
#address-cells = <2>;
27+
#size-cells = <2>;
28+
ranges;
29+
30+
framebuffer0: framebuffer@3404000 {
31+
status= "okay";
32+
compatible = "simple-framebuffer";
33+
reg = <0 0x3404000 0 (1080 * 1920 * 3)>;
34+
width = <1080>;
35+
height = <1920>;
36+
stride = <(1080 * 3)>;
37+
format = "r8g8b8";
38+
};
39+
};
40+
41+
gpio_keys {
42+
compatible = "gpio-keys";
43+
input-name = "gpio-keys";
44+
#address-cells = <1>;
45+
#size-cells = <0>;
46+
autorepeat;
47+
48+
button@0 {
49+
label = "Volume Up";
50+
gpios = <&pm8994_gpios 3 GPIO_ACTIVE_LOW>;
51+
linux,input-type = <1>;
52+
linux,code = <KEY_VOLUMEUP>;
53+
wakeup-source;
54+
debounce-interval = <15>;
55+
};
56+
};
57+
58+
reserved-memory {
59+
#address-cells = <2>;
60+
#size-cells = <2>;
61+
ranges;
62+
63+
/* This is for getting crash logs using Android downstream kernels */
64+
ramoops@dfc00000 {
65+
compatible = "ramoops";
66+
reg = <0x0 0xdfc00000 0x0 0x40000>;
67+
console-size = <0x10000>;
68+
record-size = <0x10000>;
69+
ftrace-size = <0x10000>;
70+
pmsg-size = <0x20000>;
71+
};
72+
73+
continuous_splash: framebuffer@3401000{
74+
reg = <0x0 0x3401000 0x0 0x2200000>;
75+
no-map;
76+
};
77+
78+
dfps_data_mem: dfps_data_mem@3400000 {
79+
reg = <0x0 0x3400000 0x0 0x1000>;
80+
no-map;
81+
};
82+
83+
peripheral_region: peripheral_region@7400000 {
84+
reg = <0x0 0x7400000 0x0 0x1c00000>;
85+
no-map;
86+
};
87+
88+
modem_region: modem_region@9000000 {
89+
reg = <0x0 0x9000000 0x0 0x5a00000>;
90+
no-map;
91+
};
92+
93+
tzapp: modem_region@ea00000 {
94+
reg = <0x0 0xea00000 0x0 0x1900000>;
95+
no-map;
96+
};
97+
};
98+
};
99+
100+
&blsp_i2c2 {
101+
status = "okay";
102+
103+
/* Atmel or Synaptics touchscreen */
104+
};
105+
106+
&blsp_i2c5 {
107+
status = "okay";
108+
109+
/* Silabs si4705 FM transmitter */
110+
};
111+
112+
&blsp_i2c6 {
113+
status = "okay";
114+
115+
/* NCI NFC,
116+
* TI USB320 Type-C controller,
117+
* Pericom 30216a USB (de)mux switch
118+
*/
119+
};
120+
121+
&blsp_i2c7 {
122+
status = "okay";
123+
124+
/* cm36686 proximity and ambient light sensor */
125+
};
126+
127+
&blsp_i2c13 {
128+
status = "okay";
129+
130+
/* ST lsm6db0 gyro/accelerometer */
131+
};
132+
133+
&blsp2_uart2 {
134+
status = "okay";
135+
};
136+
137+
&rpm_requests {
138+
pm8994-regulators {
139+
compatible = "qcom,rpm-pm8994-regulators";
140+
141+
vdd_l1-supply = <&pm8994_s7>;
142+
vdd_l2_26_28-supply = <&pm8994_s3>;
143+
vdd_l3_11-supply = <&pm8994_s3>;
144+
vdd_l4_27_31-supply = <&pm8994_s3>;
145+
vdd_l5_7-supply = <&pm8994_s3>;
146+
vdd_l6_12_32-supply = <&pm8994_s5>;
147+
vdd_l8_16_30-supply = <&vreg_vph_pwr>;
148+
vdd_l9_10_18_22-supply = <&vreg_vph_pwr>;
149+
vdd_l13_19_23_24-supply = <&vreg_vph_pwr>;
150+
vdd_l14_15-supply = <&pm8994_s5>;
151+
vdd_l17_29-supply = <&vreg_vph_pwr>;
152+
vdd_l20_21-supply = <&vreg_vph_pwr>;
153+
vdd_l25-supply = <&pm8994_s5>;
154+
vdd_lvs1_2 = <&pm8994_s4>;
155+
156+
pm8994_s1: s1 {
157+
/* unused */
158+
status = "disabled";
159+
};
160+
161+
pm8994_s2: s2 {
162+
/* unused */
163+
status = "disabled";
164+
};
165+
166+
pm8994_s3: s3 {
167+
regulator-min-microvolt = <1300000>;
168+
regulator-max-microvolt = <1300000>;
169+
};
170+
171+
pm8994_s4: s4 {
172+
regulator-min-microvolt = <1800000>;
173+
regulator-max-microvolt = <1800000>;
174+
regulator-allow-set-load;
175+
regulator-always-on;
176+
regulator-system-load = <325000>;
177+
};
178+
179+
pm8994_s5: s5 {
180+
regulator-min-microvolt = <2150000>;
181+
regulator-max-microvolt = <2150000>;
182+
};
183+
184+
pm8994_s7: s7 {
185+
regulator-min-microvolt = <1000000>;
186+
regulator-max-microvolt = <1000000>;
187+
};
188+
189+
pm8994_l1: l1 {
190+
regulator-min-microvolt = <1000000>;
191+
regulator-max-microvolt = <1000000>;
192+
};
193+
194+
pm8994_l2: l2 {
195+
regulator-min-microvolt = <1250000>;
196+
regulator-max-microvolt = <1250000>;
197+
};
198+
199+
pm8994_l3: l3 {
200+
regulator-min-microvolt = <1200000>;
201+
regulator-max-microvolt = <1200000>;
202+
};
203+
204+
pm8994_l4: l4 {
205+
regulator-min-microvolt = <1225000>;
206+
regulator-max-microvolt = <1225000>;
207+
};
208+
209+
pm8994_l5: l5 {
210+
/* unused */
211+
status = "disabled";
212+
};
213+
214+
pm8994_l6: l6 {
215+
regulator-min-microvolt = <1800000>;
216+
regulator-max-microvolt = <1800000>;
217+
};
218+
219+
pm8994_l7: l7 {
220+
/* unused */
221+
status = "disabled";
222+
};
223+
224+
pm8994_l8: l8 {
225+
regulator-min-microvolt = <1800000>;
226+
regulator-max-microvolt = <1800000>;
227+
};
228+
229+
pm8994_l9: l9 {
230+
regulator-min-microvolt = <1800000>;
231+
regulator-max-microvolt = <1800000>;
232+
};
233+
234+
pm8994_l10: l10 {
235+
regulator-min-microvolt = <1800000>;
236+
regulator-max-microvolt = <1800000>;
237+
};
238+
239+
pm8994_l11: l11 {
240+
regulator-min-microvolt = <1200000>;
241+
regulator-max-microvolt = <1200000>;
242+
};
243+
244+
pm8994_l12: l12 {
245+
regulator-min-microvolt = <1800000>;
246+
regulator-max-microvolt = <1800000>;
247+
};
248+
249+
pm8994_l13: l13 {
250+
regulator-min-microvolt = <1800000>;
251+
regulator-max-microvolt = <2950000>;
252+
};
253+
254+
pm8994_l14: l14 {
255+
regulator-min-microvolt = <1800000>;
256+
regulator-max-microvolt = <1800000>;
257+
};
258+
259+
pm8994_l15: l15 {
260+
regulator-min-microvolt = <1800000>;
261+
regulator-max-microvolt = <1800000>;
262+
};
263+
264+
pm8994_l16: l16 {
265+
regulator-min-microvolt = <2700000>;
266+
regulator-max-microvolt = <2700000>;
267+
};
268+
269+
pm8994_l17: l17 {
270+
regulator-min-microvolt = <2700000>;
271+
regulator-max-microvolt = <2700000>;
272+
};
273+
274+
pm8994_l18: l18 {
275+
regulator-min-microvolt = <2850000>;
276+
regulator-max-microvolt = <2850000>;
277+
regulator-always-on;
278+
};
279+
280+
pm8994_l19: l19 {
281+
regulator-min-microvolt = <2800000>;
282+
regulator-max-microvolt = <2800000>;
283+
};
284+
285+
pm8994_l20: l20 {
286+
regulator-min-microvolt = <2950000>;
287+
regulator-max-microvolt = <2950000>;
288+
regulator-always-on;
289+
regulator-boot-on;
290+
regulator-allow-set-load;
291+
regulator-system-load = <570000>;
292+
};
293+
294+
pm8994_l21: l21 {
295+
regulator-min-microvolt = <2950000>;
296+
regulator-max-microvolt = <2950000>;
297+
regulator-always-on;
298+
};
299+
300+
pm8994_l22: l22 {
301+
regulator-min-microvolt = <3000000>;
302+
regulator-max-microvolt = <3000000>;
303+
};
304+
305+
pm8994_l23: l23 {
306+
regulator-min-microvolt = <2800000>;
307+
regulator-max-microvolt = <2800000>;
308+
};
309+
310+
pm8994_l24: l24 {
311+
regulator-min-microvolt = <3075000>;
312+
regulator-max-microvolt = <3150000>;
313+
};
314+
315+
pm8994_l25: l25 {
316+
regulator-min-microvolt = <1000000>;
317+
regulator-max-microvolt = <1000000>;
318+
};
319+
320+
pm8994_l26: l26 {
321+
regulator-min-microvolt = <987500>;
322+
regulator-max-microvolt = <987500>;
323+
324+
};
325+
326+
pm8994_l27: l27 {
327+
regulator-min-microvolt = <1050000>;
328+
regulator-max-microvolt = <1050000>;
329+
};
330+
331+
pm8994_l28: l28 {
332+
regulator-min-microvolt = <1000000>;
333+
regulator-max-microvolt = <1000000>;
334+
};
335+
336+
pm8994_l29: l29 {
337+
regulator-min-microvolt = <2800000>;
338+
regulator-max-microvolt = <2800000>;
339+
};
340+
341+
pm8994_l30: l30 {
342+
regulator-min-microvolt = <1800000>;
343+
regulator-max-microvolt = <1800000>;
344+
};
345+
346+
pm8994_l31: l31 {
347+
regulator-min-microvolt = <1262500>;
348+
regulator-max-microvolt = <1262500>;
349+
};
350+
351+
pm8994_l32: l32 {
352+
regulator-min-microvolt = <1800000>;
353+
regulator-max-microvolt = <1800000>;
354+
};
355+
};
356+
};
357+
358+
&sdhc_1 {
359+
status = "okay";
360+
361+
mmc-hs400-1_8v;
362+
vmmc-supply = <&pm8994_l20>;
363+
vqmmc-supply = <&pm8994_s4>;
364+
};

0 commit comments

Comments
 (0)