Back to home page

OSCL-LXR

 
 

    


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 };