1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (c) 2019, Linaro Ltd.
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
10#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
11#include "sdm845.dtsi"
12#include "pm8998.dtsi"
13#include "pmi8998.dtsi"
14
15/ {
16	model = "Thundercomm Dragonboard 845c";
17	compatible = "thundercomm,db845c", "qcom,sdm845";
18
19	aliases {
20		serial0 = &uart9;
21		hsuart0 = &uart6;
22	};
23
24	chosen {
25		stdout-path = "serial0:115200n8";
26	};
27
28	dc12v: dc12v-regulator {
29		compatible = "regulator-fixed";
30		regulator-name = "DC12V";
31		regulator-min-microvolt = <12000000>;
32		regulator-max-microvolt = <12000000>;
33		regulator-always-on;
34	};
35
36	gpio_keys {
37		compatible = "gpio-keys";
38		autorepeat;
39
40		pinctrl-names = "default";
41		pinctrl-0 = <&vol_up_pin_a>;
42
43		vol-up {
44			label = "Volume Up";
45			linux,code = <KEY_VOLUMEUP>;
46			gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
47		};
48	};
49
50	leds {
51		compatible = "gpio-leds";
52
53		user4 {
54			label = "green:user4";
55			gpios = <&pm8998_gpio 13 GPIO_ACTIVE_HIGH>;
56			linux,default-trigger = "panic-indicator";
57			default-state = "off";
58		};
59
60		wlan {
61			label = "yellow:wlan";
62			gpios = <&pm8998_gpio 9 GPIO_ACTIVE_HIGH>;
63			linux,default-trigger = "phy0tx";
64			default-state = "off";
65		};
66
67		bt {
68			label = "blue:bt";
69			gpios = <&pm8998_gpio 5 GPIO_ACTIVE_HIGH>;
70			linux,default-trigger = "bluetooth-power";
71			default-state = "off";
72		};
73	};
74
75	lt9611_1v8: lt9611-vdd18-regulator {
76		compatible = "regulator-fixed";
77		regulator-name = "LT9611_1V8";
78
79		vin-supply = <&vdc_5v>;
80		regulator-min-microvolt = <1800000>;
81		regulator-max-microvolt = <1800000>;
82
83		gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
84		enable-active-high;
85	};
86
87	lt9611_3v3: lt9611-3v3 {
88		compatible = "regulator-fixed";
89		regulator-name = "LT9611_3V3";
90
91		vin-supply = <&vdc_3v3>;
92		regulator-min-microvolt = <3300000>;
93		regulator-max-microvolt = <3300000>;
94
95		// TODO: make it possible to drive same GPIO from two clients
96		// gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
97		// enable-active-high;
98	};
99
100	pcie0_1p05v: pcie-0-1p05v-regulator {
101		compatible = "regulator-fixed";
102		regulator-name = "PCIE0_1.05V";
103
104		vin-supply = <&vbat>;
105		regulator-min-microvolt = <1050000>;
106		regulator-max-microvolt = <1050000>;
107
108		// TODO: make it possible to drive same GPIO from two clients
109		// gpio = <&tlmm 90 GPIO_ACTIVE_HIGH>;
110		// enable-active-high;
111	};
112
113	pcie0_3p3v_dual: vldo-3v3-regulator {
114		compatible = "regulator-fixed";
115		regulator-name = "VLDO_3V3";
116
117		vin-supply = <&vbat>;
118		regulator-min-microvolt = <3300000>;
119		regulator-max-microvolt = <3300000>;
120
121		gpio = <&tlmm 90 GPIO_ACTIVE_HIGH>;
122		enable-active-high;
123
124		pinctrl-names = "default";
125		pinctrl-0 = <&pcie0_pwren_state>;
126	};
127
128	v5p0_hdmiout: v5p0-hdmiout-regulator {
129		compatible = "regulator-fixed";
130		regulator-name = "V5P0_HDMIOUT";
131
132		vin-supply = <&vdc_5v>;
133		regulator-min-microvolt = <500000>;
134		regulator-max-microvolt = <500000>;
135
136		// TODO: make it possible to drive same GPIO from two clients
137		// gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
138		// enable-active-high;
139	};
140
141	vbat: vbat-regulator {
142		compatible = "regulator-fixed";
143		regulator-name = "VBAT";
144
145		vin-supply = <&dc12v>;
146		regulator-min-microvolt = <4200000>;
147		regulator-max-microvolt = <4200000>;
148		regulator-always-on;
149	};
150
151	vbat_som: vbat-som-regulator {
152		compatible = "regulator-fixed";
153		regulator-name = "VBAT_SOM";
154
155		vin-supply = <&dc12v>;
156		regulator-min-microvolt = <4200000>;
157		regulator-max-microvolt = <4200000>;
158		regulator-always-on;
159	};
160
161	vdc_3v3: vdc-3v3-regulator {
162		compatible = "regulator-fixed";
163		regulator-name = "VDC_3V3";
164		vin-supply = <&dc12v>;
165		regulator-min-microvolt = <3300000>;
166		regulator-max-microvolt = <3300000>;
167		regulator-always-on;
168	};
169
170	vdc_5v: vdc-5v-regulator {
171		compatible = "regulator-fixed";
172		regulator-name = "VDC_5V";
173
174		vin-supply = <&dc12v>;
175		regulator-min-microvolt = <500000>;
176		regulator-max-microvolt = <500000>;
177		regulator-always-on;
178	};
179
180	vreg_s4a_1p8: vreg-s4a-1p8 {
181		compatible = "regulator-fixed";
182		regulator-name = "vreg_s4a_1p8";
183
184		regulator-min-microvolt = <1800000>;
185		regulator-max-microvolt = <1800000>;
186		regulator-always-on;
187	};
188
189	vph_pwr: vph-pwr-regulator {
190		compatible = "regulator-fixed";
191		regulator-name = "vph_pwr";
192
193		vin-supply = <&vbat_som>;
194	};
195};
196
197&adsp_pas {
198	status = "okay";
199
200	firmware-name = "qcom/db845c/adsp.mdt";
201};
202
203&apps_rsc {
204	pm8998-rpmh-regulators {
205		compatible = "qcom,pm8998-rpmh-regulators";
206		qcom,pmic-id = "a";
207		vdd-s1-supply = <&vph_pwr>;
208		vdd-s2-supply = <&vph_pwr>;
209		vdd-s3-supply = <&vph_pwr>;
210		vdd-s4-supply = <&vph_pwr>;
211		vdd-s5-supply = <&vph_pwr>;
212		vdd-s6-supply = <&vph_pwr>;
213		vdd-s7-supply = <&vph_pwr>;
214		vdd-s8-supply = <&vph_pwr>;
215		vdd-s9-supply = <&vph_pwr>;
216		vdd-s10-supply = <&vph_pwr>;
217		vdd-s11-supply = <&vph_pwr>;
218		vdd-s12-supply = <&vph_pwr>;
219		vdd-s13-supply = <&vph_pwr>;
220		vdd-l1-l27-supply = <&vreg_s7a_1p025>;
221		vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
222		vdd-l3-l11-supply = <&vreg_s7a_1p025>;
223		vdd-l4-l5-supply = <&vreg_s7a_1p025>;
224		vdd-l6-supply = <&vph_pwr>;
225		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
226		vdd-l9-supply = <&vreg_bob>;
227		vdd-l10-l23-l25-supply = <&vreg_bob>;
228		vdd-l13-l19-l21-supply = <&vreg_bob>;
229		vdd-l16-l28-supply = <&vreg_bob>;
230		vdd-l18-l22-supply = <&vreg_bob>;
231		vdd-l20-l24-supply = <&vreg_bob>;
232		vdd-l26-supply = <&vreg_s3a_1p35>;
233		vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
234
235		vreg_s3a_1p35: smps3 {
236			regulator-min-microvolt = <1352000>;
237			regulator-max-microvolt = <1352000>;
238		};
239
240		vreg_s5a_2p04: smps5 {
241			regulator-min-microvolt = <1904000>;
242			regulator-max-microvolt = <2040000>;
243		};
244
245		vreg_s7a_1p025: smps7 {
246			regulator-min-microvolt = <900000>;
247			regulator-max-microvolt = <1028000>;
248		};
249
250		vreg_l1a_0p875: ldo1 {
251			regulator-min-microvolt = <880000>;
252			regulator-max-microvolt = <880000>;
253			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
254		};
255
256		vreg_l5a_0p8: ldo5 {
257			regulator-min-microvolt = <800000>;
258			regulator-max-microvolt = <800000>;
259			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
260		};
261
262		vreg_l12a_1p8: ldo12 {
263			regulator-min-microvolt = <1800000>;
264			regulator-max-microvolt = <1800000>;
265			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
266		};
267
268		vreg_l7a_1p8: ldo7 {
269			regulator-min-microvolt = <1800000>;
270			regulator-max-microvolt = <1800000>;
271			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
272		};
273
274		vreg_l13a_2p95: ldo13 {
275			regulator-min-microvolt = <1800000>;
276			regulator-max-microvolt = <2960000>;
277			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
278		};
279
280		vreg_l17a_1p3: ldo17 {
281			regulator-min-microvolt = <1304000>;
282			regulator-max-microvolt = <1304000>;
283			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
284		};
285
286		vreg_l20a_2p95: ldo20 {
287			regulator-min-microvolt = <2960000>;
288			regulator-max-microvolt = <2968000>;
289			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
290		};
291
292		vreg_l21a_2p95: ldo21 {
293			regulator-min-microvolt = <2960000>;
294			regulator-max-microvolt = <2968000>;
295			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
296		};
297
298		vreg_l24a_3p075: ldo24 {
299			regulator-min-microvolt = <3088000>;
300			regulator-max-microvolt = <3088000>;
301			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
302		};
303
304		vreg_l25a_3p3: ldo25 {
305			regulator-min-microvolt = <3300000>;
306			regulator-max-microvolt = <3312000>;
307			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
308		};
309
310		vreg_l26a_1p2: ldo26 {
311			regulator-min-microvolt = <1200000>;
312			regulator-max-microvolt = <1200000>;
313			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
314		};
315	};
316
317	pmi8998-rpmh-regulators {
318		compatible = "qcom,pmi8998-rpmh-regulators";
319		qcom,pmic-id = "b";
320
321		vdd-bob-supply = <&vph_pwr>;
322
323		vreg_bob: bob {
324			regulator-min-microvolt = <3312000>;
325			regulator-max-microvolt = <3600000>;
326			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
327			regulator-allow-bypass;
328		};
329	};
330};
331
332&cdsp_pas {
333	status = "okay";
334	firmware-name = "qcom/db845c/cdsp.mdt";
335};
336
337&gcc {
338	protected-clocks = <GCC_QSPI_CORE_CLK>,
339			   <GCC_QSPI_CORE_CLK_SRC>,
340			   <GCC_QSPI_CNOC_PERIPH_AHB_CLK>;
341};
342
343&pm8998_gpio {
344	vol_up_pin_a: vol-up-active {
345		pins = "gpio6";
346		function = "normal";
347		input-enable;
348		bias-pull-up;
349		qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
350	};
351};
352
353&pm8998_pon {
354	resin {
355		compatible = "qcom,pm8941-resin";
356		interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
357		debounce = <15625>;
358		bias-pull-up;
359		linux,code = <KEY_VOLUMEDOWN>;
360	};
361};
362
363&qupv3_id_0 {
364	status = "okay";
365};
366
367&qupv3_id_1 {
368	status = "okay";
369};
370
371&sdhc_2 {
372	status = "okay";
373
374	pinctrl-names = "default";
375	pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
376
377	vmmc-supply = <&vreg_l21a_2p95>;
378	vqmmc-supply = <&vreg_l13a_2p95>;
379
380	bus-width = <4>;
381	cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
382};
383
384&tlmm {
385	pcie0_pwren_state: pcie0-pwren {
386		pins = "gpio90";
387		function = "gpio";
388
389		drive-strength = <2>;
390		bias-disable;
391	};
392
393	sdc2_default_state: sdc2-default {
394		clk {
395			pins = "sdc2_clk";
396			bias-disable;
397
398			/*
399			 * It seems that mmc_test reports errors if drive
400			 * strength is not 16 on clk, cmd, and data pins.
401			 */
402			drive-strength = <16>;
403		};
404
405		cmd {
406			pins = "sdc2_cmd";
407			bias-pull-up;
408			drive-strength = <10>;
409		};
410
411		data {
412			pins = "sdc2_data";
413			bias-pull-up;
414			drive-strength = <10>;
415		};
416	};
417
418	sdc2_card_det_n: sd-card-det-n {
419		pins = "gpio126";
420		function = "gpio";
421		bias-pull-up;
422	};
423};
424
425&uart6 {
426	status = "okay";
427
428	bluetooth {
429		compatible = "qcom,wcn3990-bt";
430
431		vddio-supply = <&vreg_s4a_1p8>;
432		vddxo-supply = <&vreg_l7a_1p8>;
433		vddrf-supply = <&vreg_l17a_1p3>;
434		vddch0-supply = <&vreg_l25a_3p3>;
435		max-speed = <3200000>;
436	};
437};
438
439&uart9 {
440	status = "okay";
441};
442
443&usb_1 {
444	status = "okay";
445};
446
447&usb_1_dwc3 {
448	dr_mode = "peripheral";
449};
450
451&usb_1_hsphy {
452	status = "okay";
453
454	vdd-supply = <&vreg_l1a_0p875>;
455	vdda-pll-supply = <&vreg_l12a_1p8>;
456	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
457
458	qcom,imp-res-offset-value = <8>;
459	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
460	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
461	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
462};
463
464&usb_1_qmpphy {
465	status = "okay";
466
467	vdda-phy-supply = <&vreg_l26a_1p2>;
468	vdda-pll-supply = <&vreg_l1a_0p875>;
469};
470
471&usb_2 {
472	status = "okay";
473};
474
475&usb_2_dwc3 {
476	dr_mode = "host";
477};
478
479&usb_2_hsphy {
480	status = "okay";
481
482	vdd-supply = <&vreg_l1a_0p875>;
483	vdda-pll-supply = <&vreg_l12a_1p8>;
484	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
485
486	qcom,imp-res-offset-value = <8>;
487	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_22_8_MA>;
488};
489
490&usb_2_qmpphy {
491	status = "okay";
492
493	vdda-phy-supply = <&vreg_l26a_1p2>;
494	vdda-pll-supply = <&vreg_l1a_0p875>;
495};
496
497&ufs_mem_hc {
498	status = "okay";
499
500	vcc-supply = <&vreg_l20a_2p95>;
501	vcc-max-microamp = <800000>;
502};
503
504&ufs_mem_phy {
505	status = "okay";
506
507	vdda-phy-supply = <&vreg_l1a_0p875>;
508	vdda-pll-supply = <&vreg_l26a_1p2>;
509};
510
511&wifi {
512	status = "okay";
513
514	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
515	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
516	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
517	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
518};
519
520/* PINCTRL - additions to nodes defined in sdm845.dtsi */
521
522&qup_uart6_default {
523	pinmux {
524		pins = "gpio45", "gpio46", "gpio47", "gpio48";
525		function = "qup6";
526	};
527
528	cts {
529		pins = "gpio45";
530		bias-disable;
531	};
532
533	rts-tx {
534		pins = "gpio46", "gpio47";
535		drive-strength = <2>;
536		bias-disable;
537	};
538
539	rx {
540		pins = "gpio48";
541		bias-pull-up;
542	};
543};
544
545&qup_uart9_default {
546	pinconf-tx {
547		pins = "gpio4";
548		drive-strength = <2>;
549		bias-disable;
550	};
551
552	pinconf-rx {
553		pins = "gpio5";
554		drive-strength = <2>;
555		bias-pull-up;
556	};
557};
558