1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (C) 2021, Microsoft Corporation 4 */ 5 6/dts-v1/; 7 8#include <dt-bindings/regulator/qcom,rpmh-regulator.h> 9#include <dt-bindings/gpio/gpio.h> 10#include "sm8150.dtsi" 11#include "pm8150.dtsi" 12#include "pm8150b.dtsi" 13#include "pm8150l.dtsi" 14 15/ { 16 model = "Microsoft Surface Duo"; 17 compatible = "microsoft,surface-duo", "qcom,sm8150"; 18 chassis-type = "handset"; 19 20 aliases { 21 serial0 = &uart2; 22 }; 23 24 chosen { 25 stdout-path = "serial0:115200n8"; 26 }; 27 28 vph_pwr: vph-pwr-regulator { 29 compatible = "regulator-fixed"; 30 regulator-name = "vph_pwr"; 31 regulator-min-microvolt = <3700000>; 32 regulator-max-microvolt = <3700000>; 33 }; 34 35 /* 36 * Apparently RPMh does not provide support for PM8150 S4 because it 37 * is always-on; model it as a fixed regulator. 38 */ 39 vreg_s4a_1p8: pm8150-s4 { 40 compatible = "regulator-fixed"; 41 regulator-name = "vreg_s4a_1p8"; 42 43 regulator-min-microvolt = <1800000>; 44 regulator-max-microvolt = <1800000>; 45 46 regulator-always-on; 47 regulator-boot-on; 48 49 vin-supply = <&vph_pwr>; 50 }; 51 52 gpio-keys { 53 compatible = "gpio-keys"; 54 55 key-vol-up { 56 label = "Volume Up"; 57 gpios = <&pm8150_gpios 6 GPIO_ACTIVE_LOW>; 58 linux,code = <KEY_VOLUMEUP>; 59 }; 60 }; 61}; 62 63&apps_rsc { 64 regulators-0 { 65 compatible = "qcom,pm8150-rpmh-regulators"; 66 qcom,pmic-id = "a"; 67 68 vdd-s1-supply = <&vph_pwr>; 69 vdd-s2-supply = <&vph_pwr>; 70 vdd-s3-supply = <&vph_pwr>; 71 vdd-s4-supply = <&vph_pwr>; 72 vdd-s5-supply = <&vph_pwr>; 73 vdd-s6-supply = <&vph_pwr>; 74 vdd-s7-supply = <&vph_pwr>; 75 vdd-s8-supply = <&vph_pwr>; 76 vdd-s9-supply = <&vph_pwr>; 77 vdd-s10-supply = <&vph_pwr>; 78 79 vdd-l1-l8-l11-supply = <&vreg_s6a_0p9>; 80 vdd-l2-l10-supply = <&vreg_bob>; 81 vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p9>; 82 vdd-l6-l9-supply = <&vreg_s8c_1p3>; 83 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p0>; 84 vdd-l13-l16-l17-supply = <&vreg_bob>; 85 86 vreg_s5a_2p0: smps5 { 87 regulator-min-microvolt = <1904000>; 88 regulator-max-microvolt = <2000000>; 89 }; 90 91 vreg_s6a_0p9: smps6 { 92 regulator-min-microvolt = <920000>; 93 regulator-max-microvolt = <1128000>; 94 }; 95 96 vdda_wcss_pll: 97 vreg_l1a_0p75: ldo1 { 98 regulator-min-microvolt = <752000>; 99 regulator-max-microvolt = <752000>; 100 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 101 }; 102 103 vdd_pdphy: 104 vdda_usb_hs_3p1: 105 vreg_l2a_3p1: ldo2 { 106 regulator-min-microvolt = <3072000>; 107 regulator-max-microvolt = <3072000>; 108 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 109 }; 110 111 vreg_l3a_0p8: ldo3 { 112 regulator-min-microvolt = <480000>; 113 regulator-max-microvolt = <932000>; 114 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 115 }; 116 117 vdd_usb_hs_core: 118 vdda_csi_0_0p9: 119 vdda_csi_1_0p9: 120 vdda_csi_2_0p9: 121 vdda_csi_3_0p9: 122 vdda_dsi_0_0p9: 123 vdda_dsi_1_0p9: 124 vdda_dsi_0_pll_0p9: 125 vdda_dsi_1_pll_0p9: 126 vdda_pcie_1ln_core: 127 vdda_pcie_2ln_core: 128 vdda_pll_hv_cc_ebi01: 129 vdda_pll_hv_cc_ebi23: 130 vdda_qrefs_0p875_5: 131 vdda_sp_sensor: 132 vdda_ufs_2ln_core_1: 133 vdda_ufs_2ln_core_2: 134 vdda_usb_ss_dp_core_1: 135 vdda_usb_ss_dp_core_2: 136 vdda_qlink_lv: 137 vdda_qlink_lv_ck: 138 vreg_l5a_0p875: ldo5 { 139 regulator-min-microvolt = <880000>; 140 regulator-max-microvolt = <880000>; 141 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 142 }; 143 144 vreg_l6a_1p2: ldo6 { 145 regulator-min-microvolt = <1200000>; 146 regulator-max-microvolt = <1200000>; 147 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 148 }; 149 150 vreg_l7a_1p8: ldo7 { 151 regulator-min-microvolt = <1800000>; 152 regulator-max-microvolt = <1800000>; 153 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 154 }; 155 156 vddpx_10: 157 vreg_l9a_1p2: ldo9 { 158 regulator-min-microvolt = <1200000>; 159 regulator-max-microvolt = <1200000>; 160 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 161 }; 162 163 vreg_l10a_2p5: ldo10 { 164 regulator-min-microvolt = <2504000>; 165 regulator-max-microvolt = <2960000>; 166 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 167 }; 168 169 vreg_l11a_0p8: ldo11 { 170 regulator-min-microvolt = <800000>; 171 regulator-max-microvolt = <800000>; 172 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 173 }; 174 175 vdd_qfprom: 176 vdd_qfprom_sp: 177 vdda_apc_cs_1p8: 178 vdda_gfx_cs_1p8: 179 vdda_usb_hs_1p8: 180 vdda_qrefs_vref_1p8: 181 vddpx_10_a: 182 vreg_l12a_1p8: ldo12 { 183 regulator-min-microvolt = <1800000>; 184 regulator-max-microvolt = <1800000>; 185 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 186 }; 187 188 vreg_l13a_2p7: ldo13 { 189 regulator-min-microvolt = <2704000>; 190 regulator-max-microvolt = <2704000>; 191 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 192 }; 193 194 vreg_l14a_1p8: ldo14 { 195 regulator-min-microvolt = <1800000>; 196 regulator-max-microvolt = <1880000>; 197 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 198 }; 199 200 vreg_l15a_1p7: ldo15 { 201 regulator-min-microvolt = <1704000>; 202 regulator-max-microvolt = <1704000>; 203 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 204 }; 205 206 vreg_l16a_2p7: ldo16 { 207 regulator-min-microvolt = <2704000>; 208 regulator-max-microvolt = <2960000>; 209 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 210 }; 211 212 vreg_l17a_3p0: ldo17 { 213 regulator-min-microvolt = <2856000>; 214 regulator-max-microvolt = <3008000>; 215 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 216 }; 217 }; 218 219 regulators-1 { 220 compatible = "qcom,pm8150l-rpmh-regulators"; 221 qcom,pmic-id = "c"; 222 223 vdd-s1-supply = <&vph_pwr>; 224 vdd-s2-supply = <&vph_pwr>; 225 vdd-s3-supply = <&vph_pwr>; 226 vdd-s4-supply = <&vph_pwr>; 227 vdd-s5-supply = <&vph_pwr>; 228 vdd-s6-supply = <&vph_pwr>; 229 vdd-s7-supply = <&vph_pwr>; 230 vdd-s8-supply = <&vph_pwr>; 231 232 vdd-l1-l8-supply = <&vreg_s4a_1p8>; 233 vdd-l2-l3-supply = <&vreg_s8c_1p3>; 234 vdd-l4-l5-l6-supply = <&vreg_bob>; 235 vdd-l7-l11-supply = <&vreg_bob>; 236 vdd-l9-l10-supply = <&vreg_bob>; 237 238 vdd-bob-supply = <&vph_pwr>; 239 vdd-flash-supply = <&vreg_bob>; 240 vdd-rgb-supply = <&vreg_bob>; 241 242 vreg_bob: bob { 243 regulator-min-microvolt = <3008000>; 244 regulator-max-microvolt = <4000000>; 245 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; 246 regulator-allow-bypass; 247 }; 248 249 vreg_s8c_1p3: smps8 { 250 regulator-min-microvolt = <1352000>; 251 regulator-max-microvolt = <1352000>; 252 }; 253 254 vreg_l1c_1p8: ldo1 { 255 regulator-min-microvolt = <1800000>; 256 regulator-max-microvolt = <1800000>; 257 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 258 }; 259 260 vdda_wcss_adcdac_1: 261 vdda_wcss_adcdac_22: 262 vreg_l2c_1p3: ldo2 { 263 regulator-min-microvolt = <1304000>; 264 regulator-max-microvolt = <1304000>; 265 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 266 }; 267 268 vdda_hv_ebi0: 269 vdda_hv_ebi1: 270 vdda_hv_ebi2: 271 vdda_hv_ebi3: 272 vdda_hv_refgen0: 273 vdda_qlink_hv_ck: 274 vreg_l3c_1p2: ldo3 { 275 regulator-min-microvolt = <1200000>; 276 regulator-max-microvolt = <1200000>; 277 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 278 }; 279 280 vddpx_5: 281 vreg_l4c_1p8: ldo4 { 282 regulator-min-microvolt = <1704000>; 283 regulator-max-microvolt = <2928000>; 284 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 285 }; 286 287 vddpx_6: 288 vreg_l5c_1p8: ldo5 { 289 regulator-min-microvolt = <1704000>; 290 regulator-max-microvolt = <2928000>; 291 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 292 }; 293 294 vddpx_2: 295 vreg_l6c_2p9: ldo6 { 296 regulator-min-microvolt = <1800000>; 297 regulator-max-microvolt = <2960000>; 298 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 299 }; 300 301 vreg_l7c_3p0: ldo7 { 302 regulator-min-microvolt = <2856000>; 303 regulator-max-microvolt = <3104000>; 304 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 305 }; 306 307 vreg_l8c_1p8: ldo8 { 308 regulator-min-microvolt = <1800000>; 309 regulator-max-microvolt = <1800000>; 310 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 311 }; 312 313 vreg_l9c_2p9: ldo9 { 314 regulator-min-microvolt = <2704000>; 315 regulator-max-microvolt = <2960000>; 316 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 317 }; 318 319 vreg_l10c_3p3: ldo10 { 320 regulator-min-microvolt = <3000000>; 321 regulator-max-microvolt = <3312000>; 322 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 323 }; 324 325 vreg_l11c_3p3: ldo11 { 326 regulator-min-microvolt = <3000000>; 327 regulator-max-microvolt = <3312000>; 328 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 329 }; 330 }; 331 332 regulators-2 { 333 compatible = "qcom,pm8009-rpmh-regulators"; 334 qcom,pmic-id = "f"; 335 336 vdd-s1-supply = <&vph_pwr>; 337 vdd-s2-supply = <&vreg_bob>; 338 339 vdd-l2-supply = <&vreg_s8c_1p3>; 340 vdd-l5-l6-supply = <&vreg_bob>; 341 342 vreg_l2f_1p2: ldo2 { 343 regulator-min-microvolt = <1200000>; 344 regulator-max-microvolt = <1200000>; 345 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 346 }; 347 348 vreg_l5f_2p85: ldo5 { 349 regulator-min-microvolt = <2800000>; 350 regulator-max-microvolt = <2800000>; 351 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 352 }; 353 354 vreg_l6f_2p85: ldo6 { 355 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 356 regulator-min-microvolt = <2856000>; 357 regulator-max-microvolt = <2856000>; 358 }; 359 }; 360}; 361 362&i2c1 { 363 status = "okay"; 364 clock-frequency = <400000>; 365 366 bq27742@55 { 367 compatible = "ti,bq27742"; 368 reg = <0x55>; 369 }; 370 371 da7280@4a { 372 compatible = "dlg,da7280"; 373 reg = <0x4a>; 374 interrupts-extended = <&tlmm 42 IRQ_TYPE_LEVEL_LOW>; 375 pinctrl-names = "da7280_default"; 376 pinctrl-0 = <&da7280_intr_default>; 377 378 dlg,actuator-type = "LRA"; 379 dlg,dlg,const-op-mode = <1>; 380 dlg,dlg,periodic-op-mode = <1>; 381 dlg,nom-microvolt = <2000000>; 382 dlg,abs-max-microvolt = <2000000>; 383 dlg,imax-microamp = <129000>; 384 dlg,resonant-freq-hz = <180>; 385 dlg,impd-micro-ohms = <14300000>; 386 dlg,freq-track-enable; 387 dlg,bemf-sens-enable; 388 dlg,mem-array = < 389 0x06 0x08 0x10 0x11 0x12 0x13 0x14 0x15 0x1c 0x2a 390 0x33 0x3c 0x42 0x4b 0x4c 0x4e 0x17 0x19 0x27 0x29 391 0x17 0x19 0x03 0x84 0x5e 0x04 0x08 0x84 0x5d 0x01 392 0x84 0x5e 0x02 0x00 0xa4 0x5d 0x03 0x84 0x5e 0x06 393 0x08 0x84 0x5d 0x05 0x84 0x5d 0x06 0x84 0x5e 0x08 394 0x84 0x5e 0x05 0x8c 0x5e 0x24 0x84 0x5f 0x10 0x84 395 0x5e 0x05 0x84 0x5e 0x08 0x84 0x5f 0x01 0x8c 0x5e 396 0x04 0x84 0x5e 0x08 0x84 0x5f 0x11 0x19 0x88 0x00 397 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 398 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 399 >; 400 }; 401 402 /* SMB1381 @ 0x44 */ 403 /* MAX34417 @ 0x1c */ 404}; 405 406&i2c4 { 407 status = "okay"; 408 clock-frequency = <400000>; 409 410 /* SMB1355 @ 0x0c */ 411 /* SMB1390 @ 0x10 */ 412}; 413 414&i2c17 { 415 status = "okay"; 416 clock-frequency = <400000>; 417 418 bq27742@55 { 419 compatible = "ti,bq27742"; 420 reg = <0x55>; 421 }; 422}; 423 424&i2c19 { 425 status = "okay"; 426 clock-frequency = <400000>; 427 428 /* MAX34417 @ 0x12 */ 429 /* MAX34417 @ 0x1a */ 430 /* MAX34417 @ 0x1e */ 431}; 432 433&pon_pwrkey { 434 status = "okay"; 435}; 436 437&qupv3_id_0 { 438 status = "okay"; 439}; 440 441&qupv3_id_1 { 442 status = "okay"; 443}; 444 445&qupv3_id_2 { 446 status = "okay"; 447}; 448 449&remoteproc_adsp { 450 status = "okay"; 451 firmware-name = "qcom/sm8150/microsoft/adsp.mdt"; 452}; 453 454&remoteproc_cdsp { 455 status = "okay"; 456 firmware-name = "qcom/sm8150/microsoft/cdsp.mdt"; 457}; 458 459&remoteproc_mpss { 460 status = "okay"; 461 firmware-name = "qcom/sm8150/microsoft/modem.mdt"; 462}; 463 464&remoteproc_slpi { 465 status = "okay"; 466 firmware-name = "qcom/sm8150/microsoft/slpi.mdt"; 467}; 468 469&pon_resin { 470 status = "okay"; 471 472 linux,code = <KEY_VOLUMEDOWN>; 473}; 474 475&tlmm { 476 gpio-reserved-ranges = <126 4>; 477 478 da7280_intr_default: da7280-intr-default-state { 479 pins = "gpio42"; 480 function = "gpio"; 481 bias-pull-up; 482 input-enable; 483 }; 484}; 485 486&uart2 { 487 status = "okay"; 488}; 489 490&ufs_mem_hc { 491 status = "okay"; 492 493 reset-gpios = <&tlmm 175 GPIO_ACTIVE_LOW>; 494 495 vcc-supply = <&vreg_l10a_2p5>; 496 vcc-max-microamp = <750000>; 497 vccq-supply = <&vreg_l9a_1p2>; 498 vccq-max-microamp = <700000>; 499 vccq2-supply = <&vreg_s4a_1p8>; 500 vccq2-max-microamp = <750000>; 501}; 502 503&ufs_mem_phy { 504 status = "okay"; 505 506 vdda-phy-supply = <&vdda_ufs_2ln_core_1>; 507 vdda-pll-supply = <&vreg_l3c_1p2>; 508}; 509 510&usb_1_hsphy { 511 status = "okay"; 512 vdda-pll-supply = <&vdd_usb_hs_core>; 513 vdda33-supply = <&vdda_usb_hs_3p1>; 514 vdda18-supply = <&vdda_usb_hs_1p8>; 515}; 516 517&usb_1_qmpphy { 518 status = "okay"; 519 vdda-phy-supply = <&vreg_l3c_1p2>; 520 vdda-pll-supply = <&vdda_usb_ss_dp_core_1>; 521}; 522 523&usb_1 { 524 status = "okay"; 525}; 526 527&usb_1_dwc3 { 528 dr_mode = "peripheral"; 529}; 530 531&wifi { 532 status = "okay"; 533 534 vdd-0.8-cx-mx-supply = <&vdda_wcss_pll>; 535 vdd-1.8-xo-supply = <&vreg_l7a_1p8>; 536 vdd-1.3-rfa-supply = <&vdda_wcss_adcdac_1>; 537 vdd-3.3-ch0-supply = <&vreg_l11c_3p3>; 538}; 539