1// SPDX-License-Identifier: GPL-2.0-only
2
3#include "msm8916.dtsi"
4#include "pm8916.dtsi"
5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/input/input.h>
7#include <dt-bindings/interrupt-controller/irq.h>
8
9/ {
10	aliases {
11		serial0 = &blsp1_uart2;
12	};
13
14	chosen {
15		stdout-path = "serial0";
16	};
17
18	soc {
19		sdhci@7824000 {
20			status = "okay";
21
22			vmmc-supply = <&pm8916_l8>;
23			vqmmc-supply = <&pm8916_l5>;
24
25			pinctrl-names = "default", "sleep";
26			pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
27			pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
28		};
29
30		sdhci@7864000 {
31			status = "okay";
32
33			vmmc-supply = <&pm8916_l11>;
34			vqmmc-supply = <&pm8916_l12>;
35
36			pinctrl-names = "default", "sleep";
37			pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
38			pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
39
40			cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>;
41		};
42
43		serial@78b0000 {
44			status = "okay";
45			pinctrl-names = "default", "sleep";
46			pinctrl-0 = <&blsp1_uart2_default>;
47			pinctrl-1 = <&blsp1_uart2_sleep>;
48		};
49
50		usb@78d9000 {
51			status = "okay";
52			extcon = <&muic>, <&muic>;
53
54			hnp-disable;
55			srp-disable;
56			adp-disable;
57
58			ulpi {
59				phy {
60					extcon = <&muic>;
61					v1p8-supply = <&pm8916_l7>;
62					v3p3-supply = <&pm8916_l13>;
63				};
64			};
65		};
66
67		wcnss@a21b000 {
68			status = "okay";
69		};
70
71		/*
72		 * Attempting to enable these devices causes a "synchronous
73		 * external abort". Suspected cause is that the debug power
74		 * domain is not enabled by default on this device.
75		 * Disable these devices for now to avoid the crash.
76		 *
77		 * See: https://lore.kernel.org/linux-arm-msm/20190618202623.GA53651@gerhold.net/
78		 */
79		tpiu@820000 { status = "disabled"; };
80		funnel@821000 { status = "disabled"; };
81		replicator@824000 { status = "disabled"; };
82		etf@825000 { status = "disabled"; };
83		etr@826000 { status = "disabled"; };
84		funnel@841000 { status = "disabled"; };
85		debug@850000 { status = "disabled"; };
86		debug@852000 { status = "disabled"; };
87		debug@854000 { status = "disabled"; };
88		debug@856000 { status = "disabled"; };
89		etm@85c000 { status = "disabled"; };
90		etm@85d000 { status = "disabled"; };
91		etm@85e000 { status = "disabled"; };
92		etm@85f000 { status = "disabled"; };
93	};
94
95	gpio-keys {
96		compatible = "gpio-keys";
97
98		pinctrl-names = "default";
99		pinctrl-0 = <&gpio_keys_default>;
100
101		label = "GPIO Buttons";
102
103		volume-up {
104			label = "Volume Up";
105			gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
106			linux,code = <KEY_VOLUMEUP>;
107		};
108
109		home {
110			label = "Home";
111			gpios = <&msmgpio 109 GPIO_ACTIVE_LOW>;
112			linux,code = <KEY_HOMEPAGE>;
113		};
114	};
115
116	gpio-hall-sensor {
117		compatible = "gpio-keys";
118
119		pinctrl-names = "default";
120		pinctrl-0 = <&gpio_hall_sensor_default>;
121
122		label = "GPIO Hall Effect Sensor";
123
124		hall-sensor {
125			label = "Hall Effect Sensor";
126			gpios = <&msmgpio 52 GPIO_ACTIVE_LOW>;
127			linux,input-type = <EV_SW>;
128			linux,code = <SW_LID>;
129			linux,can-disable;
130		};
131	};
132
133	i2c-muic {
134		compatible = "i2c-gpio";
135		sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
136		scl-gpios = <&msmgpio 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
137
138		#address-cells = <1>;
139		#size-cells = <0>;
140
141		muic: sm5502@25 {
142			compatible = "siliconmitus,sm5502-muic";
143
144			reg = <0x25>;
145			interrupt-parent = <&msmgpio>;
146			interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
147
148			pinctrl-names = "default";
149			pinctrl-0 = <&muic_int_default>;
150		};
151	};
152};
153
154&msmgpio {
155	gpio_keys_default: gpio_keys_default {
156		pinmux {
157			function = "gpio";
158			pins = "gpio107", "gpio109";
159		};
160		pinconf {
161			pins = "gpio107", "gpio109";
162			drive-strength = <2>;
163			bias-pull-up;
164		};
165	};
166
167	gpio_hall_sensor_default: gpio_hall_sensor_default {
168		pinmux {
169			function = "gpio";
170			pins = "gpio52";
171		};
172		pinconf {
173			pins = "gpio52";
174			drive-strength = <2>;
175			bias-disable;
176		};
177	};
178
179	muic_int_default: muic_int_default {
180		pinmux {
181			function = "gpio";
182			pins = "gpio12";
183		};
184		pinconf {
185			pins = "gpio12";
186			drive-strength = <2>;
187			bias-disable;
188		};
189	};
190};
191
192&smd_rpm_regulators {
193	vdd_l1_l2_l3-supply = <&pm8916_s3>;
194	vdd_l4_l5_l6-supply = <&pm8916_s4>;
195	vdd_l7-supply = <&pm8916_s4>;
196
197	s1 {
198		regulator-min-microvolt = <500000>;
199		regulator-max-microvolt = <1300000>;
200	};
201
202	s3 {
203		regulator-min-microvolt = <1200000>;
204		regulator-max-microvolt = <1300000>;
205	};
206
207	s4 {
208		regulator-min-microvolt = <1800000>;
209		regulator-max-microvolt = <2100000>;
210	};
211
212	l1 {
213		regulator-min-microvolt = <1225000>;
214		regulator-max-microvolt = <1225000>;
215	};
216
217	l2 {
218		regulator-min-microvolt = <1200000>;
219		regulator-max-microvolt = <1200000>;
220	};
221
222	l3 {
223		regulator-min-microvolt = <500000>;
224		regulator-max-microvolt = <1287500>;
225	};
226
227	l4 {
228		regulator-min-microvolt = <2050000>;
229		regulator-max-microvolt = <2050000>;
230	};
231
232	l5 {
233		regulator-min-microvolt = <1800000>;
234		regulator-max-microvolt = <1800000>;
235	};
236
237	l6 {
238		regulator-min-microvolt = <1800000>;
239		regulator-max-microvolt = <1800000>;
240	};
241
242	l7 {
243		regulator-min-microvolt = <1800000>;
244		regulator-max-microvolt = <1800000>;
245	};
246
247	l8 {
248		regulator-min-microvolt = <2850000>;
249		regulator-max-microvolt = <2900000>;
250	};
251
252	l9 {
253		regulator-min-microvolt = <3300000>;
254		regulator-max-microvolt = <3300000>;
255	};
256
257	l10 {
258		regulator-min-microvolt = <2700000>;
259		regulator-max-microvolt = <2800000>;
260	};
261
262	l11 {
263		regulator-min-microvolt = <1800000>;
264		regulator-max-microvolt = <2950000>;
265		regulator-allow-set-load;
266		regulator-system-load = <200000>;
267	};
268
269	l12 {
270		regulator-min-microvolt = <1800000>;
271		regulator-max-microvolt = <2950000>;
272	};
273
274	l13 {
275		regulator-min-microvolt = <3075000>;
276		regulator-max-microvolt = <3075000>;
277	};
278
279	l14 {
280		regulator-min-microvolt = <1800000>;
281		regulator-max-microvolt = <3300000>;
282	};
283
284	l15 {
285		regulator-min-microvolt = <1800000>;
286		regulator-max-microvolt = <3300000>;
287	};
288
289	l16 {
290		regulator-min-microvolt = <1800000>;
291		regulator-max-microvolt = <3300000>;
292	};
293
294	l17 {
295		regulator-min-microvolt = <2850000>;
296		regulator-max-microvolt = <2850000>;
297	};
298
299	l18 {
300		regulator-min-microvolt = <2700000>;
301		regulator-max-microvolt = <2700000>;
302	};
303};
304
305&spmi_bus {
306	pm8916@0 {
307		pon@800 {
308			volume-down {
309				compatible = "qcom,pm8941-resin";
310				interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
311				bias-pull-up;
312				linux,code = <KEY_VOLUMEDOWN>;
313			};
314		};
315	};
316};
317