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