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