1// SPDX-License-Identifier: GPL-2.0
2// Copyright (c) 2018, Linaro Limited
3
4#include <dt-bindings/gpio/gpio.h>
5#include "qcs404.dtsi"
6#include "pms405.dtsi"
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
9
10/ {
11	aliases {
12		serial0 = &blsp1_uart2;
13		serial1 = &blsp1_uart3;
14	};
15
16	chosen {
17		stdout-path = "serial0";
18	};
19
20	vph_pwr: vph-pwr-regulator {
21		compatible = "regulator-fixed";
22		regulator-name = "vph_pwr";
23		regulator-always-on;
24		regulator-boot-on;
25	};
26
27	vdd_ch0_3p3:
28	vdd_esmps3_3p3: vdd-esmps3-3p3-regulator {
29		compatible = "regulator-fixed";
30		regulator-name = "eSMPS3_3P3";
31
32		regulator-min-microvolt = <3300000>;
33		regulator-max-microvolt = <3300000>;
34		regulator-always-on;
35	};
36
37	usb3_vbus_reg: regulator-usb3-vbus {
38		compatible = "regulator-fixed";
39		regulator-name = "VBUS_BOOST_5V";
40		regulator-min-microvolt = <5000000>;
41		regulator-max-microvolt = <5000000>;
42		gpio = <&pms405_gpios 3 GPIO_ACTIVE_HIGH>;
43		pinctrl-names = "default";
44		pinctrl-0 = <&usb_vbus_boost_pin>;
45		vin-supply = <&vph_pwr>;
46		enable-active-high;
47
48		/* TODO: Drop this when introducing role switching */
49		regulator-always-on;
50	};
51};
52
53&blsp1_uart3 {
54	status = "okay";
55
56	bluetooth {
57		compatible = "qcom,wcn3990-bt";
58		vddio-supply = <&vreg_l6_1p8>;
59		vddxo-supply = <&vreg_l5_1p8>;
60		vddrf-supply = <&vreg_l1_1p3>;
61		vddch0-supply = <&vdd_ch0_3p3>;
62
63		local-bd-address = [ 02 00 00 00 5a ad ];
64
65		max-speed = <3200000>;
66	};
67};
68
69&blsp1_dma {
70	qcom,controlled-remotely;
71};
72
73&blsp2_dma {
74	qcom,controlled-remotely;
75};
76
77&gcc {
78	protected-clocks = <GCC_BIMC_CDSP_CLK>,
79			   <GCC_CDSP_CFG_AHB_CLK>,
80			   <GCC_CDSP_BIMC_CLK_SRC>,
81			   <GCC_CDSP_TBU_CLK>,
82			   <141>, /* GCC_WCSS_Q6_AHB_CLK */
83			   <142>; /* GCC_WCSS_Q6_AXIM_CLK */
84};
85
86&pms405_spmi_regulators {
87	vdd_s3-supply = <&vph_pwr>;
88
89	pms405_s3: s3 {
90		regulator-always-on;
91		regulator-boot-on;
92		regulator-name = "vdd_apc";
93		regulator-initial-mode = <1>;
94		regulator-min-microvolt = <1048000>;
95		regulator-max-microvolt = <1384000>;
96	};
97};
98
99&pcie {
100	status = "okay";
101
102	perst-gpio = <&tlmm 43 GPIO_ACTIVE_LOW>;
103
104	pinctrl-names = "default";
105	pinctrl-0 = <&perst_state>;
106};
107
108&pcie_phy {
109	status = "okay";
110
111	vdda-vp-supply = <&vreg_l3_1p05>;
112	vdda-vph-supply = <&vreg_l5_1p8>;
113};
114
115&remoteproc_adsp {
116	status = "okay";
117};
118
119&remoteproc_cdsp {
120	status = "okay";
121};
122
123&remoteproc_wcss {
124	status = "okay";
125};
126
127&rpm_requests {
128	pms405-regulators {
129		compatible = "qcom,rpm-pms405-regulators";
130
131		vdd_s1-supply = <&vph_pwr>;
132		vdd_s2-supply = <&vph_pwr>;
133		vdd_s3-supply = <&vph_pwr>;
134		vdd_s4-supply = <&vph_pwr>;
135		vdd_s5-supply = <&vph_pwr>;
136		vdd_l1_l2-supply = <&vreg_s5_1p35>;
137		vdd_l3_l8-supply = <&vreg_s5_1p35>;
138		vdd_l4-supply = <&vreg_s5_1p35>;
139		vdd_l5_l6-supply = <&vreg_s4_1p8>;
140		vdd_l7-supply = <&vph_pwr>;
141		vdd_l9-supply = <&vreg_s5_1p35>;
142		vdd_l10_l11_l12_l13-supply = <&vph_pwr>;
143
144		vreg_s4_1p8: s4 {
145			regulator-min-microvolt = <1728000>;
146			regulator-max-microvolt = <1920000>;
147		};
148
149		vreg_s5_1p35: s5 {
150			regulator-min-microvolt = <1352000>;
151			regulator-max-microvolt = <1352000>;
152		};
153
154		vreg_l1_1p3: l1 {
155			regulator-min-microvolt = <1240000>;
156			regulator-max-microvolt = <1352000>;
157		};
158
159		vreg_l2_1p275: l2 {
160			regulator-min-microvolt = <1048000>;
161			regulator-max-microvolt = <1280000>;
162		};
163
164		vreg_l3_1p05: l3 {
165			regulator-min-microvolt = <1048000>;
166			regulator-max-microvolt = <1160000>;
167		};
168
169		vreg_l4_1p2: l4 {
170			regulator-min-microvolt = <1144000>;
171			regulator-max-microvolt = <1256000>;
172		};
173
174		vreg_l5_1p8: l5 {
175			regulator-min-microvolt = <1800000>;
176			regulator-max-microvolt = <1800000>;
177		};
178
179		vreg_l6_1p8: l6 {
180			regulator-min-microvolt = <1800000>;
181			regulator-max-microvolt = <1800000>;
182			regulator-always-on;
183		};
184
185		vreg_l7_1p8: l7 {
186			regulator-min-microvolt = <1616000>;
187			regulator-max-microvolt = <3000000>;
188		};
189
190		vreg_l8_1p2: l8 {
191			regulator-min-microvolt = <1136000>;
192			regulator-max-microvolt = <1352000>;
193		};
194
195		vreg_l10_3p3: l10 {
196			regulator-min-microvolt = <2936000>;
197			regulator-max-microvolt = <3088000>;
198		};
199
200		vreg_l11_sdc2: l11 {
201			regulator-min-microvolt = <2696000>;
202			regulator-max-microvolt = <3304000>;
203		};
204
205		vreg_l12_3p3: l12 {
206			regulator-min-microvolt = <3050000>;
207			regulator-max-microvolt = <3300000>;
208		};
209
210		vreg_l13_3p3: l13 {
211			regulator-min-microvolt = <3000000>;
212			regulator-max-microvolt = <3300000>;
213		};
214	};
215};
216
217&sdcc1 {
218	status = "okay";
219
220	supports-cqe;
221	mmc-ddr-1_8v;
222	mmc-hs400-1_8v;
223	bus-width = <8>;
224	non-removable;
225
226	pinctrl-names = "default", "sleep";
227	pinctrl-0 = <&sdc1_on>;
228	pinctrl-1 = <&sdc1_off>;
229};
230
231&tlmm {
232	perst_state: perst {
233		pins = "gpio43";
234		function = "gpio";
235
236		drive-strength = <2>;
237		bias-disable;
238		output-low;
239	};
240
241	sdc1_on: sdc1-on {
242		clk {
243			pins = "sdc1_clk";
244			bias-disable;
245			drive-strength = <16>;
246		};
247
248		cmd {
249			pins = "sdc1_cmd";
250			bias-pull-up;
251			drive-strength = <10>;
252		};
253
254		data {
255			pins = "sdc1_data";
256			bias-pull-up;
257			drive-strength = <10>;
258		};
259
260		rclk {
261			pins = "sdc1_rclk";
262			bias-pull-down;
263		};
264	};
265
266	sdc1_off: sdc1-off {
267		clk {
268			pins = "sdc1_clk";
269			bias-disable;
270			drive-strength = <2>;
271		};
272
273		cmd {
274			pins = "sdc1_cmd";
275			bias-pull-up;
276			drive-strength = <2>;
277		};
278
279		data {
280			pins = "sdc1_data";
281			bias-pull-up;
282			drive-strength = <2>;
283		};
284
285		rclk {
286			pins = "sdc1_rclk";
287			bias-pull-down;
288		};
289	};
290
291	usb3_id_pin: usb3-id-pin {
292		pinmux {
293			pins = "gpio116";
294			function = "gpio";
295		};
296
297		pinconf {
298			pins = "gpio116";
299			drive-strength = <2>;
300			bias-pull-up;
301			input-enable;
302		};
303	};
304};
305
306&pms405_gpios {
307	usb_vbus_boost_pin: usb-vbus-boost-state {
308		pinconf {
309			pins = "gpio3";
310			function = PMIC_GPIO_FUNC_NORMAL;
311			output-low;
312			power-source = <1>;
313		};
314	};
315	usb3_vbus_pin: usb3-vbus-state {
316		pinconf {
317			pins = "gpio12";
318			function = PMIC_GPIO_FUNC_NORMAL;
319			input-enable;
320			bias-pull-down;
321			power-source = <1>;
322		};
323	};
324};
325
326&usb2 {
327	status = "okay";
328};
329
330&usb2_phy_sec {
331	vdd-supply = <&vreg_l4_1p2>;
332	vdda1p8-supply = <&vreg_l5_1p8>;
333	vdda3p3-supply = <&vreg_l12_3p3>;
334	status = "okay";
335};
336
337&usb3 {
338	status = "okay";
339
340};
341
342&usb3_dwc3 {
343	dr_mode = "host";
344};
345
346&usb2_phy_prim {
347	vdd-supply = <&vreg_l4_1p2>;
348	vdda1p8-supply = <&vreg_l5_1p8>;
349	vdda3p3-supply = <&vreg_l12_3p3>;
350	status = "okay";
351};
352
353&usb3_phy {
354	vdd-supply = <&vreg_l3_1p05>;
355	vdda1p8-supply = <&vreg_l5_1p8>;
356	status = "okay";
357};
358
359&wifi {
360	status = "okay";
361	vdd-0.8-cx-mx-supply = <&vreg_l2_1p275>;
362	vdd-1.8-xo-supply = <&vreg_l5_1p8>;
363	vdd-1.3-rfa-supply = <&vreg_l1_1p3>;
364};
365
366/* PINCTRL - additions to nodes defined in qcs404.dtsi */
367
368&blsp1_uart2_default {
369	rx {
370		drive-strength = <2>;
371		bias-disable;
372	};
373
374	tx {
375		drive-strength = <2>;
376		bias-disable;
377	};
378};
379
380&blsp1_uart3_default {
381	cts {
382		pins = "gpio84";
383		bias-disable;
384	};
385
386	rts-tx {
387		pins = "gpio85", "gpio82";
388		drive-strength = <2>;
389		bias-disable;
390	};
391
392	rx {
393		pins = "gpio83";
394		bias-pull-up;
395	};
396};
397