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