0001 // SPDX-License-Identifier: BSD-3-Clause
0002 /*
0003 * Copyright (C) 2021, Microsoft Corporation
0004 */
0005
0006 /dts-v1/;
0007
0008 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
0009 #include <dt-bindings/gpio/gpio.h>
0010 #include "sm8150.dtsi"
0011 #include "pm8150.dtsi"
0012 #include "pm8150b.dtsi"
0013 #include "pm8150l.dtsi"
0014
0015 / {
0016 model = "Microsoft Surface Duo";
0017 compatible = "microsoft,surface-duo", "qcom,sm8150";
0018 chassis-type = "handset";
0019
0020 aliases {
0021 serial0 = &uart2;
0022 };
0023
0024 chosen {
0025 stdout-path = "serial0:115200n8";
0026 };
0027
0028 vph_pwr: vph-pwr-regulator {
0029 compatible = "regulator-fixed";
0030 regulator-name = "vph_pwr";
0031 regulator-min-microvolt = <3700000>;
0032 regulator-max-microvolt = <3700000>;
0033 };
0034
0035 /*
0036 * Apparently RPMh does not provide support for PM8150 S4 because it
0037 * is always-on; model it as a fixed regulator.
0038 */
0039 vreg_s4a_1p8: pm8150-s4 {
0040 compatible = "regulator-fixed";
0041 regulator-name = "vreg_s4a_1p8";
0042
0043 regulator-min-microvolt = <1800000>;
0044 regulator-max-microvolt = <1800000>;
0045
0046 regulator-always-on;
0047 regulator-boot-on;
0048
0049 vin-supply = <&vph_pwr>;
0050 };
0051
0052 gpio-keys {
0053 compatible = "gpio-keys";
0054
0055 key-vol-up {
0056 label = "Volume Up";
0057 gpios = <&pm8150_gpios 6 GPIO_ACTIVE_LOW>;
0058 linux,code = <KEY_VOLUMEUP>;
0059 };
0060 };
0061 };
0062
0063 &apps_rsc {
0064 pm8150-rpmh-regulators {
0065 compatible = "qcom,pm8150-rpmh-regulators";
0066 qcom,pmic-id = "a";
0067
0068 vdd-s1-supply = <&vph_pwr>;
0069 vdd-s2-supply = <&vph_pwr>;
0070 vdd-s3-supply = <&vph_pwr>;
0071 vdd-s4-supply = <&vph_pwr>;
0072 vdd-s5-supply = <&vph_pwr>;
0073 vdd-s6-supply = <&vph_pwr>;
0074 vdd-s7-supply = <&vph_pwr>;
0075 vdd-s8-supply = <&vph_pwr>;
0076 vdd-s9-supply = <&vph_pwr>;
0077 vdd-s10-supply = <&vph_pwr>;
0078
0079 vdd-l1-l8-l11-supply = <&vreg_s6a_0p9>;
0080 vdd-l2-l10-supply = <&vreg_bob>;
0081 vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p9>;
0082 vdd-l6-l9-supply = <&vreg_s8c_1p3>;
0083 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p0>;
0084 vdd-l13-l16-l17-supply = <&vreg_bob>;
0085
0086 vreg_s5a_2p0: smps5 {
0087 regulator-min-microvolt = <1904000>;
0088 regulator-max-microvolt = <2000000>;
0089 };
0090
0091 vreg_s6a_0p9: smps6 {
0092 regulator-min-microvolt = <920000>;
0093 regulator-max-microvolt = <1128000>;
0094 };
0095
0096 vdda_wcss_pll:
0097 vreg_l1a_0p75: ldo1 {
0098 regulator-min-microvolt = <752000>;
0099 regulator-max-microvolt = <752000>;
0100 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0101 };
0102
0103 vdd_pdphy:
0104 vdda_usb_hs_3p1:
0105 vreg_l2a_3p1: ldo2 {
0106 regulator-min-microvolt = <3072000>;
0107 regulator-max-microvolt = <3072000>;
0108 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0109 };
0110
0111 vreg_l3a_0p8: ldo3 {
0112 regulator-min-microvolt = <480000>;
0113 regulator-max-microvolt = <932000>;
0114 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0115 };
0116
0117 vdd_usb_hs_core:
0118 vdda_csi_0_0p9:
0119 vdda_csi_1_0p9:
0120 vdda_csi_2_0p9:
0121 vdda_csi_3_0p9:
0122 vdda_dsi_0_0p9:
0123 vdda_dsi_1_0p9:
0124 vdda_dsi_0_pll_0p9:
0125 vdda_dsi_1_pll_0p9:
0126 vdda_pcie_1ln_core:
0127 vdda_pcie_2ln_core:
0128 vdda_pll_hv_cc_ebi01:
0129 vdda_pll_hv_cc_ebi23:
0130 vdda_qrefs_0p875_5:
0131 vdda_sp_sensor:
0132 vdda_ufs_2ln_core_1:
0133 vdda_ufs_2ln_core_2:
0134 vdda_usb_ss_dp_core_1:
0135 vdda_usb_ss_dp_core_2:
0136 vdda_qlink_lv:
0137 vdda_qlink_lv_ck:
0138 vreg_l5a_0p875: ldo5 {
0139 regulator-min-microvolt = <880000>;
0140 regulator-max-microvolt = <880000>;
0141 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0142 };
0143
0144 vreg_l6a_1p2: ldo6 {
0145 regulator-min-microvolt = <1200000>;
0146 regulator-max-microvolt = <1200000>;
0147 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0148 };
0149
0150 vreg_l7a_1p8: ldo7 {
0151 regulator-min-microvolt = <1800000>;
0152 regulator-max-microvolt = <1800000>;
0153 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0154 };
0155
0156 vddpx_10:
0157 vreg_l9a_1p2: ldo9 {
0158 regulator-min-microvolt = <1200000>;
0159 regulator-max-microvolt = <1200000>;
0160 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0161 };
0162
0163 vreg_l10a_2p5: ldo10 {
0164 regulator-min-microvolt = <2504000>;
0165 regulator-max-microvolt = <2960000>;
0166 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0167 };
0168
0169 vreg_l11a_0p8: ldo11 {
0170 regulator-min-microvolt = <800000>;
0171 regulator-max-microvolt = <800000>;
0172 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0173 };
0174
0175 vdd_qfprom:
0176 vdd_qfprom_sp:
0177 vdda_apc_cs_1p8:
0178 vdda_gfx_cs_1p8:
0179 vdda_usb_hs_1p8:
0180 vdda_qrefs_vref_1p8:
0181 vddpx_10_a:
0182 vreg_l12a_1p8: ldo12 {
0183 regulator-min-microvolt = <1800000>;
0184 regulator-max-microvolt = <1800000>;
0185 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0186 };
0187
0188 vreg_l13a_2p7: ldo13 {
0189 regulator-min-microvolt = <2704000>;
0190 regulator-max-microvolt = <2704000>;
0191 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0192 };
0193
0194 vreg_l14a_1p8: ldo14 {
0195 regulator-min-microvolt = <1800000>;
0196 regulator-max-microvolt = <1880000>;
0197 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0198 };
0199
0200 vreg_l15a_1p7: ldo15 {
0201 regulator-min-microvolt = <1704000>;
0202 regulator-max-microvolt = <1704000>;
0203 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0204 };
0205
0206 vreg_l16a_2p7: ldo16 {
0207 regulator-min-microvolt = <2704000>;
0208 regulator-max-microvolt = <2960000>;
0209 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0210 };
0211
0212 vreg_l17a_3p0: ldo17 {
0213 regulator-min-microvolt = <2856000>;
0214 regulator-max-microvolt = <3008000>;
0215 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0216 };
0217 };
0218
0219 pm8150l-rpmh-regulators {
0220 compatible = "qcom,pm8150l-rpmh-regulators";
0221 qcom,pmic-id = "c";
0222
0223 vdd-s1-supply = <&vph_pwr>;
0224 vdd-s2-supply = <&vph_pwr>;
0225 vdd-s3-supply = <&vph_pwr>;
0226 vdd-s4-supply = <&vph_pwr>;
0227 vdd-s5-supply = <&vph_pwr>;
0228 vdd-s6-supply = <&vph_pwr>;
0229 vdd-s7-supply = <&vph_pwr>;
0230 vdd-s8-supply = <&vph_pwr>;
0231
0232 vdd-l1-l8-supply = <&vreg_s4a_1p8>;
0233 vdd-l2-l3-supply = <&vreg_s8c_1p3>;
0234 vdd-l4-l5-l6-supply = <&vreg_bob>;
0235 vdd-l7-l11-supply = <&vreg_bob>;
0236 vdd-l9-l10-supply = <&vreg_bob>;
0237
0238 vdd-bob-supply = <&vph_pwr>;
0239 vdd-flash-supply = <&vreg_bob>;
0240 vdd-rgb-supply = <&vreg_bob>;
0241
0242 vreg_bob: bob {
0243 regulator-min-microvolt = <3008000>;
0244 regulator-max-microvolt = <4000000>;
0245 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
0246 regulator-allow-bypass;
0247 };
0248
0249 vreg_s8c_1p3: smps8 {
0250 regulator-min-microvolt = <1352000>;
0251 regulator-max-microvolt = <1352000>;
0252 };
0253
0254 vreg_l1c_1p8: ldo1 {
0255 regulator-min-microvolt = <1800000>;
0256 regulator-max-microvolt = <1800000>;
0257 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0258 };
0259
0260 vdda_wcss_adcdac_1:
0261 vdda_wcss_adcdac_22:
0262 vreg_l2c_1p3: ldo2 {
0263 regulator-min-microvolt = <1304000>;
0264 regulator-max-microvolt = <1304000>;
0265 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0266 };
0267
0268 vdda_hv_ebi0:
0269 vdda_hv_ebi1:
0270 vdda_hv_ebi2:
0271 vdda_hv_ebi3:
0272 vdda_hv_refgen0:
0273 vdda_qlink_hv_ck:
0274 vreg_l3c_1p2: ldo3 {
0275 regulator-min-microvolt = <1200000>;
0276 regulator-max-microvolt = <1200000>;
0277 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0278 };
0279
0280 vddpx_5:
0281 vreg_l4c_1p8: ldo4 {
0282 regulator-min-microvolt = <1704000>;
0283 regulator-max-microvolt = <2928000>;
0284 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0285 };
0286
0287 vddpx_6:
0288 vreg_l5c_1p8: ldo5 {
0289 regulator-min-microvolt = <1704000>;
0290 regulator-max-microvolt = <2928000>;
0291 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0292 };
0293
0294 vddpx_2:
0295 vreg_l6c_2p9: ldo6 {
0296 regulator-min-microvolt = <1800000>;
0297 regulator-max-microvolt = <2960000>;
0298 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0299 };
0300
0301 vreg_l7c_3p0: ldo7 {
0302 regulator-min-microvolt = <2856000>;
0303 regulator-max-microvolt = <3104000>;
0304 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0305 };
0306
0307 vreg_l8c_1p8: ldo8 {
0308 regulator-min-microvolt = <1800000>;
0309 regulator-max-microvolt = <1800000>;
0310 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0311 };
0312
0313 vreg_l9c_2p9: ldo9 {
0314 regulator-min-microvolt = <2704000>;
0315 regulator-max-microvolt = <2960000>;
0316 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0317 };
0318
0319 vreg_l10c_3p3: ldo10 {
0320 regulator-min-microvolt = <3000000>;
0321 regulator-max-microvolt = <3312000>;
0322 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0323 };
0324
0325 vreg_l11c_3p3: ldo11 {
0326 regulator-min-microvolt = <3000000>;
0327 regulator-max-microvolt = <3312000>;
0328 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0329 };
0330 };
0331
0332 pm8009-rpmh-regulators {
0333 compatible = "qcom,pm8009-rpmh-regulators";
0334 qcom,pmic-id = "f";
0335
0336 vdd-s1-supply = <&vph_pwr>;
0337 vdd-s2-supply = <&vreg_bob>;
0338
0339 vdd-l2-supply = <&vreg_s8c_1p3>;
0340 vdd-l5-l6-supply = <&vreg_bob>;
0341
0342 vreg_l2f_1p2: ldo2 {
0343 regulator-min-microvolt = <1200000>;
0344 regulator-max-microvolt = <1200000>;
0345 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0346 };
0347
0348 vreg_l5f_2p85: ldo5 {
0349 regulator-min-microvolt = <2800000>;
0350 regulator-max-microvolt = <2800000>;
0351 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0352 };
0353
0354 vreg_l6f_2p85: ldo6 {
0355 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0356 regulator-min-microvolt = <2856000>;
0357 regulator-max-microvolt = <2856000>;
0358 };
0359 };
0360 };
0361
0362 &i2c1 {
0363 status = "okay";
0364 clock-frequency = <400000>;
0365
0366 bq27742@55 {
0367 compatible = "ti,bq27742";
0368 reg = <0x55>;
0369 };
0370
0371 da7280@4a {
0372 compatible = "dlg,da7280";
0373 reg = <0x4a>;
0374 interrupts-extended = <&tlmm 42 IRQ_TYPE_LEVEL_LOW>;
0375 pinctrl-names = "da7280_default";
0376 pinctrl-0 = <&da7280_intr_default>;
0377
0378 dlg,actuator-type = "LRA";
0379 dlg,dlg,const-op-mode = <1>;
0380 dlg,dlg,periodic-op-mode = <1>;
0381 dlg,nom-microvolt = <2000000>;
0382 dlg,abs-max-microvolt = <2000000>;
0383 dlg,imax-microamp = <129000>;
0384 dlg,resonant-freq-hz = <180>;
0385 dlg,impd-micro-ohms = <14300000>;
0386 dlg,freq-track-enable;
0387 dlg,bemf-sens-enable;
0388 dlg,mem-array = <
0389 0x06 0x08 0x10 0x11 0x12 0x13 0x14 0x15 0x1c 0x2a
0390 0x33 0x3c 0x42 0x4b 0x4c 0x4e 0x17 0x19 0x27 0x29
0391 0x17 0x19 0x03 0x84 0x5e 0x04 0x08 0x84 0x5d 0x01
0392 0x84 0x5e 0x02 0x00 0xa4 0x5d 0x03 0x84 0x5e 0x06
0393 0x08 0x84 0x5d 0x05 0x84 0x5d 0x06 0x84 0x5e 0x08
0394 0x84 0x5e 0x05 0x8c 0x5e 0x24 0x84 0x5f 0x10 0x84
0395 0x5e 0x05 0x84 0x5e 0x08 0x84 0x5f 0x01 0x8c 0x5e
0396 0x04 0x84 0x5e 0x08 0x84 0x5f 0x11 0x19 0x88 0x00
0397 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0398 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0399 >;
0400 };
0401
0402 /* SMB1381 @ 0x44 */
0403 /* MAX34417 @ 0x1c */
0404 };
0405
0406 &i2c4 {
0407 status = "okay";
0408 clock-frequency = <400000>;
0409
0410 /* SMB1355 @ 0x0c */
0411 /* SMB1390 @ 0x10 */
0412 };
0413
0414 &i2c17 {
0415 status = "okay";
0416 clock-frequency = <400000>;
0417
0418 bq27742@55 {
0419 compatible = "ti,bq27742";
0420 reg = <0x55>;
0421 };
0422 };
0423
0424 &i2c19 {
0425 status = "okay";
0426 clock-frequency = <400000>;
0427
0428 /* MAX34417 @ 0x12 */
0429 /* MAX34417 @ 0x1a */
0430 /* MAX34417 @ 0x1e */
0431 };
0432
0433 &pon_pwrkey {
0434 status = "okay";
0435 };
0436
0437 &qupv3_id_0 {
0438 status = "okay";
0439 };
0440
0441 &qupv3_id_1 {
0442 status = "okay";
0443 };
0444
0445 &qupv3_id_2 {
0446 status = "okay";
0447 };
0448
0449 &remoteproc_adsp {
0450 status = "okay";
0451 firmware-name = "qcom/sm8150/microsoft/adsp.mdt";
0452 };
0453
0454 &remoteproc_cdsp {
0455 status = "okay";
0456 firmware-name = "qcom/sm8150/microsoft/cdsp.mdt";
0457 };
0458
0459 &remoteproc_mpss {
0460 status = "okay";
0461 firmware-name = "qcom/sm8150/microsoft/modem.mdt";
0462 };
0463
0464 &remoteproc_slpi {
0465 status = "okay";
0466 firmware-name = "qcom/sm8150/microsoft/slpi.mdt";
0467 };
0468
0469 &pon_resin {
0470 status = "okay";
0471
0472 linux,code = <KEY_VOLUMEDOWN>;
0473 };
0474
0475 &tlmm {
0476 gpio-reserved-ranges = <126 4>;
0477
0478 da7280_intr_default: da7280-intr-default {
0479 pins = "gpio42";
0480 function = "gpio";
0481 bias-pull-up;
0482 input-enable;
0483 };
0484 };
0485
0486 &uart2 {
0487 status = "okay";
0488 };
0489
0490 &ufs_mem_hc {
0491 status = "okay";
0492
0493 reset-gpios = <&tlmm 175 GPIO_ACTIVE_LOW>;
0494
0495 vcc-supply = <&vreg_l10a_2p5>;
0496 vcc-max-microamp = <750000>;
0497 vccq-supply = <&vreg_l9a_1p2>;
0498 vccq-max-microamp = <700000>;
0499 vccq2-supply = <&vreg_s4a_1p8>;
0500 vccq2-max-microamp = <750000>;
0501 };
0502
0503 &ufs_mem_phy {
0504 status = "okay";
0505
0506 vdda-phy-supply = <&vdda_ufs_2ln_core_1>;
0507 vdda-pll-supply = <&vreg_l3c_1p2>;
0508 };
0509
0510 &usb_1_hsphy {
0511 status = "okay";
0512 vdda-pll-supply = <&vdd_usb_hs_core>;
0513 vdda33-supply = <&vdda_usb_hs_3p1>;
0514 vdda18-supply = <&vdda_usb_hs_1p8>;
0515 };
0516
0517 &usb_1_qmpphy {
0518 status = "okay";
0519 vdda-phy-supply = <&vreg_l3c_1p2>;
0520 vdda-pll-supply = <&vdda_usb_ss_dp_core_1>;
0521 };
0522
0523 &usb_1 {
0524 status = "okay";
0525 };
0526
0527 &usb_1_dwc3 {
0528 dr_mode = "peripheral";
0529 };
0530
0531 &wifi {
0532 status = "okay";
0533
0534 vdd-0.8-cx-mx-supply = <&vdda_wcss_pll>;
0535 vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
0536 vdd-1.3-rfa-supply = <&vdda_wcss_adcdac_1>;
0537 vdd-3.3-ch0-supply = <&vreg_l11c_3p3>;
0538 };