1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2019, Linaro Ltd.
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 <dt-bindings/sound/qcom,q6afe.h>
12 #include <dt-bindings/sound/qcom,q6asm.h>
13 #include "sdm845.dtsi"
14 #include "pm8998.dtsi"
15 #include "pmi8998.dtsi"
18 model = "Thundercomm Dragonboard 845c";
19 compatible = "thundercomm,db845c", "qcom,sdm845";
27 stdout-path = "serial0:115200n8";
30 dc12v: dc12v-regulator {
31 compatible = "regulator-fixed";
32 regulator-name = "DC12V";
33 regulator-min-microvolt = <12000000>;
34 regulator-max-microvolt = <12000000>;
39 compatible = "gpio-keys";
42 pinctrl-names = "default";
43 pinctrl-0 = <&vol_up_pin_a>;
47 linux,code = <KEY_VOLUMEUP>;
48 gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
53 compatible = "gpio-leds";
56 label = "green:user4";
57 gpios = <&pm8998_gpio 13 GPIO_ACTIVE_HIGH>;
58 linux,default-trigger = "panic-indicator";
59 default-state = "off";
63 label = "yellow:wlan";
64 gpios = <&pm8998_gpio 9 GPIO_ACTIVE_HIGH>;
65 linux,default-trigger = "phy0tx";
66 default-state = "off";
71 gpios = <&pm8998_gpio 5 GPIO_ACTIVE_HIGH>;
72 linux,default-trigger = "bluetooth-power";
73 default-state = "off";
77 lt9611_1v8: lt9611-vdd18-regulator {
78 compatible = "regulator-fixed";
79 regulator-name = "LT9611_1V8";
81 vin-supply = <&vdc_5v>;
82 regulator-min-microvolt = <1800000>;
83 regulator-max-microvolt = <1800000>;
85 gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
89 lt9611_3v3: lt9611-3v3 {
90 compatible = "regulator-fixed";
91 regulator-name = "LT9611_3V3";
93 vin-supply = <&vdc_3v3>;
94 regulator-min-microvolt = <3300000>;
95 regulator-max-microvolt = <3300000>;
97 // TODO: make it possible to drive same GPIO from two clients
98 // gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
99 // enable-active-high;
102 pcie0_1p05v: pcie-0-1p05v-regulator {
103 compatible = "regulator-fixed";
104 regulator-name = "PCIE0_1.05V";
106 vin-supply = <&vbat>;
107 regulator-min-microvolt = <1050000>;
108 regulator-max-microvolt = <1050000>;
110 // TODO: make it possible to drive same GPIO from two clients
111 // gpio = <&tlmm 90 GPIO_ACTIVE_HIGH>;
112 // enable-active-high;
115 cam0_dvdd_1v2: reg_cam0_dvdd_1v2 {
116 compatible = "regulator-fixed";
117 regulator-name = "CAM0_DVDD_1V2";
118 regulator-min-microvolt = <1200000>;
119 regulator-max-microvolt = <1200000>;
121 gpio = <&pm8998_gpio 12 GPIO_ACTIVE_HIGH>;
122 pinctrl-names = "default";
123 pinctrl-0 = <&cam0_dvdd_1v2_en_default>;
124 vin-supply = <&vbat>;
127 cam0_avdd_2v8: reg_cam0_avdd_2v8 {
128 compatible = "regulator-fixed";
129 regulator-name = "CAM0_AVDD_2V8";
130 regulator-min-microvolt = <2800000>;
131 regulator-max-microvolt = <2800000>;
133 gpio = <&pm8998_gpio 10 GPIO_ACTIVE_HIGH>;
134 pinctrl-names = "default";
135 pinctrl-0 = <&cam0_avdd_2v8_en_default>;
136 vin-supply = <&vbat>;
139 /* This regulator is enabled when the VREG_LVS1A_1P8 trace is enabled */
140 cam3_avdd_2v8: reg_cam3_avdd_2v8 {
141 compatible = "regulator-fixed";
142 regulator-name = "CAM3_AVDD_2V8";
143 regulator-min-microvolt = <2800000>;
144 regulator-max-microvolt = <2800000>;
146 vin-supply = <&vbat>;
149 pcie0_3p3v_dual: vldo-3v3-regulator {
150 compatible = "regulator-fixed";
151 regulator-name = "VLDO_3V3";
153 vin-supply = <&vbat>;
154 regulator-min-microvolt = <3300000>;
155 regulator-max-microvolt = <3300000>;
157 gpio = <&tlmm 90 GPIO_ACTIVE_HIGH>;
160 pinctrl-names = "default";
161 pinctrl-0 = <&pcie0_pwren_state>;
164 v5p0_hdmiout: v5p0-hdmiout-regulator {
165 compatible = "regulator-fixed";
166 regulator-name = "V5P0_HDMIOUT";
168 vin-supply = <&vdc_5v>;
169 regulator-min-microvolt = <500000>;
170 regulator-max-microvolt = <500000>;
172 // TODO: make it possible to drive same GPIO from two clients
173 // gpio = <&tlmm 89 GPIO_ACTIVE_HIGH>;
174 // enable-active-high;
177 vbat: vbat-regulator {
178 compatible = "regulator-fixed";
179 regulator-name = "VBAT";
181 vin-supply = <&dc12v>;
182 regulator-min-microvolt = <4200000>;
183 regulator-max-microvolt = <4200000>;
187 vbat_som: vbat-som-regulator {
188 compatible = "regulator-fixed";
189 regulator-name = "VBAT_SOM";
191 vin-supply = <&dc12v>;
192 regulator-min-microvolt = <4200000>;
193 regulator-max-microvolt = <4200000>;
197 vdc_3v3: vdc-3v3-regulator {
198 compatible = "regulator-fixed";
199 regulator-name = "VDC_3V3";
200 vin-supply = <&dc12v>;
201 regulator-min-microvolt = <3300000>;
202 regulator-max-microvolt = <3300000>;
206 vdc_5v: vdc-5v-regulator {
207 compatible = "regulator-fixed";
208 regulator-name = "VDC_5V";
210 vin-supply = <&dc12v>;
211 regulator-min-microvolt = <500000>;
212 regulator-max-microvolt = <500000>;
216 vreg_s4a_1p8: vreg-s4a-1p8 {
217 compatible = "regulator-fixed";
218 regulator-name = "vreg_s4a_1p8";
220 regulator-min-microvolt = <1800000>;
221 regulator-max-microvolt = <1800000>;
225 vph_pwr: vph-pwr-regulator {
226 compatible = "regulator-fixed";
227 regulator-name = "vph_pwr";
229 vin-supply = <&vbat_som>;
236 firmware-name = "qcom/sdm845/adsp.mdt";
240 pm8998-rpmh-regulators {
241 compatible = "qcom,pm8998-rpmh-regulators";
243 vdd-s1-supply = <&vph_pwr>;
244 vdd-s2-supply = <&vph_pwr>;
245 vdd-s3-supply = <&vph_pwr>;
246 vdd-s4-supply = <&vph_pwr>;
247 vdd-s5-supply = <&vph_pwr>;
248 vdd-s6-supply = <&vph_pwr>;
249 vdd-s7-supply = <&vph_pwr>;
250 vdd-s8-supply = <&vph_pwr>;
251 vdd-s9-supply = <&vph_pwr>;
252 vdd-s10-supply = <&vph_pwr>;
253 vdd-s11-supply = <&vph_pwr>;
254 vdd-s12-supply = <&vph_pwr>;
255 vdd-s13-supply = <&vph_pwr>;
256 vdd-l1-l27-supply = <&vreg_s7a_1p025>;
257 vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
258 vdd-l3-l11-supply = <&vreg_s7a_1p025>;
259 vdd-l4-l5-supply = <&vreg_s7a_1p025>;
260 vdd-l6-supply = <&vph_pwr>;
261 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
262 vdd-l9-supply = <&vreg_bob>;
263 vdd-l10-l23-l25-supply = <&vreg_bob>;
264 vdd-l13-l19-l21-supply = <&vreg_bob>;
265 vdd-l16-l28-supply = <&vreg_bob>;
266 vdd-l18-l22-supply = <&vreg_bob>;
267 vdd-l20-l24-supply = <&vreg_bob>;
268 vdd-l26-supply = <&vreg_s3a_1p35>;
269 vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
271 vreg_s3a_1p35: smps3 {
272 regulator-min-microvolt = <1352000>;
273 regulator-max-microvolt = <1352000>;
276 vreg_s5a_2p04: smps5 {
277 regulator-min-microvolt = <1904000>;
278 regulator-max-microvolt = <2040000>;
281 vreg_s7a_1p025: smps7 {
282 regulator-min-microvolt = <900000>;
283 regulator-max-microvolt = <1028000>;
286 vreg_l1a_0p875: ldo1 {
287 regulator-min-microvolt = <880000>;
288 regulator-max-microvolt = <880000>;
289 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
293 regulator-min-microvolt = <800000>;
294 regulator-max-microvolt = <800000>;
295 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
298 vreg_l12a_1p8: ldo12 {
299 regulator-min-microvolt = <1800000>;
300 regulator-max-microvolt = <1800000>;
301 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
305 regulator-min-microvolt = <1800000>;
306 regulator-max-microvolt = <1800000>;
307 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
310 vreg_l13a_2p95: ldo13 {
311 regulator-min-microvolt = <1800000>;
312 regulator-max-microvolt = <2960000>;
313 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
316 vreg_l17a_1p3: ldo17 {
317 regulator-min-microvolt = <1304000>;
318 regulator-max-microvolt = <1304000>;
319 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
322 vreg_l20a_2p95: ldo20 {
323 regulator-min-microvolt = <2960000>;
324 regulator-max-microvolt = <2968000>;
325 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
328 vreg_l21a_2p95: ldo21 {
329 regulator-min-microvolt = <2960000>;
330 regulator-max-microvolt = <2968000>;
331 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
334 vreg_l24a_3p075: ldo24 {
335 regulator-min-microvolt = <3088000>;
336 regulator-max-microvolt = <3088000>;
337 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
340 vreg_l25a_3p3: ldo25 {
341 regulator-min-microvolt = <3300000>;
342 regulator-max-microvolt = <3312000>;
343 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
346 vreg_l26a_1p2: ldo26 {
347 regulator-min-microvolt = <1200000>;
348 regulator-max-microvolt = <1200000>;
349 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
352 vreg_lvs1a_1p8: lvs1 {
353 regulator-min-microvolt = <1800000>;
354 regulator-max-microvolt = <1800000>;
358 vreg_lvs2a_1p8: lvs2 {
359 regulator-min-microvolt = <1800000>;
360 regulator-max-microvolt = <1800000>;
365 pmi8998-rpmh-regulators {
366 compatible = "qcom,pmi8998-rpmh-regulators";
369 vdd-bob-supply = <&vph_pwr>;
372 regulator-min-microvolt = <3312000>;
373 regulator-max-microvolt = <3600000>;
374 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
375 regulator-allow-bypass;
382 firmware-name = "qcom/sdm845/cdsp.mdt";
386 protected-clocks = <GCC_QSPI_CORE_CLK>,
387 <GCC_QSPI_CORE_CLK_SRC>,
388 <GCC_QSPI_CNOC_PERIPH_AHB_CLK>;
393 memory-region = <&gpu_mem>;
394 firmware-name = "qcom/sdm845/a630_zap.mbn";
399 /* On Low speed expansion */
405 /* On Low speed expansion */
412 firmware-name = "qcom/sdm845/mba.mbn", "qcom/sdm845/modem.mbn";
417 perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
418 enable-gpio = <&tlmm 134 GPIO_ACTIVE_HIGH>;
420 vddpe-3v3-supply = <&pcie0_3p3v_dual>;
422 pinctrl-names = "default";
423 pinctrl-0 = <&pcie0_default_state>;
429 vdda-phy-supply = <&vreg_l1a_0p875>;
430 vdda-pll-supply = <&vreg_l26a_1p2>;
435 perst-gpio = <&tlmm 102 GPIO_ACTIVE_LOW>;
437 pinctrl-names = "default";
438 pinctrl-0 = <&pcie1_default_state>;
444 vdda-phy-supply = <&vreg_l1a_0p875>;
445 vdda-pll-supply = <&vreg_l26a_1p2>;
454 "PM_GPIO5_BLUE_BT_LED",
458 "PM_GPIO9_YEL_WIFI_LED",
462 "PM_GPIO13_GREEN_U4_LED",
477 cam0_dvdd_1v2_en_default: cam0-dvdd-1v2-en {
483 qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
486 cam0_avdd_2v8_en_default: cam0-avdd-2v8-en {
492 qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
495 vol_up_pin_a: vol-up-active {
500 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
506 compatible = "qcom,pm8941-resin";
507 interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
510 linux,code = <KEY_VOLUMEDOWN>;
514 /* QUAT I2S Uses 4 I2S SD Lines for audio on LT9611 HDMI Bridge */
518 qcom,sd-lines = <0 1 2 3>;
553 pinctrl-names = "default";
554 pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>;
556 vmmc-supply = <&vreg_l21a_2p95>;
557 vqmmc-supply = <&vreg_l13a_2p95>;
560 cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
564 compatible = "qcom,db845c-sndcard";
565 pinctrl-0 = <&quat_mi2s_active
566 &quat_mi2s_sd0_active
567 &quat_mi2s_sd1_active
568 &quat_mi2s_sd2_active
569 &quat_mi2s_sd3_active>;
570 pinctrl-names = "default";
574 "AMIC1", "MIC BIAS1",
575 "AMIC2", "MIC BIAS2",
576 "DMIC0", "MIC BIAS1",
577 "DMIC1", "MIC BIAS1",
578 "DMIC2", "MIC BIAS3",
579 "DMIC3", "MIC BIAS3",
580 "SpkrLeft IN", "SPK1 OUT",
581 "SpkrRight IN", "SPK2 OUT",
582 "MM_DL1", "MultiMedia1 Playback",
583 "MM_DL2", "MultiMedia2 Playback",
584 "MM_DL4", "MultiMedia4 Playback",
585 "MultiMedia3 Capture", "MM_UL3";
588 link-name = "MultiMedia1";
590 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
595 link-name = "MultiMedia2";
597 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
602 link-name = "MultiMedia3";
604 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
609 link-name = "MultiMedia4";
611 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
616 link-name = "SLIM Playback";
618 sound-dai = <&q6afedai SLIMBUS_0_RX>;
622 sound-dai = <&q6routing>;
626 sound-dai = <&left_spkr>, <&right_spkr>, <&swm 0>, <&wcd9340 0>;
631 link-name = "SLIM Capture";
633 sound-dai = <&q6afedai SLIMBUS_0_TX>;
637 sound-dai = <&q6routing>;
641 sound-dai = <&wcd9340 1>;
647 /* On Low speed expansion */
653 cam0_default: cam0_default {
658 drive-strength = <16>;
664 function = "cam_mclk";
666 drive-strength = <16>;
671 cam3_default: cam3_default {
676 drive-strength = <16>;
681 function = "cam_mclk";
684 drive-strength = <16>;
689 pcie0_default_state: pcie0-default {
700 drive-strength = <2>;
709 drive-strength = <2>;
714 pcie0_pwren_state: pcie0-pwren {
718 drive-strength = <2>;
722 pcie1_default_state: pcie1-default {
727 drive-strength = <16>;
741 drive-strength = <2>;
749 drive-strength = <16>;
755 sdc2_default_state: sdc2-default {
761 * It seems that mmc_test reports errors if drive
762 * strength is not 16 on clk, cmd, and data pins.
764 drive-strength = <16>;
770 drive-strength = <10>;
776 drive-strength = <10>;
780 sdc2_card_det_n: sd-card-det-n {
786 wcd_intr_default: wcd_intr_default {
792 drive-strength = <2>;
805 compatible = "qcom,wcn3990-bt";
807 vddio-supply = <&vreg_s4a_1p8>;
808 vddxo-supply = <&vreg_l7a_1p8>;
809 vddrf-supply = <&vreg_l17a_1p3>;
810 vddch0-supply = <&vreg_l25a_3p3>;
811 max-speed = <3200000>;
825 dr_mode = "peripheral";
831 vdd-supply = <&vreg_l1a_0p875>;
832 vdda-pll-supply = <&vreg_l12a_1p8>;
833 vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
835 qcom,imp-res-offset-value = <8>;
836 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
837 qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
838 qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
844 vdda-phy-supply = <&vreg_l26a_1p2>;
845 vdda-pll-supply = <&vreg_l1a_0p875>;
859 vdd-supply = <&vreg_l1a_0p875>;
860 vdda-pll-supply = <&vreg_l12a_1p8>;
861 vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
863 qcom,imp-res-offset-value = <8>;
864 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_22_8_MA>;
870 vdda-phy-supply = <&vreg_l26a_1p2>;
871 vdda-pll-supply = <&vreg_l1a_0p875>;
877 reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
879 vcc-supply = <&vreg_l20a_2p95>;
880 vcc-max-microamp = <800000>;
886 vdda-phy-supply = <&vreg_l1a_0p875>;
887 vdda-pll-supply = <&vreg_l26a_1p2>;
891 pinctrl-0 = <&wcd_intr_default>;
892 pinctrl-names = "default";
893 clock-names = "extclk";
894 clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
895 reset-gpios = <&tlmm 64 0>;
896 vdd-buck-supply = <&vreg_s4a_1p8>;
897 vdd-buck-sido-supply = <&vreg_s4a_1p8>;
898 vdd-tx-supply = <&vreg_s4a_1p8>;
899 vdd-rx-supply = <&vreg_s4a_1p8>;
900 vdd-io-supply = <&vreg_s4a_1p8>;
903 left_spkr: wsa8810-left{
904 compatible = "sdw10217201000";
906 powerdown-gpios = <&wcdgpio 2 GPIO_ACTIVE_HIGH>;
907 #thermal-sensor-cells = <0>;
908 sound-name-prefix = "SpkrLeft";
909 #sound-dai-cells = <0>;
912 right_spkr: wsa8810-right{
913 compatible = "sdw10217201000";
914 powerdown-gpios = <&wcdgpio 2 GPIO_ACTIVE_HIGH>;
916 #thermal-sensor-cells = <0>;
917 sound-name-prefix = "SpkrRight";
918 #sound-dai-cells = <0>;
926 vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
927 vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
928 vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
929 vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
931 qcom,snoc-host-cap-8bit-quirk;
934 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
936 drive-strength = <16>;
941 pins = "gpio41", "gpio42", "gpio43", "gpio44";
948 pins = "gpio45", "gpio46", "gpio47", "gpio48";
958 pins = "gpio46", "gpio47";
959 drive-strength = <2>;
972 drive-strength = <2>;
978 drive-strength = <2>;
993 compatible = "ovti,ov8856";
997 reset-gpios = <&tlmm 9 0>;
998 pinctrl-names = "default";
999 pinctrl-0 = <&cam0_default>;
1000 gpios = <&tlmm 13 0>,
1003 clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
1004 clock-names = "xvclk";
1005 clock-frequency = <19200000>;
1007 /* The &vreg_s4a_1p8 trace is powered on as a,
1008 * so it is represented by a fixed regulator.
1010 * The 2.8V vdda-supply and 1.2V vddd-supply regulators
1011 * both have to be enabled through the power management
1014 power-domains = <&clock_camcc TITAN_TOP_GDSC>;
1016 dovdd-supply = <&vreg_lvs1a_1p8>;
1017 avdd-supply = <&cam0_avdd_2v8>;
1018 dvdd-supply = <&cam0_dvdd_1v2>;
1023 ov8856_ep: endpoint {
1025 link-frequencies = /bits/ 64
1026 <360000000 180000000>;
1027 data-lanes = <1 2 3 4>;
1028 // remote-endpoint = <&csiphy0_ep>;
1036 compatible = "ovti,ov7251";
1038 // I2C address as per ov7251.txt linux documentation
1042 enable-gpios = <&tlmm 21 0>;
1043 pinctrl-names = "default";
1044 pinctrl-0 = <&cam3_default>;
1045 gpios = <&tlmm 16 0>,
1048 clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
1049 clock-names = "xclk";
1050 clock-frequency = <24000000>;
1052 /* The &vreg_s4a_1p8 trace always powered on.
1054 * The 2.8V vdda-supply regulator is enabled when the
1055 * vreg_s4a_1p8 trace is pulled high.
1056 * It too is represented by a fixed regulator.
1058 * No 1.2V vddd-supply regulator is used.
1060 power-domains = <&clock_camcc TITAN_TOP_GDSC>;
1062 vdddo-supply = <&vreg_lvs1a_1p8>;
1063 vdda-supply = <&cam3_avdd_2v8>;
1068 ov7251_ep: endpoint {
1071 // remote-endpoint = <&csiphy3_ep>;