1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org> 4 */ 5 6#include <dt-bindings/regulator/qcom,rpmh-regulator.h> 7#include "sm8250.dtsi" 8#include "pm8150.dtsi" 9#include "pm8150b.dtsi" 10#include "pm8150l.dtsi" 11#include "pm8009.dtsi" 12 13/delete-node/ &adsp_mem; 14/delete-node/ &spss_mem; 15/delete-node/ &cdsp_secure_heap; 16 17/ { 18 qcom,msm-id = <356 0x20001>; /* SM8250 v2.1 */ 19 qcom,board-id = <0x10008 0>; 20 21 chosen { 22 #address-cells = <2>; 23 #size-cells = <2>; 24 ranges; 25 26 framebuffer: framebuffer@9c000000 { 27 compatible = "simple-framebuffer"; 28 reg = <0 0x9c000000 0 0x2300000>; 29 /* pdx203 BL initializes in 2.5k mode, not 4k */ 30 width = <1096>; 31 height = <2560>; 32 stride = <(1096 * 4)>; 33 format = "a8r8g8b8"; 34 /* 35 * That's a lot of clocks, but it's necessary due 36 * to unused clk cleanup & no panel driver yet.. 37 */ 38 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 39 <&gcc GCC_DISP_HF_AXI_CLK>, 40 <&gcc GCC_DISP_SF_AXI_CLK>, 41 <&dispcc DISP_CC_MDSS_VSYNC_CLK>, 42 <&dispcc DISP_CC_MDSS_MDP_CLK>, 43 <&dispcc DISP_CC_MDSS_BYTE0_CLK>, 44 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>, 45 <&dispcc DISP_CC_MDSS_PCLK0_CLK>, 46 <&dispcc DISP_CC_MDSS_ESC0_CLK>; 47 power-domains = <&dispcc MDSS_GDSC>; 48 }; 49 }; 50 51 gpio_keys: gpio-keys { 52 compatible = "gpio-keys"; 53 54 pinctrl-0 = <&focus_n &snapshot_n &vol_down_n>; 55 pinctrl-names = "default"; 56 57 key-camera-focus { 58 label = "Camera Focus"; 59 linux,code = <KEY_CAMERA_FOCUS>; 60 gpios = <&pm8150b_gpios 2 GPIO_ACTIVE_LOW>; 61 debounce-interval = <15>; 62 linux,can-disable; 63 wakeup-source; 64 }; 65 66 key-camera-snapshot { 67 label = "Camera Snapshot"; 68 linux,code = <KEY_CAMERA>; 69 gpios = <&pm8150b_gpios 1 GPIO_ACTIVE_LOW>; 70 debounce-interval = <15>; 71 linux,can-disable; 72 wakeup-source; 73 }; 74 75 vol-down { 76 label = "Volume Down"; 77 linux,code = <KEY_VOLUMEDOWN>; 78 gpios = <&pm8150_gpios 1 GPIO_ACTIVE_LOW>; 79 debounce-interval = <15>; 80 linux,can-disable; 81 gpio-key,wakeup; 82 }; 83 }; 84 85 vph_pwr: vph-pwr-regulator { 86 compatible = "regulator-fixed"; 87 regulator-name = "vph_pwr"; 88 regulator-min-microvolt = <3700000>; 89 regulator-max-microvolt = <3700000>; 90 }; 91 92 /* S6c is really ebi.lvl but it's there for supply map completeness sake. */ 93 vreg_s6c_0p88: smpc6-regulator { 94 compatible = "regulator-fixed"; 95 regulator-name = "vreg_s6c_0p88"; 96 97 regulator-min-microvolt = <880000>; 98 regulator-max-microvolt = <880000>; 99 regulator-always-on; 100 vin-supply = <&vph_pwr>; 101 }; 102 103 reserved-memory { 104 adsp_mem: memory@8a100000 { 105 reg = <0x0 0x8a100000 0x0 0x2500000>; 106 no-map; 107 }; 108 109 spss_mem: memory@8c600000 { 110 reg = <0x0 0x8c600000 0x0 0x100000>; 111 no-map; 112 }; 113 114 cdsp_secure_heap: memory@8c700000 { 115 reg = <0x0 0x8c700000 0x0 0x4600000>; 116 no-map; 117 }; 118 119 cont_splash_mem: memory@9c000000 { 120 reg = <0x0 0x9c000000 0x0 0x2300000>; 121 no-map; 122 }; 123 124 ramoops@ffc00000 { 125 compatible = "ramoops"; 126 reg = <0x0 0xffc00000 0x0 0x100000>; 127 record-size = <0x1000>; 128 console-size = <0x40000>; 129 pmsg-size = <0x20000>; 130 ecc-size = <16>; 131 no-map; 132 }; 133 }; 134}; 135 136&adsp { 137 status = "okay"; 138}; 139 140&apps_rsc { 141 pm8150-rpmh-regulators { 142 compatible = "qcom,pm8150-rpmh-regulators"; 143 qcom,pmic-id = "a"; 144 145 vdd-s1-supply = <&vph_pwr>; 146 vdd-s2-supply = <&vph_pwr>; 147 vdd-s3-supply = <&vph_pwr>; 148 vdd-s4-supply = <&vph_pwr>; 149 vdd-s5-supply = <&vph_pwr>; 150 vdd-s6-supply = <&vph_pwr>; 151 vdd-s7-supply = <&vph_pwr>; 152 vdd-s8-supply = <&vph_pwr>; 153 vdd-s9-supply = <&vph_pwr>; 154 vdd-s10-supply = <&vph_pwr>; 155 vdd-l1-l8-l11-supply = <&vreg_s6c_0p88>; 156 vdd-l2-l10-supply = <&vreg_bob>; 157 vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p6>; 158 vdd-l6-l9-supply = <&vreg_s8c_1p2>; 159 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_1p9>; 160 vdd-l13-l16-l17-supply = <&vreg_bob>; 161 162 /* (S1+S2+S3) - cx.lvl (ARC) */ 163 164 vreg_s4a_1p8: smps4 { 165 regulator-name = "vreg_s4a_1p8"; 166 regulator-min-microvolt = <1800000>; 167 regulator-max-microvolt = <1920000>; 168 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 169 }; 170 171 vreg_s5a_1p9: smps5 { 172 regulator-name = "vreg_s5a_1p9"; 173 regulator-min-microvolt = <1824000>; 174 regulator-max-microvolt = <2040000>; 175 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 176 }; 177 178 vreg_s6a_0p6: smps6 { 179 regulator-name = "vreg_s6a_0p6"; 180 regulator-min-microvolt = <600000>; 181 regulator-max-microvolt = <1128000>; 182 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 183 }; 184 185 vreg_l2a_3p1: ldo2 { 186 regulator-name = "vreg_l2a_3p1"; 187 regulator-min-microvolt = <3072000>; 188 regulator-max-microvolt = <3072000>; 189 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 190 }; 191 192 vreg_l3a_0p9: ldo3 { 193 regulator-name = "vreg_l3a_0p9"; 194 regulator-min-microvolt = <928000>; 195 regulator-max-microvolt = <932000>; 196 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 197 }; 198 199 /* L4 - lmx.lvl (ARC) */ 200 201 vreg_l5a_0p88: ldo5 { 202 regulator-name = "vreg_l5a_0p88"; 203 regulator-min-microvolt = <880000>; 204 regulator-max-microvolt = <880000>; 205 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 206 }; 207 208 vreg_l6a_1p2: ldo6 { 209 regulator-name = "vreg_l6a_1p2"; 210 regulator-min-microvolt = <1200000>; 211 regulator-max-microvolt = <1200000>; 212 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 213 }; 214 215 /* L7 is unused. */ 216 217 vreg_l9a_1p2: ldo9 { 218 regulator-name = "vreg_l9a_1p2"; 219 regulator-min-microvolt = <1200000>; 220 regulator-max-microvolt = <1200000>; 221 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 222 }; 223 224 /* L10 is unused, L11 - lcx.lvl (ARC) */ 225 226 vreg_l12a_1p8: ldo12 { 227 regulator-name = "vreg_l12a_1p8"; 228 regulator-min-microvolt = <1800000>; 229 regulator-max-microvolt = <1800000>; 230 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 231 }; 232 233 /* L13 is unused. */ 234 235 vreg_l14a_1p8: ldo14 { 236 regulator-name = "vreg_l14a_1p8"; 237 regulator-min-microvolt = <1800000>; 238 regulator-max-microvolt = <1880000>; 239 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 240 }; 241 242 /* L15 & L16 are unused. */ 243 244 vreg_l17a_3p0: ldo17 { 245 regulator-name = "vreg_l17a_3p0"; 246 regulator-min-microvolt = <2496000>; 247 regulator-max-microvolt = <3008000>; 248 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 249 }; 250 251 vreg_l18a_0p9: ldo18 { 252 regulator-name = "vreg_l18a_0p9"; 253 regulator-min-microvolt = <800000>; 254 regulator-max-microvolt = <920000>; 255 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 256 }; 257 }; 258 259 /* 260 * Remaining regulators that are not yet supported: 261 * OLEDB: 4925000-8100000 262 * ab: 4600000-6100000 263 * ibb: 800000-5400000 264 */ 265 pm8150l-rpmh-regulators { 266 compatible = "qcom,pm8150l-rpmh-regulators"; 267 qcom,pmic-id = "c"; 268 269 vdd-s1-supply = <&vph_pwr>; 270 vdd-s2-supply = <&vph_pwr>; 271 vdd-s3-supply = <&vph_pwr>; 272 vdd-s4-supply = <&vph_pwr>; 273 vdd-s5-supply = <&vph_pwr>; 274 vdd-s6-supply = <&vph_pwr>; 275 vdd-s7-supply = <&vph_pwr>; 276 vdd-s8-supply = <&vph_pwr>; 277 vdd-l1-l8-supply = <&vreg_s4a_1p8>; 278 vdd-l2-l3-supply = <&vreg_s8c_1p2>; 279 vdd-l4-l5-l6-supply = <&vreg_bob>; 280 vdd-l7-l11-supply = <&vreg_bob>; 281 vdd-l9-l10-supply = <&vreg_bob>; 282 vdd-bob-supply = <&vph_pwr>; 283 284 vreg_bob: bob { 285 regulator-name = "vreg_bob"; 286 regulator-min-microvolt = <3350000>; 287 regulator-max-microvolt = <3960000>; 288 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; 289 }; 290 291 /* 292 * S1-S6 are ARCs: 293 * (S1+S2) - gfx.lvl, 294 * S3 - mx.lvl, 295 * (S4+S5) - mmcx.lvl, 296 * S6 - ebi.lvl 297 */ 298 299 vreg_s7c_0p35: smps7 { 300 regulator-name = "vreg_s7c_0p35"; 301 regulator-min-microvolt = <348000>; 302 regulator-max-microvolt = <1000000>; 303 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 304 }; 305 306 vreg_s8c_1p2: smps8 { 307 regulator-name = "vreg_s8c_1p2"; 308 regulator-min-microvolt = <1200000>; 309 regulator-max-microvolt = <1400000>; 310 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 311 }; 312 313 vreg_l1c_1p8: ldo1 { 314 regulator-name = "vreg_l1c_1p8"; 315 regulator-min-microvolt = <1800000>; 316 regulator-max-microvolt = <1800000>; 317 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 318 }; 319 320 /* L2-4 are unused. */ 321 322 vreg_l5c_1p8: ldo5 { 323 regulator-name = "vreg_l5c_1p8"; 324 regulator-min-microvolt = <1800000>; 325 regulator-max-microvolt = <2800000>; 326 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 327 }; 328 329 vreg_l6c_2p9: ldo6 { 330 regulator-name = "vreg_l6c_2p9"; 331 regulator-min-microvolt = <1800000>; 332 regulator-max-microvolt = <2960000>; 333 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 334 regulator-allow-set-load; 335 regulator-allowed-modes = 336 <RPMH_REGULATOR_MODE_LPM 337 RPMH_REGULATOR_MODE_HPM>; 338 }; 339 340 vreg_l7c_2p85: ldo7 { 341 regulator-name = "vreg_l7c_2p85"; 342 regulator-min-microvolt = <2856000>; 343 regulator-max-microvolt = <3104000>; 344 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 345 }; 346 347 vreg_l8c_1p8: ldo8 { 348 regulator-name = "vreg_l8c_1p8"; 349 regulator-min-microvolt = <1800000>; 350 regulator-max-microvolt = <1800000>; 351 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 352 }; 353 354 vreg_l9c_2p9: ldo9 { 355 regulator-name = "vreg_l9c_2p9"; 356 regulator-min-microvolt = <2704000>; 357 regulator-max-microvolt = <2960000>; 358 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 359 regulator-allow-set-load; 360 regulator-allowed-modes = 361 <RPMH_REGULATOR_MODE_LPM 362 RPMH_REGULATOR_MODE_HPM>; 363 }; 364 365 vreg_l10c_3p3: ldo10 { 366 regulator-name = "vreg_l10c_3p3"; 367 regulator-min-microvolt = <3296000>; 368 regulator-max-microvolt = <3296000>; 369 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 370 }; 371 372 vreg_l11c_3p0: ldo11 { 373 regulator-name = "vreg_l11c_3p0"; 374 regulator-min-microvolt = <3000000>; 375 regulator-max-microvolt = <3000000>; 376 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 377 }; 378 }; 379 380 pm8009-rpmh-regulators { 381 compatible = "qcom,pm8009-rpmh-regulators"; 382 qcom,pmic-id = "f"; 383 384 vdd-s1-supply = <&vph_pwr>; 385 vdd-s2-supply = <&vreg_bob>; 386 vdd-l2-supply = <&vreg_s8c_1p2>; 387 vdd-l5-l6-supply = <&vreg_bob>; 388 vdd-l7-supply = <&vreg_s4a_1p8>; 389 390 vreg_s1f_1p2: smps1 { 391 regulator-name = "vreg_s1f_1p2"; 392 regulator-min-microvolt = <1200000>; 393 regulator-max-microvolt = <1200000>; 394 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 395 }; 396 397 vreg_s2f_0p5: smps2 { 398 regulator-name = "vreg_s2f_0p5"; 399 regulator-min-microvolt = <512000>; 400 regulator-max-microvolt = <1100000>; 401 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 402 }; 403 404 /* L1 is unused. */ 405 406 vreg_l2f_1p3: ldo2 { 407 regulator-name = "vreg_l2f_1p3"; 408 regulator-min-microvolt = <1304000>; 409 regulator-max-microvolt = <1304000>; 410 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 411 }; 412 413 /* L3 & L4 are unused. */ 414 415 vreg_l5f_2p8: ldo5 { 416 regulator-name = "vreg_l5f_2p85"; 417 regulator-min-microvolt = <2800000>; 418 regulator-max-microvolt = <2800000>; 419 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 420 }; 421 422 vreg_l6f_2p8: ldo6 { 423 regulator-name = "vreg_l6f_2p8"; 424 regulator-min-microvolt = <2800000>; 425 regulator-max-microvolt = <2800000>; 426 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 427 }; 428 429 vreg_l7f_1p8: ldo7 { 430 regulator-name = "vreg_l7f_1p8"; 431 regulator-min-microvolt = <1800000>; 432 regulator-max-microvolt = <1800000>; 433 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 434 }; 435 }; 436}; 437 438&cdsp { 439 status = "okay"; 440}; 441 442&gpi_dma0 { 443 status = "okay"; 444}; 445 446&gpi_dma1 { 447 status = "okay"; 448}; 449 450&gpi_dma2 { 451 status = "okay"; 452}; 453 454&i2c1 { 455 status = "okay"; 456 clock-frequency = <400000>; 457 458 /* NXP PN553 NFC @ 28 */ 459}; 460 461&i2c2 { 462 status = "okay"; 463 clock-frequency = <1000000>; 464 465 /* Dual Cirrus Logic CS35L41 amps @ 40, 41 */ 466}; 467 468&i2c5 { 469 status = "okay"; 470 clock-frequency = <400000>; 471 472 /* Dialog SLG51000 CMIC @ 75 */ 473}; 474 475&i2c9 { 476 status = "okay"; 477 clock-frequency = <400000>; 478 479 /* AMS TCS3490 RGB+IR color sensor @ 72 */ 480}; 481 482&i2c13 { 483 status = "okay"; 484 clock-frequency = <400000>; 485 486 touchscreen@48 { 487 compatible = "samsung,s6sy761"; 488 reg = <0x48>; 489 interrupt-parent = <&tlmm>; 490 interrupts = <39 0x2008>; 491 /* It's "vddio" downstream but it works anyway! */ 492 vdd-supply = <&vreg_l1c_1p8>; 493 avdd-supply = <&vreg_l10c_3p3>; 494 495 pinctrl-names = "default"; 496 pinctrl-0 = <&ts_int_default>; 497 }; 498}; 499 500&i2c15 { 501 status = "okay"; 502 clock-frequency = <400000>; 503 504 /* Qcom SMB1390 @ 10 */ 505 /* Silicon Labs SI4704 FM Radio Receiver @ 11 */ 506 /* Qcom SMB1390_slave @ 18 */ 507 /* HALO HL6111R Qi charger @ 25 */ 508 /* Richwave RTC6226 FM Radio Receiver @ 64 */ 509}; 510 511&pcie0 { 512 status = "okay"; 513}; 514 515&pcie0_phy { 516 status = "okay"; 517 518 vdda-phy-supply = <&vreg_l5a_0p88>; 519 vdda-pll-supply = <&vreg_l9a_1p2>; 520}; 521 522&pcie2 { 523 status = "okay"; 524 525 pinctrl-0 = <&pcie2_default_state &mdm2ap_default &ap2mdm_default>; 526}; 527 528&pcie2_phy { 529 status = "okay"; 530 531 vdda-phy-supply = <&vreg_l5a_0p88>; 532 vdda-pll-supply = <&vreg_l9a_1p2>; 533}; 534 535&pm8150_gpios { 536 vol_down_n: vol-down-n-state { 537 pins = "gpio1"; 538 function = "normal"; 539 power-source = <0>; 540 bias-pull-up; 541 input-enable; 542 }; 543}; 544 545&pm8150b_gpios { 546 snapshot_n: snapshot-n-state { 547 pins = "gpio1"; 548 function = "normal"; 549 power-source = <0>; 550 bias-pull-up; 551 input-enable; 552 }; 553 554 focus_n: focus-n-state { 555 pins = "gpio2"; 556 function = "normal"; 557 power-source = <0>; 558 bias-pull-up; 559 input-enable; 560 }; 561}; 562 563&pon_pwrkey { 564 status = "okay"; 565}; 566 567&pon_resin { 568 status = "okay"; 569 570 linux,code = <KEY_VOLUMEUP>; 571}; 572 573&qupv3_id_0 { 574 status = "okay"; 575}; 576 577&qupv3_id_1 { 578 status = "okay"; 579}; 580 581&qupv3_id_2 { 582 status = "okay"; 583}; 584 585&sdhc_2 { 586 status = "okay"; 587 588 cd-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>; 589 pinctrl-names = "default", "sleep"; 590 pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>; 591 pinctrl-1 = <&sdc2_sleep_state &sdc2_card_det_n>; 592 vmmc-supply = <&vreg_l9c_2p9>; 593 vqmmc-supply = <&vreg_l6c_2p9>; 594 bus-width = <4>; 595 no-sdio; 596 no-emmc; 597}; 598 599&slpi { 600 status = "okay"; 601}; 602 603&tlmm { 604 gpio-reserved-ranges = <40 4>, <52 4>; 605 606 sdc2_default_state: sdc2-default { 607 clk { 608 pins = "sdc2_clk"; 609 drive-strength = <16>; 610 bias-disable; 611 }; 612 613 cmd { 614 pins = "sdc2_cmd"; 615 drive-strength = <16>; 616 bias-pull-up; 617 }; 618 619 data { 620 pins = "sdc2_data"; 621 drive-strength = <16>; 622 bias-pull-up; 623 }; 624 }; 625 626 mdm2ap_default: mdm2ap-default { 627 pins = "gpio1", "gpio3"; 628 function = "gpio"; 629 drive-strength = <8>; 630 bias-disable; 631 }; 632 633 ts_int_default: ts-int-default { 634 pins = "gpio39"; 635 function = "gpio"; 636 drive-strength = <2>; 637 bias-disable; 638 input-enable; 639 }; 640 641 ap2mdm_default: ap2mdm-default { 642 pins = "gpio56", "gpio57"; 643 function = "gpio"; 644 drive-strength = <16>; 645 bias-disable; 646 }; 647 648 sdc2_card_det_n: sd-card-det-n { 649 pins = "gpio77"; 650 function = "gpio"; 651 bias-pull-up; 652 drive-strength = <2>; 653 }; 654}; 655 656&uart12 { 657 status = "okay"; 658}; 659 660/* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */ 661&ufs_mem_hc { status = "disabled"; }; 662&ufs_mem_phy { status = "disabled"; }; 663 664&usb_1 { 665 status = "okay"; 666}; 667 668&usb_1_dwc3 { 669 dr_mode = "peripheral"; 670}; 671 672&usb_1_hsphy { 673 status = "okay"; 674 675 vdda-pll-supply = <&vreg_l5a_0p88>; 676 vdda18-supply = <&vreg_l12a_1p8>; 677 vdda33-supply = <&vreg_l2a_3p1>; 678}; 679 680&usb_1_qmpphy { 681 status = "okay"; 682 683 vdda-phy-supply = <&vreg_l9a_1p2>; 684 vdda-pll-supply = <&vreg_l18a_0p9>; 685}; 686