Skip to content

Commit 97aabfb

Browse files
committed
arm64: dts: qcom: msm8916-lenovo-phab: add device
Lenovo PHAB (PB1-750M) is a phablet using the MSM8916 SoC released in late 2015. Add a device tree for with initial support for: - GPIO keys - pm8916-vibrator - SDHCI (internal and external storage) - USB Device Mode - Charging - UART (not tested) - WCNSS (WiFi/BT) - Modem (LTE works, calls & SMS not tested) - Regulators - Sound (WIP) - Accelerometer (WIP) Signed-off-by: Oleksandr Knyshuk <kigen745@gmail.com>
1 parent 02dad76 commit 97aabfb

File tree

2 files changed

+339
-0
lines changed

2 files changed

+339
-0
lines changed

arch/arm64/boot/dts/qcom/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-asus-z010d.dtb
1818
dtb-$(CONFIG_ARCH_QCOM) += msm8916-gplus-fl8005a.dtb
1919
dtb-$(CONFIG_ARCH_QCOM) += msm8916-huawei-g7.dtb
2020
dtb-$(CONFIG_ARCH_QCOM) += msm8916-huawei-y635.dtb
21+
dtb-$(CONFIG_ARCH_QCOM) += msm8916-lenovo-phab.dtb
2122
dtb-$(CONFIG_ARCH_QCOM) += msm8916-lg-c50.dtb
2223
dtb-$(CONFIG_ARCH_QCOM) += msm8916-lg-m216.dtb
2324
dtb-$(CONFIG_ARCH_QCOM) += msm8916-longcheer-l8150.dtb
Lines changed: 338 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,338 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
3+
/dts-v1/;
4+
5+
#include "msm8916-pm8916.dtsi"
6+
#include "msm8916-modem.dtsi"
7+
8+
#include <dt-bindings/gpio/gpio.h>
9+
#include <dt-bindings/input/input.h>
10+
#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
11+
#include <dt-bindings/sound/apq8016-lpass.h>
12+
13+
/ {
14+
model = "Lenovo PHAB";
15+
compatible = "lenovo,phab", "qcom,msm8916";
16+
chassis-type = "tablet";
17+
18+
aliases {
19+
serial0 = &blsp1_uart2;
20+
};
21+
22+
chosen {
23+
stdout-path = "serial0";
24+
};
25+
26+
reserved-memory {
27+
mpss_mem: mpss@86800000 {
28+
reg = <0x0 0x86800000 0x0 0x5500000>;
29+
no-map;
30+
};
31+
32+
gps_mem: gps@8bd00000 {
33+
reg = <0x0 0x8bd00000 0x0 0x200000>;
34+
no-map;
35+
};
36+
};
37+
38+
gpio-keys {
39+
compatible = "gpio-keys";
40+
pinctrl-0 = <&gpio_keys_default>;
41+
pinctrl-names = "default";
42+
label = "GPIO Buttons";
43+
44+
button-volume-up {
45+
label = "Volume Up";
46+
gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
47+
linux,code = <KEY_VOLUMEUP>;
48+
debounce-interval = <15>;
49+
};
50+
};
51+
52+
usb_id: usb-id {
53+
compatible = "linux,extcon-usb-gpio";
54+
id-gpios = <&msmgpio 110 GPIO_ACTIVE_HIGH>;
55+
pinctrl-0 = <&usb_id_default>;
56+
pinctrl-names = "default";
57+
};
58+
};
59+
60+
&blsp_i2c1 {
61+
status = "okay";
62+
63+
tas2552: tas2552@40 {
64+
compatible = "ti,tas2552";
65+
reg = <0x40>;
66+
#sound-dai-cells = <0>;
67+
enable-gpio = <&msmgpio 98 GPIO_ACTIVE_HIGH>;
68+
};
69+
};
70+
71+
&blsp_i2c2 {
72+
status = "okay";
73+
74+
accelerometer: accelerometer@68 {
75+
compatible = "invensense,mpu6050";
76+
reg = <0x68>;
77+
interrupt-parent = <&msmgpio>;
78+
interrupts = <115 IRQ_TYPE_EDGE_FALLING>;
79+
pinctrl-0 = <&mpu_default>;
80+
pinctrl-1 = <&mpu_sleep>;
81+
pinctrl-names = "default", "sleep";
82+
vdd-supply = <&pm8916_l17>;
83+
};
84+
};
85+
86+
&blsp_i2c4 {
87+
status = "okay";
88+
89+
charger: charger@57 {
90+
compatible = "summit,smb358";
91+
reg = <0x36>;
92+
interrupt-parent = <&msmgpio>;
93+
interrupts = <62 IRQ_TYPE_LEVEL_LOW>;
94+
pinctrl-0 = <&smb_int_default>;
95+
pinctrl-names = "default";
96+
summit,enable-usb-charging;
97+
summit,enable-mains-charging;
98+
99+
usb_vbus: usb-vbus {
100+
regulator-name = "usb_vbus";
101+
regulator-min-microvolt = <5000000>;
102+
regulator-max-microvolt = <5000000>;
103+
regulator-min-microamp = <750000>;
104+
regulator-max-microamp = <750000>;
105+
summit,needs-inok-toggle;
106+
};
107+
};
108+
};
109+
110+
&blsp1_uart2 {
111+
status = "okay";
112+
};
113+
114+
&lpass {
115+
dai@3 {
116+
reg = <MI2S_QUATERNARY>;
117+
qcom,playback-sd-lines = <1>;
118+
};
119+
};
120+
121+
&pm8916_resin {
122+
linux,code = <KEY_VOLUMEDOWN>;
123+
status = "okay";
124+
};
125+
126+
&pm8916_vib {
127+
status = "okay";
128+
};
129+
130+
&pronto {
131+
status = "okay";
132+
133+
iris {
134+
compatible = "qcom,wcn3660b";
135+
};
136+
};
137+
138+
&q6afedai {
139+
dai@22 {
140+
reg = <QUATERNARY_MI2S_RX>;
141+
qcom,sd-lines = <1>;
142+
};
143+
};
144+
145+
&sdhc_1 {
146+
pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
147+
pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
148+
pinctrl-names = "default", "sleep";
149+
status = "okay";
150+
};
151+
152+
&sdhc_2 {
153+
pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
154+
pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
155+
pinctrl-names = "default", "sleep";
156+
cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>;
157+
status = "okay";
158+
};
159+
160+
&sound {
161+
model = "msm8916";
162+
pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act>;
163+
pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus>;
164+
pinctrl-names = "default", "sleep";
165+
qcom,audio-routing =
166+
"RX_BIAS", "MCLK",
167+
"SPK_RX_BIAS", "MCLK",
168+
"INT_LDO_H", "MCLK",
169+
"MIC BIAS External", "Handset Mic",
170+
"MIC BIAS Internal2", "Headset Mic",
171+
"MIC BIAS External", "Secondary Mic",
172+
"AMIC1", "MIC BIAS External",
173+
"AMIC2", "MIC BIAS Internal2",
174+
"AMIC3", "MIC BIAS External",
175+
"DMIC1", "MIC BIAS Internal1",
176+
"MIC BIAS Internal1", "Digital Mic1",
177+
"DMIC2", "MIC BIAS Internal1",
178+
"MIC BIAS Internal1", "Digital Mic2";
179+
status = "okay";
180+
};
181+
182+
&sound_dai_quaternary {
183+
status = "okay";
184+
185+
codec {
186+
sound-dai = <&tas2552>;
187+
};
188+
};
189+
190+
&usb {
191+
extcon = <&charger>, <&usb_id>;
192+
vbus-supply = <&usb_vbus>;
193+
status = "okay";
194+
};
195+
196+
&usb_hs_phy {
197+
extcon = <&charger>;
198+
};
199+
200+
&smd_rpm_regulators {
201+
vdd_l1_l2_l3-supply = <&pm8916_s3>;
202+
vdd_l4_l5_l6-supply = <&pm8916_s4>;
203+
vdd_l7-supply = <&pm8916_s4>;
204+
205+
s3 {
206+
regulator-min-microvolt = <1200000>;
207+
regulator-max-microvolt = <1300000>;
208+
};
209+
210+
s4 {
211+
regulator-min-microvolt = <1800000>;
212+
regulator-max-microvolt = <2100000>;
213+
};
214+
215+
l1 {
216+
regulator-min-microvolt = <1225000>;
217+
regulator-max-microvolt = <1225000>;
218+
};
219+
220+
l2 {
221+
regulator-min-microvolt = <1200000>;
222+
regulator-max-microvolt = <1200000>;
223+
};
224+
225+
l4 {
226+
regulator-min-microvolt = <2050000>;
227+
regulator-max-microvolt = <2050000>;
228+
};
229+
230+
l5 {
231+
regulator-min-microvolt = <1800000>;
232+
regulator-max-microvolt = <1800000>;
233+
};
234+
235+
l6 {
236+
regulator-min-microvolt = <1800000>;
237+
regulator-max-microvolt = <1800000>;
238+
};
239+
240+
l7 {
241+
regulator-min-microvolt = <1800000>;
242+
regulator-max-microvolt = <1800000>;
243+
};
244+
245+
l8 {
246+
regulator-min-microvolt = <2850000>;
247+
regulator-max-microvolt = <2900000>;
248+
};
249+
250+
l9 {
251+
regulator-min-microvolt = <3300000>;
252+
regulator-max-microvolt = <3300000>;
253+
};
254+
255+
l10 {
256+
regulator-min-microvolt = <2700000>;
257+
regulator-max-microvolt = <2800000>;
258+
};
259+
260+
l11 {
261+
regulator-min-microvolt = <1800000>;
262+
regulator-max-microvolt = <2950000>;
263+
regulator-allow-set-load;
264+
regulator-system-load = <200000>;
265+
};
266+
267+
l12 {
268+
regulator-min-microvolt = <1800000>;
269+
regulator-max-microvolt = <2950000>;
270+
};
271+
272+
l13 {
273+
regulator-min-microvolt = <3075000>;
274+
regulator-max-microvolt = <3075000>;
275+
};
276+
277+
l14 {
278+
regulator-min-microvolt = <1800000>;
279+
regulator-max-microvolt = <3300000>;
280+
};
281+
282+
l15 {
283+
regulator-min-microvolt = <1800000>;
284+
regulator-max-microvolt = <3300000>;
285+
};
286+
287+
l16 {
288+
regulator-min-microvolt = <1800000>;
289+
regulator-max-microvolt = <3300000>;
290+
};
291+
292+
l17 {
293+
regulator-min-microvolt = <2850000>;
294+
regulator-max-microvolt = <2850000>;
295+
};
296+
297+
l18 {
298+
regulator-min-microvolt = <2700000>;
299+
regulator-max-microvolt = <2700000>;
300+
};
301+
};
302+
303+
&msmgpio {
304+
usb_id_default: usb-id-default-state {
305+
pins = "gpio110";
306+
function = "gpio";
307+
drive-strength = <8>;
308+
bias-pull-up;
309+
};
310+
311+
gpio_keys_default: gpio-keys-default-state {
312+
pins = "gpio107";
313+
function = "gpio";
314+
drive-strength = <2>;
315+
bias-pull-up;
316+
};
317+
318+
smb_int_default: smb-int-default-state {
319+
pins = "gpio62";
320+
function = "gpio";
321+
322+
drive-strength = <2>;
323+
bias-pull-up;
324+
};
325+
326+
mpu_default: mpu-default-state {
327+
pins = "gpio115";
328+
function = "gpio";
329+
drive-strength = <6>;
330+
bias-pull-up;
331+
};
332+
333+
mpu_sleep: mpu-sleep-state {
334+
pins = "gpio115";
335+
function = "gpio";
336+
drive-strength = <2>;
337+
};
338+
};

0 commit comments

Comments
 (0)