1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * Google Cheza device tree source (common between revisions) 4 * 5 * Copyright 2018 Google LLC. 6 */ 7 8#include <dt-bindings/input/input.h> 9#include <dt-bindings/regulator/qcom,rpmh-regulator.h> 10#include "sdm845.dtsi" 11 12/* PMICs depend on spmi_bus label and so must come after SoC */ 13#include "pm8005.dtsi" 14#include "pm8998.dtsi" 15 16/ { 17 aliases { 18 bluetooth0 = &bluetooth; 19 serial1 = &uart6; 20 serial0 = &uart9; 21 wifi0 = &wifi; 22 }; 23 24 chosen { 25 stdout-path = "serial0:115200n8"; 26 }; 27 28 backlight: backlight { 29 compatible = "pwm-backlight"; 30 pwms = <&cros_ec_pwm 0>; 31 enable-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; 32 power-supply = <&ppvar_sys>; 33 pinctrl-names = "default"; 34 pinctrl-0 = <&ap_edp_bklten>; 35 }; 36 37 /* FIXED REGULATORS - parents above children */ 38 39 /* This is the top level supply and variable voltage */ 40 ppvar_sys: ppvar-sys-regulator { 41 compatible = "regulator-fixed"; 42 regulator-name = "ppvar_sys"; 43 regulator-always-on; 44 regulator-boot-on; 45 }; 46 47 /* This divides ppvar_sys by 2, so voltage is variable */ 48 src_vph_pwr: src-vph-pwr-regulator { 49 compatible = "regulator-fixed"; 50 regulator-name = "src_vph_pwr"; 51 52 /* EC turns on with switchcap_on_l; always on for AP */ 53 regulator-always-on; 54 regulator-boot-on; 55 56 vin-supply = <&ppvar_sys>; 57 }; 58 59 pp5000_a: pp5000-a-regulator { 60 compatible = "regulator-fixed"; 61 regulator-name = "pp5000_a"; 62 63 /* EC turns on with en_pp5000_a; always on for AP */ 64 regulator-always-on; 65 regulator-boot-on; 66 regulator-min-microvolt = <5000000>; 67 regulator-max-microvolt = <5000000>; 68 69 vin-supply = <&ppvar_sys>; 70 }; 71 72 src_vreg_bob: src-vreg-bob-regulator { 73 compatible = "regulator-fixed"; 74 regulator-name = "src_vreg_bob"; 75 76 /* EC turns on with vbob_en; always on for AP */ 77 regulator-always-on; 78 regulator-boot-on; 79 regulator-min-microvolt = <3600000>; 80 regulator-max-microvolt = <3600000>; 81 82 vin-supply = <&ppvar_sys>; 83 }; 84 85 pp3300_dx_edp: pp3300-dx-edp-regulator { 86 compatible = "regulator-fixed"; 87 regulator-name = "pp3300_dx_edp"; 88 89 regulator-min-microvolt = <3300000>; 90 regulator-max-microvolt = <3300000>; 91 92 gpio = <&tlmm 43 GPIO_ACTIVE_HIGH>; 93 enable-active-high; 94 pinctrl-names = "default"; 95 pinctrl-0 = <&en_pp3300_dx_edp>; 96 }; 97 98 /* 99 * Apparently RPMh does not provide support for PM8998 S4 because it 100 * is always-on; model it as a fixed regulator. 101 */ 102 src_pp1800_s4a: pm8998-smps4 { 103 compatible = "regulator-fixed"; 104 regulator-name = "src_pp1800_s4a"; 105 106 regulator-min-microvolt = <1800000>; 107 regulator-max-microvolt = <1800000>; 108 109 regulator-always-on; 110 regulator-boot-on; 111 112 vin-supply = <&src_vph_pwr>; 113 }; 114 115 /* BOARD-SPECIFIC TOP LEVEL NODES */ 116 117 gpio-keys { 118 compatible = "gpio-keys"; 119 pinctrl-names = "default"; 120 pinctrl-0 = <&pen_eject_odl>; 121 122 switch-pen-insert { 123 label = "Pen Insert"; 124 /* Insert = low, eject = high */ 125 gpios = <&tlmm 119 GPIO_ACTIVE_LOW>; 126 linux,code = <SW_PEN_INSERTED>; 127 linux,input-type = <EV_SW>; 128 wakeup-source; 129 }; 130 }; 131 132 panel: panel { 133 compatible = "innolux,p120zdg-bf1"; 134 power-supply = <&pp3300_dx_edp>; 135 backlight = <&backlight>; 136 no-hpd; 137 138 ports { 139 panel_in: port { 140 panel_in_edp: endpoint { 141 remote-endpoint = <&sn65dsi86_out>; 142 }; 143 }; 144 }; 145 }; 146}; 147 148&psci { 149 /delete-node/ cpu0; 150 /delete-node/ cpu1; 151 /delete-node/ cpu2; 152 /delete-node/ cpu3; 153 /delete-node/ cpu4; 154 /delete-node/ cpu5; 155 /delete-node/ cpu6; 156 /delete-node/ cpu7; 157 /delete-node/ cpu-cluster0; 158}; 159 160&cpus { 161 /delete-node/ domain-idle-states; 162}; 163 164&cpu_idle_states { 165 LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 { 166 compatible = "arm,idle-state"; 167 idle-state-name = "little-power-down"; 168 arm,psci-suspend-param = <0x40000003>; 169 entry-latency-us = <350>; 170 exit-latency-us = <461>; 171 min-residency-us = <1890>; 172 local-timer-stop; 173 }; 174 175 LITTLE_CPU_SLEEP_1: cpu-sleep-0-1 { 176 compatible = "arm,idle-state"; 177 idle-state-name = "little-rail-power-down"; 178 arm,psci-suspend-param = <0x40000004>; 179 entry-latency-us = <360>; 180 exit-latency-us = <531>; 181 min-residency-us = <3934>; 182 local-timer-stop; 183 }; 184 185 BIG_CPU_SLEEP_0: cpu-sleep-1-0 { 186 compatible = "arm,idle-state"; 187 idle-state-name = "big-power-down"; 188 arm,psci-suspend-param = <0x40000003>; 189 entry-latency-us = <264>; 190 exit-latency-us = <621>; 191 min-residency-us = <952>; 192 local-timer-stop; 193 }; 194 195 BIG_CPU_SLEEP_1: cpu-sleep-1-1 { 196 compatible = "arm,idle-state"; 197 idle-state-name = "big-rail-power-down"; 198 arm,psci-suspend-param = <0x40000004>; 199 entry-latency-us = <702>; 200 exit-latency-us = <1061>; 201 min-residency-us = <4488>; 202 local-timer-stop; 203 }; 204 205 CLUSTER_SLEEP_0: cluster-sleep-0 { 206 compatible = "arm,idle-state"; 207 idle-state-name = "cluster-power-down"; 208 arm,psci-suspend-param = <0x400000F4>; 209 entry-latency-us = <3263>; 210 exit-latency-us = <6562>; 211 min-residency-us = <9987>; 212 local-timer-stop; 213 }; 214}; 215 216&CPU0 { 217 /delete-property/ power-domains; 218 /delete-property/ power-domain-names; 219 cpu-idle-states = <&LITTLE_CPU_SLEEP_0 220 &LITTLE_CPU_SLEEP_1 221 &CLUSTER_SLEEP_0>; 222}; 223 224&CPU1 { 225 /delete-property/ power-domains; 226 /delete-property/ power-domain-names; 227 cpu-idle-states = <&LITTLE_CPU_SLEEP_0 228 &LITTLE_CPU_SLEEP_1 229 &CLUSTER_SLEEP_0>; 230}; 231 232&CPU2 { 233 /delete-property/ power-domains; 234 /delete-property/ power-domain-names; 235 cpu-idle-states = <&LITTLE_CPU_SLEEP_0 236 &LITTLE_CPU_SLEEP_1 237 &CLUSTER_SLEEP_0>; 238}; 239 240&CPU3 { 241 /delete-property/ power-domains; 242 /delete-property/ power-domain-names; 243 cpu-idle-states = <&LITTLE_CPU_SLEEP_0 244 &LITTLE_CPU_SLEEP_1 245 &CLUSTER_SLEEP_0>; 246}; 247 248&CPU4 { 249 /delete-property/ power-domains; 250 /delete-property/ power-domain-names; 251 cpu-idle-states = <&BIG_CPU_SLEEP_0 252 &BIG_CPU_SLEEP_1 253 &CLUSTER_SLEEP_0>; 254}; 255 256&CPU5 { 257 /delete-property/ power-domains; 258 /delete-property/ power-domain-names; 259 cpu-idle-states = <&BIG_CPU_SLEEP_0 260 &BIG_CPU_SLEEP_1 261 &CLUSTER_SLEEP_0>; 262}; 263 264&CPU6 { 265 /delete-property/ power-domains; 266 /delete-property/ power-domain-names; 267 cpu-idle-states = <&BIG_CPU_SLEEP_0 268 &BIG_CPU_SLEEP_1 269 &CLUSTER_SLEEP_0>; 270}; 271 272&CPU7 { 273 /delete-property/ power-domains; 274 /delete-property/ power-domain-names; 275 cpu-idle-states = <&BIG_CPU_SLEEP_0 276 &BIG_CPU_SLEEP_1 277 &CLUSTER_SLEEP_0>; 278}; 279 280/* 281 * Reserved memory changes 282 * 283 * Putting this all together (out of order with the rest of the file) to keep 284 * all modifications to the memory map (from sdm845.dtsi) in one place. 285 */ 286 287/* 288 * Our mpss_region is 8MB bigger than the default one and that conflicts 289 * with venus_mem and cdsp_mem. 290 * 291 * For venus_mem we'll delete and re-create at a different address. 292 * 293 * cdsp_mem isn't used on cheza right now so we won't bother re-creating it; but 294 * that also means we need to delete cdsp_pas. 295 */ 296/delete-node/ &venus_mem; 297/delete-node/ &cdsp_mem; 298/delete-node/ &cdsp_pas; 299/delete-node/ &gpu_mem; 300 301/* Increase the size from 120 MB to 128 MB */ 302&mpss_region { 303 reg = <0 0x8e000000 0 0x8000000>; 304}; 305 306/* Increase the size from 2MB to 8MB */ 307&rmtfs_mem { 308 reg = <0 0x88f00000 0 0x800000>; 309}; 310 311/ { 312 reserved-memory { 313 venus_mem: memory@96000000 { 314 reg = <0 0x96000000 0 0x500000>; 315 no-map; 316 }; 317 }; 318}; 319 320&qspi { 321 status = "okay"; 322 pinctrl-names = "default"; 323 pinctrl-0 = <&qspi_clk &qspi_cs0 &qspi_data01>; 324 325 flash@0 { 326 compatible = "jedec,spi-nor"; 327 reg = <0>; 328 329 /* 330 * In theory chip supports up to 104 MHz and controller up 331 * to 80 MHz, but above 25 MHz wasn't reliable so we'll use 332 * that for now. b:117440651 333 */ 334 spi-max-frequency = <25000000>; 335 spi-tx-bus-width = <2>; 336 spi-rx-bus-width = <2>; 337 }; 338}; 339 340 341&apps_rsc { 342 regulators-0 { 343 compatible = "qcom,pm8998-rpmh-regulators"; 344 qcom,pmic-id = "a"; 345 346 vdd-s1-supply = <&src_vph_pwr>; 347 vdd-s2-supply = <&src_vph_pwr>; 348 vdd-s3-supply = <&src_vph_pwr>; 349 vdd-s4-supply = <&src_vph_pwr>; 350 vdd-s5-supply = <&src_vph_pwr>; 351 vdd-s6-supply = <&src_vph_pwr>; 352 vdd-s7-supply = <&src_vph_pwr>; 353 vdd-s8-supply = <&src_vph_pwr>; 354 vdd-s9-supply = <&src_vph_pwr>; 355 vdd-s10-supply = <&src_vph_pwr>; 356 vdd-s11-supply = <&src_vph_pwr>; 357 vdd-s12-supply = <&src_vph_pwr>; 358 vdd-s13-supply = <&src_vph_pwr>; 359 vdd-l1-l27-supply = <&src_pp1025_s7a>; 360 vdd-l2-l8-l17-supply = <&src_pp1350_s3a>; 361 vdd-l3-l11-supply = <&src_pp1025_s7a>; 362 vdd-l4-l5-supply = <&src_pp1025_s7a>; 363 vdd-l6-supply = <&src_vph_pwr>; 364 vdd-l7-l12-l14-l15-supply = <&src_pp2040_s5a>; 365 vdd-l9-supply = <&src_pp2040_s5a>; 366 vdd-l10-l23-l25-supply = <&src_vreg_bob>; 367 vdd-l13-l19-l21-supply = <&src_vreg_bob>; 368 vdd-l16-l28-supply = <&src_vreg_bob>; 369 vdd-l18-l22-supply = <&src_vreg_bob>; 370 vdd-l20-l24-supply = <&src_vreg_bob>; 371 vdd-l26-supply = <&src_pp1350_s3a>; 372 vin-lvs-1-2-supply = <&src_pp1800_s4a>; 373 374 src_pp1125_s2a: smps2 { 375 regulator-min-microvolt = <1100000>; 376 regulator-max-microvolt = <1100000>; 377 }; 378 379 src_pp1350_s3a: smps3 { 380 regulator-min-microvolt = <1352000>; 381 regulator-max-microvolt = <1352000>; 382 }; 383 384 src_pp2040_s5a: smps5 { 385 regulator-min-microvolt = <1904000>; 386 regulator-max-microvolt = <2040000>; 387 }; 388 389 src_pp1025_s7a: smps7 { 390 regulator-min-microvolt = <900000>; 391 regulator-max-microvolt = <1028000>; 392 }; 393 394 vdd_qusb_hs0: 395 vdda_hp_pcie_core: 396 vdda_mipi_csi0_0p9: 397 vdda_mipi_csi1_0p9: 398 vdda_mipi_csi2_0p9: 399 vdda_mipi_dsi0_pll: 400 vdda_mipi_dsi1_pll: 401 vdda_qlink_lv: 402 vdda_qlink_lv_ck: 403 vdda_qrefs_0p875: 404 vdda_pcie_core: 405 vdda_pll_cc_ebi01: 406 vdda_pll_cc_ebi23: 407 vdda_sp_sensor: 408 vdda_ufs1_core: 409 vdda_ufs2_core: 410 vdda_usb1_ss_core: 411 vdda_usb2_ss_core: 412 src_pp875_l1a: ldo1 { 413 regulator-min-microvolt = <880000>; 414 regulator-max-microvolt = <880000>; 415 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 416 }; 417 418 vddpx_10: 419 src_pp1200_l2a: ldo2 { 420 regulator-min-microvolt = <1200000>; 421 regulator-max-microvolt = <1200000>; 422 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 423 424 /* TODO: why??? */ 425 regulator-always-on; 426 }; 427 428 pp1000_l3a_sdr845: ldo3 { 429 regulator-min-microvolt = <1000000>; 430 regulator-max-microvolt = <1000000>; 431 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 432 }; 433 434 vdd_wcss_cx: 435 vdd_wcss_mx: 436 vdda_wcss_pll: 437 src_pp800_l5a: ldo5 { 438 regulator-min-microvolt = <800000>; 439 regulator-max-microvolt = <800000>; 440 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 441 }; 442 443 vddpx_13: 444 src_pp1800_l6a: ldo6 { 445 regulator-min-microvolt = <1856000>; 446 regulator-max-microvolt = <1856000>; 447 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 448 }; 449 450 pp1800_l7a_wcn3990: ldo7 { 451 regulator-min-microvolt = <1800000>; 452 regulator-max-microvolt = <1800000>; 453 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 454 }; 455 456 src_pp1200_l8a: ldo8 { 457 regulator-min-microvolt = <1200000>; 458 regulator-max-microvolt = <1248000>; 459 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 460 }; 461 462 pp1800_dx_pen: 463 src_pp1800_l9a: ldo9 { 464 regulator-min-microvolt = <1800000>; 465 regulator-max-microvolt = <1800000>; 466 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 467 }; 468 469 src_pp1800_l10a: ldo10 { 470 regulator-min-microvolt = <1800000>; 471 regulator-max-microvolt = <1800000>; 472 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 473 }; 474 475 pp1000_l11a_sdr845: ldo11 { 476 regulator-min-microvolt = <1000000>; 477 regulator-max-microvolt = <1048000>; 478 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 479 }; 480 481 vdd_qfprom: 482 vdd_qfprom_sp: 483 vdda_apc1_cs_1p8: 484 vdda_gfx_cs_1p8: 485 vdda_qrefs_1p8: 486 vdda_qusb_hs0_1p8: 487 vddpx_11: 488 src_pp1800_l12a: ldo12 { 489 regulator-min-microvolt = <1800000>; 490 regulator-max-microvolt = <1800000>; 491 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 492 }; 493 494 vddpx_2: 495 src_pp2950_l13a: ldo13 { 496 regulator-min-microvolt = <1800000>; 497 regulator-max-microvolt = <2960000>; 498 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 499 }; 500 501 src_pp1800_l14a: ldo14 { 502 regulator-min-microvolt = <1800000>; 503 regulator-max-microvolt = <1800000>; 504 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 505 }; 506 507 src_pp1800_l15a: ldo15 { 508 regulator-min-microvolt = <1800000>; 509 regulator-max-microvolt = <1800000>; 510 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 511 }; 512 513 pp2700_l16a: ldo16 { 514 regulator-min-microvolt = <2704000>; 515 regulator-max-microvolt = <2704000>; 516 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 517 }; 518 519 src_pp1300_l17a: ldo17 { 520 regulator-min-microvolt = <1304000>; 521 regulator-max-microvolt = <1304000>; 522 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 523 }; 524 525 pp2700_l18a: ldo18 { 526 regulator-min-microvolt = <2704000>; 527 regulator-max-microvolt = <2960000>; 528 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 529 }; 530 531 /* 532 * NOTE: this rail should have been called 533 * src_pp3300_l19a in the schematic 534 */ 535 src_pp3000_l19a: ldo19 { 536 regulator-min-microvolt = <3304000>; 537 regulator-max-microvolt = <3304000>; 538 539 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 540 }; 541 542 src_pp2950_l20a: ldo20 { 543 regulator-min-microvolt = <2704000>; 544 regulator-max-microvolt = <2960000>; 545 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 546 }; 547 548 src_pp2950_l21a: ldo21 { 549 regulator-min-microvolt = <2704000>; 550 regulator-max-microvolt = <2960000>; 551 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 552 }; 553 554 pp3300_hub: 555 src_pp3300_l22a: ldo22 { 556 regulator-min-microvolt = <3304000>; 557 regulator-max-microvolt = <3304000>; 558 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 559 /* 560 * HACK: Should add a usb hub node and driver 561 * to turn this on and off at suspend/resume time 562 */ 563 regulator-boot-on; 564 regulator-always-on; 565 }; 566 567 pp3300_l23a_ch1_wcn3990: ldo23 { 568 regulator-min-microvolt = <3000000>; 569 regulator-max-microvolt = <3312000>; 570 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 571 }; 572 573 vdda_qusb_hs0_3p1: 574 src_pp3075_l24a: ldo24 { 575 regulator-min-microvolt = <3088000>; 576 regulator-max-microvolt = <3088000>; 577 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 578 }; 579 580 pp3300_l25a_ch0_wcn3990: ldo25 { 581 regulator-min-microvolt = <3304000>; 582 regulator-max-microvolt = <3304000>; 583 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 584 }; 585 586 pp1200_hub: 587 vdda_hp_pcie_1p2: 588 vdda_hv_ebi0: 589 vdda_hv_ebi1: 590 vdda_hv_ebi2: 591 vdda_hv_ebi3: 592 vdda_mipi_csi_1p25: 593 vdda_mipi_dsi0_1p2: 594 vdda_mipi_dsi1_1p2: 595 vdda_pcie_1p2: 596 vdda_ufs1_1p2: 597 vdda_ufs2_1p2: 598 vdda_usb1_ss_1p2: 599 vdda_usb2_ss_1p2: 600 src_pp1200_l26a: ldo26 { 601 regulator-min-microvolt = <1200000>; 602 regulator-max-microvolt = <1200000>; 603 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 604 }; 605 606 pp3300_dx_pen: 607 src_pp3300_l28a: ldo28 { 608 regulator-min-microvolt = <3304000>; 609 regulator-max-microvolt = <3304000>; 610 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 611 }; 612 613 src_pp1800_lvs1: lvs1 { 614 regulator-min-microvolt = <1800000>; 615 regulator-max-microvolt = <1800000>; 616 }; 617 618 src_pp1800_lvs2: lvs2 { 619 regulator-min-microvolt = <1800000>; 620 regulator-max-microvolt = <1800000>; 621 }; 622 }; 623 624 regulators-1 { 625 compatible = "qcom,pm8005-rpmh-regulators"; 626 qcom,pmic-id = "c"; 627 628 vdd-s1-supply = <&src_vph_pwr>; 629 vdd-s2-supply = <&src_vph_pwr>; 630 vdd-s3-supply = <&src_vph_pwr>; 631 vdd-s4-supply = <&src_vph_pwr>; 632 633 src_pp600_s3c: smps3 { 634 regulator-min-microvolt = <600000>; 635 regulator-max-microvolt = <600000>; 636 }; 637 }; 638}; 639 640&dsi0 { 641 status = "okay"; 642 vdda-supply = <&vdda_mipi_dsi0_1p2>; 643 644 ports { 645 port@1 { 646 endpoint { 647 remote-endpoint = <&sn65dsi86_in>; 648 data-lanes = <0 1 2 3>; 649 }; 650 }; 651 }; 652}; 653 654&dsi0_phy { 655 status = "okay"; 656 vdds-supply = <&vdda_mipi_dsi0_pll>; 657}; 658 659edp_brij_i2c: &i2c3 { 660 status = "okay"; 661 clock-frequency = <400000>; 662 663 sn65dsi86_bridge: bridge@2d { 664 compatible = "ti,sn65dsi86"; 665 reg = <0x2d>; 666 pinctrl-names = "default"; 667 pinctrl-0 = <&edp_brij_en &edp_brij_irq>; 668 669 interrupt-parent = <&tlmm>; 670 interrupts = <10 IRQ_TYPE_LEVEL_HIGH>; 671 672 enable-gpios = <&tlmm 102 GPIO_ACTIVE_HIGH>; 673 674 vpll-supply = <&src_pp1800_s4a>; 675 vccio-supply = <&src_pp1800_s4a>; 676 vcca-supply = <&src_pp1200_l2a>; 677 vcc-supply = <&src_pp1200_l2a>; 678 679 clocks = <&rpmhcc RPMH_LN_BB_CLK2>; 680 clock-names = "refclk"; 681 682 no-hpd; 683 684 ports { 685 #address-cells = <1>; 686 #size-cells = <0>; 687 688 port@0 { 689 reg = <0>; 690 sn65dsi86_in: endpoint { 691 remote-endpoint = <&dsi0_out>; 692 }; 693 }; 694 695 port@1 { 696 reg = <1>; 697 sn65dsi86_out: endpoint { 698 remote-endpoint = <&panel_in_edp>; 699 }; 700 }; 701 }; 702 }; 703}; 704 705ap_pen_1v8: &i2c11 { 706 status = "okay"; 707 clock-frequency = <400000>; 708 709 digitizer@9 { 710 compatible = "wacom,w9013", "hid-over-i2c"; 711 reg = <0x9>; 712 pinctrl-names = "default"; 713 pinctrl-0 = <&pen_irq_l>, <&pen_pdct_l>, <&pen_rst_l>; 714 715 vdd-supply = <&pp3300_dx_pen>; 716 vddl-supply = <&pp1800_dx_pen>; 717 post-power-on-delay-ms = <100>; 718 719 interrupt-parent = <&tlmm>; 720 interrupts = <24 IRQ_TYPE_LEVEL_LOW>; 721 722 hid-descr-addr = <0x1>; 723 }; 724}; 725 726amp_i2c: &i2c12 { 727 status = "okay"; 728 clock-frequency = <400000>; 729}; 730 731ap_ts_i2c: &i2c14 { 732 status = "okay"; 733 clock-frequency = <400000>; 734 735 touchscreen@10 { 736 compatible = "elan,ekth3500"; 737 reg = <0x10>; 738 pinctrl-names = "default"; 739 pinctrl-0 = <&ts_int_l &ts_reset_l>; 740 741 interrupt-parent = <&tlmm>; 742 interrupts = <125 IRQ_TYPE_LEVEL_LOW>; 743 744 vcc33-supply = <&src_pp3300_l28a>; 745 746 reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>; 747 }; 748}; 749 750&gmu { 751 status = "okay"; 752}; 753 754&gpu { 755 status = "okay"; 756}; 757 758&ipa { 759 qcom,gsi-loader = "modem"; 760 status = "okay"; 761}; 762 763&lpasscc { 764 status = "okay"; 765}; 766 767&mdss { 768 status = "okay"; 769}; 770 771/* 772 * Cheza fw does not properly program the GPU aperture to allow the 773 * GPU to update the SMMU pagetables for context switches. Work 774 * around this by dropping the "qcom,adreno-smmu" compat string. 775 */ 776&adreno_smmu { 777 compatible = "qcom,sdm845-smmu-v2", "qcom,smmu-v2"; 778}; 779 780&mss_pil { 781 status = "okay"; 782 783 iommus = <&apps_smmu 0x781 0x0>, 784 <&apps_smmu 0x724 0x3>; 785}; 786 787&pm8998_pwrkey { 788 status = "disabled"; 789}; 790 791&qupv3_id_0 { 792 status = "okay"; 793 iommus = <&apps_smmu 0x0 0x3>; 794}; 795 796&qupv3_id_1 { 797 status = "okay"; 798 iommus = <&apps_smmu 0x6c0 0x3>; 799}; 800 801&sdhc_2 { 802 status = "okay"; 803 804 pinctrl-names = "default"; 805 pinctrl-0 = <&sdc2_clk &sdc2_cmd &sdc2_data &sd_cd_odl>; 806 807 vmmc-supply = <&src_pp2950_l21a>; 808 vqmmc-supply = <&vddpx_2>; 809 810 cd-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>; 811}; 812 813&spi0 { 814 status = "okay"; 815}; 816 817&spi5 { 818 status = "okay"; 819 820 tpm@0 { 821 compatible = "google,cr50"; 822 reg = <0>; 823 pinctrl-names = "default"; 824 pinctrl-0 = <&h1_ap_int_odl>; 825 spi-max-frequency = <800000>; 826 interrupt-parent = <&tlmm>; 827 interrupts = <129 IRQ_TYPE_EDGE_RISING>; 828 }; 829}; 830 831&spi10 { 832 status = "okay"; 833 834 cros_ec: ec@0 { 835 compatible = "google,cros-ec-spi"; 836 reg = <0>; 837 interrupt-parent = <&tlmm>; 838 interrupts = <122 IRQ_TYPE_LEVEL_LOW>; 839 pinctrl-names = "default"; 840 pinctrl-0 = <&ec_ap_int_l>; 841 spi-max-frequency = <3000000>; 842 843 cros_ec_pwm: pwm { 844 compatible = "google,cros-ec-pwm"; 845 #pwm-cells = <1>; 846 }; 847 848 i2c_tunnel: i2c-tunnel { 849 compatible = "google,cros-ec-i2c-tunnel"; 850 google,remote-bus = <0>; 851 #address-cells = <1>; 852 #size-cells = <0>; 853 }; 854 }; 855}; 856 857#include <arm/cros-ec-keyboard.dtsi> 858#include <arm/cros-ec-sbs.dtsi> 859 860&uart6 { 861 status = "okay"; 862 863 pinctrl-0 = <&qup_uart6_4pin>; 864 865 bluetooth: bluetooth { 866 compatible = "qcom,wcn3990-bt"; 867 vddio-supply = <&src_pp1800_s4a>; 868 vddxo-supply = <&pp1800_l7a_wcn3990>; 869 vddrf-supply = <&src_pp1300_l17a>; 870 vddch0-supply = <&pp3300_l25a_ch0_wcn3990>; 871 max-speed = <3200000>; 872 }; 873}; 874 875&uart9 { 876 status = "okay"; 877}; 878 879&ufs_mem_hc { 880 status = "okay"; 881 882 reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>; 883 884 vcc-supply = <&src_pp2950_l20a>; 885 vcc-max-microamp = <600000>; 886}; 887 888&ufs_mem_phy { 889 status = "okay"; 890 891 vdda-phy-supply = <&vdda_ufs1_core>; 892 vdda-pll-supply = <&vdda_ufs1_1p2>; 893}; 894 895&usb_1 { 896 status = "okay"; 897 898 /* We'll use this as USB 2.0 only */ 899 qcom,select-utmi-as-pipe-clk; 900}; 901 902&usb_1_dwc3 { 903 /* 904 * The hardware design intends this port to be hooked up in peripheral 905 * mode, so we'll hardcode it here. Some details: 906 * - SDM845 expects only a single Type C connector so it has only one 907 * native Type C port but cheza has two Type C connectors. 908 * - The only source of DP is the single native Type C port. 909 * - On cheza we want to be able to hook DP up to _either_ of the 910 * two Type C connectors and want to be able to achieve 4 lanes of DP. 911 * - When you configure a Type C port for 4 lanes of DP you lose USB3. 912 * - In order to make everything work, the native Type C port is always 913 * configured as 4-lanes DP so it's always available. 914 * - The extra USB3 port on SDM845 goes to a USB 3 hub which is then 915 * sent to the two Type C connectors. 916 * - The extra USB2 lines from the native Type C port are always 917 * setup as "peripheral" so that we can mux them over to one connector 918 * or the other if someone needs the connector configured as a gadget 919 * (but they only get USB2 speeds). 920 * 921 * All the hardware muxes would allow us to hook things up in different 922 * ways to some potential benefit for static configurations (you could 923 * achieve extra USB2 bandwidth by using two different ports for the 924 * two connectors or possibly even get USB3 peripheral mode), but in 925 * each case you end up forcing to disconnect/reconnect an in-use 926 * USB session in some cases depending on what you hotplug into the 927 * other connector. Thus hardcoding this as peripheral makes sense. 928 */ 929 dr_mode = "peripheral"; 930 931 /* 932 * We always need the high speed pins as 4-lanes DP in case someone 933 * hotplugs a DP peripheral. Thus limit this port to a max of high 934 * speed. 935 */ 936 maximum-speed = "high-speed"; 937 938 /* 939 * We don't need the usb3-phy since we run in highspeed mode always, so 940 * re-define these properties removing the superspeed USB PHY reference. 941 */ 942 phys = <&usb_1_hsphy>; 943 phy-names = "usb2-phy"; 944}; 945 946&usb_1_hsphy { 947 status = "okay"; 948 949 vdd-supply = <&vdda_usb1_ss_core>; 950 vdda-pll-supply = <&vdda_qusb_hs0_1p8>; 951 vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>; 952 953 qcom,imp-res-offset-value = <8>; 954 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>; 955 qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>; 956 qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>; 957}; 958 959&usb_2 { 960 status = "okay"; 961}; 962 963&usb_2_dwc3 { 964 /* We have this hooked up to a hub and we always use in host mode */ 965 dr_mode = "host"; 966}; 967 968&usb_2_hsphy { 969 status = "okay"; 970 971 vdd-supply = <&vdda_usb2_ss_core>; 972 vdda-pll-supply = <&vdda_qusb_hs0_1p8>; 973 vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>; 974 975 qcom,imp-res-offset-value = <8>; 976 qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_22_8_MA>; 977}; 978 979&usb_2_qmpphy { 980 status = "okay"; 981 982 vdda-phy-supply = <&vdda_usb2_ss_1p2>; 983 vdda-pll-supply = <&vdda_usb2_ss_core>; 984}; 985 986&wifi { 987 status = "okay"; 988 989 vdd-0.8-cx-mx-supply = <&src_pp800_l5a >; 990 vdd-1.8-xo-supply = <&pp1800_l7a_wcn3990>; 991 vdd-1.3-rfa-supply = <&src_pp1300_l17a>; 992 vdd-3.3-ch0-supply = <&pp3300_l25a_ch0_wcn3990>; 993}; 994 995/* PINCTRL - additions to nodes defined in sdm845.dtsi */ 996 997&qspi_cs0 { 998 bias-disable; 999}; 1000 1001&qspi_clk { 1002 bias-disable; 1003}; 1004 1005&qspi_data01 { 1006 /* High-Z when no transfers; nice to park the lines */ 1007 bias-pull-up; 1008}; 1009 1010&qup_i2c3_default { 1011 drive-strength = <2>; 1012 1013 /* Has external pullup */ 1014 bias-disable; 1015}; 1016 1017&qup_i2c11_default { 1018 drive-strength = <2>; 1019 1020 /* Has external pullup */ 1021 bias-disable; 1022}; 1023 1024&qup_i2c12_default { 1025 drive-strength = <2>; 1026 1027 /* Has external pullup */ 1028 bias-disable; 1029}; 1030 1031&qup_i2c14_default { 1032 drive-strength = <2>; 1033 1034 /* Has external pullup */ 1035 bias-disable; 1036}; 1037 1038&qup_spi0_default { 1039 drive-strength = <2>; 1040 bias-disable; 1041}; 1042 1043&qup_spi5_default { 1044 drive-strength = <2>; 1045 bias-disable; 1046}; 1047 1048&qup_spi10_default { 1049 drive-strength = <2>; 1050 bias-disable; 1051}; 1052 1053&qup_uart9_rx { 1054 drive-strength = <2>; 1055 bias-pull-up; 1056}; 1057 1058&qup_uart9_tx { 1059 drive-strength = <2>; 1060 bias-disable; 1061}; 1062 1063/* PINCTRL - board-specific pinctrl */ 1064&pm8005_gpios { 1065 gpio-line-names = "", 1066 "", 1067 "SLB", 1068 ""; 1069}; 1070 1071&pm8998_adc { 1072 adc-chan@4d { 1073 reg = <ADC5_AMUX_THM1_100K_PU>; 1074 label = "sdm_temp"; 1075 }; 1076 1077 adc-chan@4e { 1078 reg = <ADC5_AMUX_THM2_100K_PU>; 1079 label = "quiet_temp"; 1080 }; 1081 1082 adc-chan@4f { 1083 reg = <ADC5_AMUX_THM3_100K_PU>; 1084 label = "lte_temp_1"; 1085 }; 1086 1087 adc-chan@50 { 1088 reg = <ADC5_AMUX_THM4_100K_PU>; 1089 label = "lte_temp_2"; 1090 }; 1091 1092 adc-chan@51 { 1093 reg = <ADC5_AMUX_THM5_100K_PU>; 1094 label = "charger_temp"; 1095 }; 1096}; 1097 1098&pm8998_gpios { 1099 gpio-line-names = "", 1100 "", 1101 "SW_CTRL", 1102 "", 1103 "", 1104 "", 1105 "", 1106 "", 1107 "", 1108 "", 1109 "", 1110 "", 1111 "", 1112 "", 1113 "", 1114 "", 1115 "", 1116 "", 1117 "", 1118 "", 1119 "", 1120 "CFG_OPT1", 1121 "WCSS_PWR_REQ", 1122 "", 1123 "CFG_OPT2", 1124 "SLB"; 1125}; 1126 1127&tlmm { 1128 /* 1129 * pinctrl settings for pins that have no real owners. 1130 */ 1131 pinctrl-names = "default", "sleep"; 1132 pinctrl-0 = <&bios_flash_wp_r_l>, 1133 <&ap_suspend_l_deassert>; 1134 1135 pinctrl-1 = <&bios_flash_wp_r_l>, 1136 <&ap_suspend_l_assert>; 1137 1138 /* 1139 * Hogs prevent usermode from changing the value. A GPIO can be both 1140 * here and in the pinctrl section. 1141 */ 1142 ap-suspend-l-hog { 1143 gpio-hog; 1144 gpios = <126 GPIO_ACTIVE_LOW>; 1145 output-low; 1146 }; 1147 1148 ap_edp_bklten: ap-edp-bklten-state { 1149 pins = "gpio37"; 1150 function = "gpio"; 1151 drive-strength = <2>; 1152 bias-disable; 1153 }; 1154 1155 bios_flash_wp_r_l: bios-flash-wp-r-l-state { 1156 pins = "gpio128"; 1157 function = "gpio"; 1158 input-enable; 1159 bias-disable; 1160 }; 1161 1162 ec_ap_int_l: ec-ap-int-l-state { 1163 pins = "gpio122"; 1164 function = "gpio"; 1165 input-enable; 1166 bias-pull-up; 1167 }; 1168 1169 edp_brij_en: edp-brij-en-state { 1170 pins = "gpio102"; 1171 function = "gpio"; 1172 drive-strength = <2>; 1173 bias-disable; 1174 }; 1175 1176 edp_brij_irq: edp-brij-irq-state { 1177 pins = "gpio10"; 1178 function = "gpio"; 1179 drive-strength = <2>; 1180 bias-pull-down; 1181 }; 1182 1183 en_pp3300_dx_edp: en-pp3300-dx-edp-state { 1184 pins = "gpio43"; 1185 function = "gpio"; 1186 drive-strength = <2>; 1187 bias-disable; 1188 }; 1189 1190 h1_ap_int_odl: h1-ap-int-odl-state { 1191 pins = "gpio129"; 1192 function = "gpio"; 1193 input-enable; 1194 bias-pull-up; 1195 }; 1196 1197 pen_eject_odl: pen-eject-odl-state { 1198 pins = "gpio119"; 1199 function = "gpio"; 1200 bias-pull-up; 1201 }; 1202 1203 pen_irq_l: pen-irq-l-state { 1204 pins = "gpio24"; 1205 function = "gpio"; 1206 1207 /* Has external pullup */ 1208 bias-disable; 1209 }; 1210 1211 pen_pdct_l: pen-pdct-l-state { 1212 pins = "gpio63"; 1213 function = "gpio"; 1214 1215 /* Has external pullup */ 1216 bias-disable; 1217 }; 1218 1219 pen_rst_l: pen-rst-l-state { 1220 pins = "gpio23"; 1221 function = "gpio"; 1222 bias-disable; 1223 drive-strength = <2>; 1224 1225 /* 1226 * The pen driver doesn't currently support 1227 * driving this reset line. By specifying 1228 * output-high here we're relying on the fact 1229 * that this pin has a default pulldown at boot 1230 * (which makes sure the pen was in reset if it 1231 * was powered) and then we set it high here to 1232 * take it out of reset. Better would be if the 1233 * pen driver could control this and we could 1234 * remove "output-high" here. 1235 */ 1236 output-high; 1237 }; 1238 1239 sdc2_clk: sdc2-clk-state { 1240 pins = "sdc2_clk"; 1241 bias-disable; 1242 1243 /* 1244 * It seems that mmc_test reports errors if drive 1245 * strength is not 16. 1246 */ 1247 drive-strength = <16>; 1248 }; 1249 1250 sdc2_cmd: sdc2-cmd-state { 1251 pins = "sdc2_cmd"; 1252 bias-pull-up; 1253 drive-strength = <16>; 1254 }; 1255 1256 sdc2_data: sdc2-data-state { 1257 pins = "sdc2_data"; 1258 bias-pull-up; 1259 drive-strength = <16>; 1260 }; 1261 1262 sd_cd_odl: sd-cd-odl-state { 1263 pins = "gpio44"; 1264 function = "gpio"; 1265 bias-pull-up; 1266 }; 1267 1268 ts_int_l: ts-int-l-state { 1269 pins = "gpio125"; 1270 function = "gpio"; 1271 bias-pull-up; 1272 }; 1273 1274 ts_reset_l: ts-reset-l-state { 1275 pins = "gpio118"; 1276 function = "gpio"; 1277 bias-disable; 1278 drive-strength = <2>; 1279 }; 1280 1281 ap_suspend_l_assert: ap-suspend-l-assert-state { 1282 pins = "gpio126"; 1283 function = "gpio"; 1284 bias-disable; 1285 drive-strength = <2>; 1286 output-low; 1287 }; 1288 1289 ap_suspend_l_deassert: ap-suspend-l-deassert-state { 1290 pins = "gpio126"; 1291 function = "gpio"; 1292 bias-disable; 1293 drive-strength = <2>; 1294 output-high; 1295 }; 1296}; 1297 1298&venus { 1299 status = "okay"; 1300 1301 video-firmware { 1302 iommus = <&apps_smmu 0x10b2 0x0>; 1303 }; 1304}; 1305