1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (c) 2020, Xilin Wu <strongtz@yeah.net> 4 * Copyright (c) 2022, Molly Sophia <mollysophia379@gmail.com> 5 */ 6 7/dts-v1/; 8 9#include <dt-bindings/arm/qcom,ids.h> 10#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> 12#include <dt-bindings/regulator/qcom,rpmh-regulator.h> 13#include <dt-bindings/input/linux-event-codes.h> 14#include <dt-bindings/sound/qcom,q6afe.h> 15#include <dt-bindings/sound/qcom,q6asm.h> 16#include "sdm845.dtsi" 17#include "sdm845-wcd9340.dtsi" 18#include "pm8998.dtsi" 19#include "pmi8998.dtsi" 20#include "pm8005.dtsi" 21 22/* 23 * Delete following upstream (sdm845.dtsi) reserved 24 * memory mappings which are different in this device. 25 */ 26/delete-node/ &rmtfs_mem; 27/delete-node/ &adsp_mem; 28/delete-node/ &wlan_msa_mem; 29/delete-node/ &mpss_region; 30/delete-node/ &venus_mem; 31/delete-node/ &cdsp_mem; 32/delete-node/ &mba_region; 33/delete-node/ &slpi_mem; 34/delete-node/ &spss_mem; 35 36/ { 37 model = "Xiaomi Mi MIX 2S"; 38 compatible = "xiaomi,polaris", "qcom,sdm845"; 39 chassis-type = "handset"; 40 41 /* required for bootloader to select correct board */ 42 qcom,msm-id = <QCOM_ID_SDM845 0x20001>; 43 qcom,board-id = <0x2a 0x0>; 44 45 aliases { 46 serial0 = &uart9; 47 serial1 = &uart6; 48 }; 49 50 gpio-keys { 51 compatible = "gpio-keys"; 52 autorepeat; 53 54 pinctrl-names = "default"; 55 pinctrl-0 = <&volume_up_gpio>; 56 57 key-vol-up { 58 label = "Volume Up"; 59 linux,code = <KEY_VOLUMEUP>; 60 gpios = <&pm8998_gpios 6 GPIO_ACTIVE_LOW>; 61 debounce-interval = <15>; 62 }; 63 }; 64 65 reserved-memory { 66 adsp_mem: memory@8c500000 { 67 reg = <0 0x8c500000 0 0x1e00000>; 68 no-map; 69 }; 70 71 wlan_msa_mem: memory@8e300000 { 72 reg = <0 0x8e300000 0 0x100000>; 73 no-map; 74 }; 75 76 mpss_region: memory@8e400000 { 77 reg = <0 0x8e400000 0 0x7800000>; 78 no-map; 79 }; 80 81 venus_mem: memory@95c00000 { 82 reg = <0 0x95c00000 0 0x500000>; 83 no-map; 84 }; 85 86 cdsp_mem: memory@96100000 { 87 reg = <0 0x96100000 0 0x800000>; 88 no-map; 89 }; 90 91 mba_region: memory@96900000 { 92 reg = <0 0x96900000 0 0x200000>; 93 no-map; 94 }; 95 96 slpi_mem: memory@96b00000 { 97 reg = <0 0x96b00000 0 0x1400000>; 98 no-map; 99 }; 100 101 spss_mem: memory@97f00000 { 102 reg = <0 0x97f00000 0 0x100000>; 103 no-map; 104 }; 105 106 rmtfs_mem: memory@f6301000 { 107 compatible = "qcom,rmtfs-mem"; 108 reg = <0 0xf6301000 0 0x200000>; 109 no-map; 110 111 qcom,client-id = <1>; 112 qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>; 113 }; 114 }; 115 116 battery: battery { 117 compatible = "simple-battery"; 118 119 charge-full-design-microamp-hours = <3400000>; 120 voltage-min-design-microvolt = <3400000>; 121 voltage-max-design-microvolt = <4400000>; 122 }; 123 124 vreg_tp_vddio: vreg-tp-vddio { 125 compatible = "regulator-fixed"; 126 regulator-name = "vreg_tp_vddio"; 127 128 regulator-min-microvolt = <1800000>; 129 regulator-max-microvolt = <1800000>; 130 131 gpio = <&tlmm 23 GPIO_ACTIVE_HIGH>; 132 regulator-always-on; 133 regulator-boot-on; 134 enable-active-high; 135 }; 136 137 vreg_s4a_1p8: vreg-s4a-1p8 { 138 compatible = "regulator-fixed"; 139 regulator-name = "vreg_s4a_1p8"; 140 141 regulator-min-microvolt = <1800000>; 142 regulator-max-microvolt = <1800000>; 143 regulator-always-on; 144 }; 145}; 146 147&apps_rsc { 148 regulators-0 { 149 compatible = "qcom,pm8998-rpmh-regulators"; 150 qcom,pmic-id = "a"; 151 152 vreg_s2a_1p1: smps2 { 153 regulator-min-microvolt = <1100000>; 154 regulator-max-microvolt = <1100000>; 155 }; 156 157 vreg_s3a_1p35: smps3 { 158 regulator-min-microvolt = <1352000>; 159 regulator-max-microvolt = <1352000>; 160 }; 161 162 vreg_s5a_2p04: smps5 { 163 regulator-min-microvolt = <1904000>; 164 regulator-max-microvolt = <2040000>; 165 }; 166 167 vreg_s7a_1p025: smps7 { 168 regulator-min-microvolt = <900000>; 169 regulator-max-microvolt = <1028000>; 170 }; 171 172 vdda_mipi_dsi0_pll: 173 vdda_ufs1_core: 174 vreg_l1a_0p875: ldo1 { 175 regulator-min-microvolt = <880000>; 176 regulator-max-microvolt = <880000>; 177 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 178 }; 179 180 vreg_l2a_1p2: ldo2 { 181 regulator-min-microvolt = <1200000>; 182 regulator-max-microvolt = <1200000>; 183 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 184 regulator-always-on; 185 }; 186 187 vreg_l3a_1p0: ldo3 { 188 regulator-min-microvolt = <1000000>; 189 regulator-max-microvolt = <1000000>; 190 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 191 }; 192 193 vreg_l5a_0p8: ldo5 { 194 regulator-min-microvolt = <800000>; 195 regulator-max-microvolt = <800000>; 196 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 197 }; 198 199 vreg_l6a_1p8: ldo6 { 200 regulator-min-microvolt = <1856000>; 201 regulator-max-microvolt = <1856000>; 202 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 203 }; 204 205 vreg_l7a_1p8: ldo7 { 206 regulator-min-microvolt = <1800000>; 207 regulator-max-microvolt = <1800000>; 208 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 209 }; 210 211 vreg_l8a_1p2: ldo8 { 212 regulator-min-microvolt = <1200000>; 213 regulator-max-microvolt = <1248000>; 214 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 215 }; 216 217 vreg_l9a_1p8: ldo9 { 218 regulator-min-microvolt = <1704000>; 219 regulator-max-microvolt = <2928000>; 220 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 221 }; 222 223 vreg_l10a_2p95: ldo10 { 224 regulator-min-microvolt = <1704000>; 225 regulator-max-microvolt = <2928000>; 226 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 227 }; 228 229 vreg_l11a_1p05: ldo11 { 230 regulator-min-microvolt = <1000000>; 231 regulator-max-microvolt = <1048000>; 232 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 233 }; 234 235 vreg_l12a_1p8: ldo12 { 236 regulator-min-microvolt = <1800000>; 237 regulator-max-microvolt = <1800000>; 238 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 239 }; 240 241 vreg_l13a_2p95: ldo13 { 242 regulator-min-microvolt = <1800000>; 243 regulator-max-microvolt = <2960000>; 244 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 245 }; 246 247 vreg_l14a_1p8: ldo14 { 248 regulator-min-microvolt = <1800000>; 249 regulator-max-microvolt = <1880000>; 250 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 251 regulator-always-on; 252 }; 253 254 vreg_l15a_1p8: ldo15 { 255 regulator-min-microvolt = <1800000>; 256 regulator-max-microvolt = <1800000>; 257 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 258 }; 259 260 vreg_l16a_2p7: ldo16 { 261 regulator-min-microvolt = <2704000>; 262 regulator-max-microvolt = <2704000>; 263 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 264 }; 265 266 vreg_l17a_1p3: ldo17 { 267 regulator-min-microvolt = <1304000>; 268 regulator-max-microvolt = <1304000>; 269 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 270 regulator-always-on; 271 }; 272 273 vreg_l18a_2p9: ldo18 { 274 regulator-min-microvolt = <2704000>; 275 regulator-max-microvolt = <2960000>; 276 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 277 }; 278 279 vreg_l19a_3p1: ldo19 { 280 regulator-min-microvolt = <2856000>; 281 regulator-max-microvolt = <3104000>; 282 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 283 }; 284 285 vreg_l20a_2p95: ldo20 { 286 regulator-min-microvolt = <2704000>; 287 regulator-max-microvolt = <2960000>; 288 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 289 }; 290 291 vreg_l21a_2p95: ldo21 { 292 regulator-min-microvolt = <2704000>; 293 regulator-max-microvolt = <2960000>; 294 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 295 }; 296 297 vreg_l22a_3p3: ldo22 { 298 regulator-min-microvolt = <2864000>; 299 regulator-max-microvolt = <3312000>; 300 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 301 }; 302 303 vreg_l23a_3p3: ldo23 { 304 regulator-min-microvolt = <3000000>; 305 regulator-max-microvolt = <3312000>; 306 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 307 }; 308 309 vreg_l24a_3p075: ldo24 { 310 regulator-min-microvolt = <3088000>; 311 regulator-max-microvolt = <3088000>; 312 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 313 }; 314 315 vreg_l25a_3p3: ldo25 { 316 regulator-min-microvolt = <3000000>; 317 regulator-max-microvolt = <3312000>; 318 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 319 regulator-always-on; 320 }; 321 322 vdda_mipi_dsi0_1p2: 323 vdda_ufs1_1p2: 324 vreg_l26a_1p2: ldo26 { 325 regulator-min-microvolt = <1200000>; 326 regulator-max-microvolt = <1200000>; 327 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 328 }; 329 330 vreg_l28a_3p0: ldo28 { 331 regulator-min-microvolt = <2856000>; 332 regulator-max-microvolt = <3008000>; 333 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 334 regulator-always-on; 335 }; 336 337 vreg_lvs1a_1p8: lvs1 { 338 regulator-min-microvolt = <1800000>; 339 regulator-max-microvolt = <1800000>; 340 }; 341 342 vreg_lvs2a_1p8: lvs2 { 343 regulator-min-microvolt = <1800000>; 344 regulator-max-microvolt = <1800000>; 345 }; 346 }; 347 348 regulators-1 { 349 compatible = "qcom,pmi8998-rpmh-regulators"; 350 qcom,pmic-id = "b"; 351 352 vreg_bob: bob { 353 regulator-min-microvolt = <3312000>; 354 regulator-max-microvolt = <3600000>; 355 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; 356 regulator-allow-bypass; 357 }; 358 }; 359 360 regulators-2 { 361 compatible = "qcom,pm8005-rpmh-regulators"; 362 qcom,pmic-id = "c"; 363 364 vreg_smp3c_0p6: smps3 { 365 regulator-min-microvolt = <600000>; 366 regulator-max-microvolt = <600000>; 367 regulator-always-on; 368 }; 369 }; 370}; 371 372&cdsp_pas { 373 firmware-name = "qcom/sdm845/polaris/cdsp.mbn"; 374 status = "okay"; 375}; 376 377&gcc { 378 protected-clocks = <GCC_QSPI_CORE_CLK>, 379 <GCC_QSPI_CORE_CLK_SRC>, 380 <GCC_QSPI_CNOC_PERIPH_AHB_CLK>, 381 <GCC_LPASS_Q6_AXI_CLK>, 382 <GCC_LPASS_SWAY_CLK>; 383}; 384 385&gpi_dma0 { 386 status = "okay"; 387}; 388 389&gpi_dma1 { 390 status = "okay"; 391}; 392 393&gpu { 394 status = "okay"; 395 396 zap-shader { 397 memory-region = <&gpu_mem>; 398 firmware-name = "qcom/sdm845/polaris/a630_zap.mbn"; 399 }; 400}; 401 402&ibb { 403 regulator-min-microvolt = <4600000>; 404 regulator-max-microvolt = <6000000>; 405 regulator-over-current-protection; 406 regulator-pull-down; 407 regulator-soft-start; 408 qcom,discharge-resistor-kohms = <300>; 409}; 410 411&ipa { 412 qcom,gsi-loader = "self"; 413 memory-region = <&ipa_fw_mem>; 414 firmware-name = "qcom/sdm845/polaris/ipa_fws.mbn"; 415 status = "okay"; 416}; 417 418&i2c14 { 419 clock-frequency = <400000>; 420 status = "okay"; 421 422 touchscreen@20 { 423 compatible = "syna,rmi4-i2c"; 424 reg = <0x20>; 425 #address-cells = <1>; 426 #size-cells = <0>; 427 interrupts-extended = <&tlmm 125 0x2008>; 428 429 pinctrl-names = "default", "sleep"; 430 pinctrl-0 = <&ts_int_default &ts_reset_default>; 431 pinctrl-1 = <&ts_int_sleep &ts_reset_sleep>; 432 433 vdd-supply = <&vreg_l28a_3p0>; 434 vio-supply = <&vreg_tp_vddio>; 435 436 syna,startup-delay-ms = <0xc8>; 437 syna,reset-delay-ms = <0xc8>; 438 439 rmi4-f01@1 { 440 syna,nosleep-mode = <0x1>; 441 reg = <0x1>; 442 }; 443 444 rmi4-f12@12 { 445 reg = <0x12>; 446 syna,rezero-wait-ms = <0xc8>; 447 syna,clip-x-high = <0x438>; 448 syna,clip-y-high = <0x870>; 449 syna,sensor-type = <0x1>; 450 syna,clip-x-low = <0x0>; 451 syna,clip-y-low = <0x0>; 452 }; 453 }; 454}; 455 456&lab { 457 regulator-min-microvolt = <4600000>; 458 regulator-max-microvolt = <6000000>; 459 regulator-soft-start; 460 regulator-pull-down; 461}; 462 463&mdss { 464 status = "okay"; 465}; 466 467&mdss_dsi0 { 468 vdda-supply = <&vdda_mipi_dsi0_1p2>; 469 status = "okay"; 470 471 display_panel: panel@0 { 472 compatible = "jdi,fhd-nt35596s"; 473 #address-cells = <1>; 474 #size-cells = <0>; 475 reg = <0>; 476 477 reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>; 478 vddio-supply = <&vreg_l14a_1p8>; 479 backlight = <&pmi8998_wled>; 480 vddpos-supply = <&lab>; 481 vddneg-supply = <&ibb>; 482 483 pinctrl-names = "default", "sleep"; 484 pinctrl-0 = <&sde_dsi_active>; 485 pinctrl-1 = <&sde_dsi_suspend>; 486 487 port { 488 panel_in: endpoint { 489 remote-endpoint = <&mdss_dsi0_out>; 490 }; 491 }; 492 }; 493}; 494 495&mdss_dsi0_out { 496 remote-endpoint = <&panel_in>; 497 data-lanes = <0 1 2 3>; 498}; 499 500&mdss_dsi0_phy { 501 vdds-supply = <&vdda_mipi_dsi0_pll>; 502 status = "okay"; 503}; 504 505&mss_pil { 506 firmware-name = "qcom/sdm845/polaris/mba.mbn", "qcom/sdm845/polaris/modem.mbn"; 507 status = "okay"; 508}; 509 510&pmi8998_wled { 511 qcom,current-limit-microamp = <20000>; 512 qcom,current-boost-limit = <970>; 513 qcom,ovp-millivolt = <19600>; 514 qcom,switching-freq = <600>; 515 qcom,num-strings = <4>; 516 qcom,cabc; 517 518 status = "okay"; 519}; 520 521&pm8998_gpios { 522 volume_up_gpio: pm8998-gpio6-state { 523 pinconf { 524 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>; 525 function = "normal"; 526 pins = "gpio6"; 527 input-enable; 528 bias-pull-up; 529 }; 530 }; 531}; 532 533&pm8998_resin { 534 linux,code = <KEY_VOLUMEDOWN>; 535 status = "okay"; 536}; 537 538&q6afedai { 539 dai@22 { 540 reg = <QUATERNARY_MI2S_RX>; 541 qcom,sd-lines = <0>; 542 }; 543}; 544 545&q6asmdai { 546 dai@0 { 547 reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>; 548 }; 549 550 dai@1 { 551 reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>; 552 }; 553 554 dai@2 { 555 reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>; 556 }; 557}; 558 559&qupv3_id_0 { 560 status = "okay"; 561}; 562 563&qupv3_id_1 { 564 status = "okay"; 565}; 566 567&qup_i2c14_default { 568 drive-strength = <2>; 569 bias-disable; 570}; 571 572&tlmm { 573 gpio-reserved-ranges = <0 4>, <81 4>; 574 575 ts_reset_default: ts-reset-default-state { 576 pins = "gpio99"; 577 function = "gpio"; 578 drive-strength = <16>; 579 output-high; 580 }; 581 582 ts_int_default: ts-int-default-state { 583 pins = "gpio125"; 584 function = "gpio"; 585 bias-pull-down; 586 drive-strength = <16>; 587 }; 588 589 ts_reset_sleep: ts-reset-sleep-state { 590 pins = "gpio99"; 591 function = "gpio"; 592 bias-disable; 593 drive-strength = <2>; 594 }; 595 596 ts_int_sleep: ts-int-sleep-state { 597 pins = "gpio125"; 598 function = "gpio"; 599 bias-pull-down; 600 drive-strength = <2>; 601 }; 602 603 sde_dsi_active: sde-dsi-active-state { 604 pins = "gpio6", "gpio10"; 605 function = "gpio"; 606 drive-strength = <8>; 607 bias-disable; 608 }; 609 610 sde_dsi_suspend: sde-dsi-suspend-state { 611 pins = "gpio6", "gpio10"; 612 function = "gpio"; 613 drive-strength = <2>; 614 bias-pull-down; 615 }; 616}; 617 618&uart6 { 619 status = "okay"; 620 621 pinctrl-0 = <&qup_uart6_4pin>; 622 623 bluetooth { 624 compatible = "qcom,wcn3990-bt"; 625 626 /* This path is relative to the qca/ subdir under lib/firmware. */ 627 firmware-name = "polaris/crnv21.bin"; 628 629 vddio-supply = <&vreg_s4a_1p8>; 630 vddxo-supply = <&vreg_l7a_1p8>; 631 vddrf-supply = <&vreg_l17a_1p3>; 632 vddch0-supply = <&vreg_l25a_3p3>; 633 max-speed = <3200000>; 634 }; 635}; 636 637&usb_1 { 638 /* We'll use this as USB 2.0 only */ 639 qcom,select-utmi-as-pipe-clk; 640 status = "okay"; 641}; 642 643&usb_1_dwc3 { 644 dr_mode = "peripheral"; 645 646 /* Fastest mode for USB 2 */ 647 maximum-speed = "high-speed"; 648 649 /* Remove USB3 phy */ 650 phys = <&usb_1_hsphy>; 651 phy-names = "usb2-phy"; 652}; 653 654&usb_1_hsphy { 655 vdda-phy-dpdm-supply = <&vreg_l24a_3p075>; 656 vdda-pll-supply = <&vreg_l12a_1p8>; 657 vdd-supply = <&vreg_l1a_0p875>; 658 659 qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>; 660 qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>; 661 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>; 662 qcom,imp-res-offset-value = <8>; 663 664 status = "okay"; 665}; 666 667&usb_1_qmpphy { 668 vdda-pll-supply = <&vreg_l1a_0p875>; 669 vdda-phy-supply = <&vreg_l26a_1p2>; 670 status = "okay"; 671}; 672 673&ufs_mem_hc { 674 reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>; 675 vcc-supply = <&vreg_l20a_2p95>; 676 vcc-max-microamp = <800000>; 677 status = "okay"; 678}; 679 680&ufs_mem_phy { 681 vdda-phy-supply = <&vdda_ufs1_core>; 682 vdda-pll-supply = <&vdda_ufs1_1p2>; 683 status = "okay"; 684}; 685 686&venus { 687 firmware-name = "qcom/sdm845/polaris/venus.mbn"; 688 status = "okay"; 689}; 690 691&wcd9340 { 692 reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>; 693 vdd-buck-sido-supply = <&vreg_s4a_1p8>; 694 vdd-buck-supply = <&vreg_s4a_1p8>; 695 vdd-tx-supply = <&vreg_s4a_1p8>; 696 vdd-rx-supply = <&vreg_s4a_1p8>; 697 vdd-io-supply = <&vreg_s4a_1p8>; 698 699 qcom,micbias1-microvolt = <2700000>; 700 qcom,micbias2-microvolt = <1800000>; 701 qcom,micbias3-microvolt = <2700000>; 702 qcom,micbias4-microvolt = <2700000>; 703}; 704 705&wifi { 706 vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>; 707 vdd-1.8-xo-supply = <&vreg_l7a_1p8>; 708 vdd-1.3-rfa-supply = <&vreg_l17a_1p3>; 709 vdd-3.3-ch0-supply = <&vreg_l25a_3p3>; 710 vdd-3.3-ch1-supply = <&vreg_l23a_3p3>; 711 status = "okay"; 712}; 713