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