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		vreg_lvs1a_1p8: lvs1 {
317			regulator-min-microvolt = <1800000>;
318			regulator-max-microvolt = <1800000>;
319			regulator-always-on;
320		};
321
322		vreg_lvs2a_1p8: lvs2 {
323			regulator-min-microvolt = <1800000>;
324			regulator-max-microvolt = <1800000>;
325			regulator-always-on;
326		};
327	};
328
329	pmi8998-rpmh-regulators {
330		compatible = "qcom,pmi8998-rpmh-regulators";
331		qcom,pmic-id = "b";
332
333		vdd-bob-supply = <&vph_pwr>;
334
335		vreg_bob: bob {
336			regulator-min-microvolt = <3312000>;
337			regulator-max-microvolt = <3600000>;
338			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
339			regulator-allow-bypass;
340		};
341	};
342};
343
344&cdsp_pas {
345	status = "okay";
346	firmware-name = "qcom/db845c/cdsp.mdt";
347};
348
349&gcc {
350	protected-clocks = <GCC_QSPI_CORE_CLK>,
351			   <GCC_QSPI_CORE_CLK_SRC>,
352			   <GCC_QSPI_CNOC_PERIPH_AHB_CLK>;
353};
354
355&pm8998_gpio {
356	vol_up_pin_a: vol-up-active {
357		pins = "gpio6";
358		function = "normal";
359		input-enable;
360		bias-pull-up;
361		qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
362	};
363};
364
365&pm8998_pon {
366	resin {
367		compatible = "qcom,pm8941-resin";
368		interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
369		debounce = <15625>;
370		bias-pull-up;
371		linux,code = <KEY_VOLUMEDOWN>;
372	};
373};
374
375&qupv3_id_0 {
376	status = "okay";
377};
378
379&qupv3_id_1 {
380	status = "okay";
381};
382
383&sdhc_2 {
384	status = "okay";
385
386	pinctrl-names = "default";
387	pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
388
389	vmmc-supply = <&vreg_l21a_2p95>;
390	vqmmc-supply = <&vreg_l13a_2p95>;
391
392	bus-width = <4>;
393	cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
394};
395
396&tlmm {
397	pcie0_pwren_state: pcie0-pwren {
398		pins = "gpio90";
399		function = "gpio";
400
401		drive-strength = <2>;
402		bias-disable;
403	};
404
405	sdc2_default_state: sdc2-default {
406		clk {
407			pins = "sdc2_clk";
408			bias-disable;
409
410			/*
411			 * It seems that mmc_test reports errors if drive
412			 * strength is not 16 on clk, cmd, and data pins.
413			 */
414			drive-strength = <16>;
415		};
416
417		cmd {
418			pins = "sdc2_cmd";
419			bias-pull-up;
420			drive-strength = <10>;
421		};
422
423		data {
424			pins = "sdc2_data";
425			bias-pull-up;
426			drive-strength = <10>;
427		};
428	};
429
430	sdc2_card_det_n: sd-card-det-n {
431		pins = "gpio126";
432		function = "gpio";
433		bias-pull-up;
434	};
435};
436
437&uart6 {
438	status = "okay";
439
440	bluetooth {
441		compatible = "qcom,wcn3990-bt";
442
443		vddio-supply = <&vreg_s4a_1p8>;
444		vddxo-supply = <&vreg_l7a_1p8>;
445		vddrf-supply = <&vreg_l17a_1p3>;
446		vddch0-supply = <&vreg_l25a_3p3>;
447		max-speed = <3200000>;
448	};
449};
450
451&uart9 {
452	status = "okay";
453};
454
455&usb_1 {
456	status = "okay";
457};
458
459&usb_1_dwc3 {
460	dr_mode = "peripheral";
461};
462
463&usb_1_hsphy {
464	status = "okay";
465
466	vdd-supply = <&vreg_l1a_0p875>;
467	vdda-pll-supply = <&vreg_l12a_1p8>;
468	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
469
470	qcom,imp-res-offset-value = <8>;
471	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
472	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
473	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
474};
475
476&usb_1_qmpphy {
477	status = "okay";
478
479	vdda-phy-supply = <&vreg_l26a_1p2>;
480	vdda-pll-supply = <&vreg_l1a_0p875>;
481};
482
483&usb_2 {
484	status = "okay";
485};
486
487&usb_2_dwc3 {
488	dr_mode = "host";
489};
490
491&usb_2_hsphy {
492	status = "okay";
493
494	vdd-supply = <&vreg_l1a_0p875>;
495	vdda-pll-supply = <&vreg_l12a_1p8>;
496	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
497
498	qcom,imp-res-offset-value = <8>;
499	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_22_8_MA>;
500};
501
502&usb_2_qmpphy {
503	status = "okay";
504
505	vdda-phy-supply = <&vreg_l26a_1p2>;
506	vdda-pll-supply = <&vreg_l1a_0p875>;
507};
508
509&ufs_mem_hc {
510	status = "okay";
511
512	reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
513
514	vcc-supply = <&vreg_l20a_2p95>;
515	vcc-max-microamp = <800000>;
516};
517
518&ufs_mem_phy {
519	status = "okay";
520
521	vdda-phy-supply = <&vreg_l1a_0p875>;
522	vdda-pll-supply = <&vreg_l26a_1p2>;
523};
524
525&wifi {
526	status = "okay";
527
528	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
529	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
530	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
531	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
532};
533
534/* PINCTRL - additions to nodes defined in sdm845.dtsi */
535
536&qup_uart6_default {
537	pinmux {
538		pins = "gpio45", "gpio46", "gpio47", "gpio48";
539		function = "qup6";
540	};
541
542	cts {
543		pins = "gpio45";
544		bias-disable;
545	};
546
547	rts-tx {
548		pins = "gpio46", "gpio47";
549		drive-strength = <2>;
550		bias-disable;
551	};
552
553	rx {
554		pins = "gpio48";
555		bias-pull-up;
556	};
557};
558
559&qup_uart9_default {
560	pinconf-tx {
561		pins = "gpio4";
562		drive-strength = <2>;
563		bias-disable;
564	};
565
566	pinconf-rx {
567		pins = "gpio5";
568		drive-strength = <2>;
569		bias-pull-up;
570	};
571};
572