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 cs35l41_l: cs35l41@40 { 445 compatible = "cirrus,cs35l41"; 446 reg = <0x40>; 447 interrupt-parent = <&tlmm>; 448 interrupts = <11 IRQ_TYPE_LEVEL_LOW>; 449 reset-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>; 450 cirrus,boost-peak-milliamp = <4000>; 451 cirrus,boost-ind-nanohenry = <1000>; 452 cirrus,boost-cap-microfarad = <15>; 453 cirrus,asp-sdout-hiz = <3>; 454 cirrus,gpio2-src-select = <2>; 455 cirrus,gpio2-output-enable; 456 #sound-dai-cells = <1>; 457 }; 458 459 cs35l41_r: cs35l41@41 { 460 compatible = "cirrus,cs35l41"; 461 reg = <0x41>; 462 interrupt-parent = <&tlmm>; 463 interrupts = <11 IRQ_TYPE_LEVEL_LOW>; 464 reset-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>; 465 cirrus,boost-peak-milliamp = <4000>; 466 cirrus,boost-ind-nanohenry = <1000>; 467 cirrus,boost-cap-microfarad = <15>; 468 cirrus,asp-sdout-hiz = <3>; 469 cirrus,gpio2-src-select = <2>; 470 cirrus,gpio2-output-enable; 471 #sound-dai-cells = <1>; 472 }; 473}; 474 475&i2c5 { 476 status = "okay"; 477 clock-frequency = <400000>; 478 479 /* Dialog SLG51000 CMIC @ 75 */ 480}; 481 482&i2c9 { 483 status = "okay"; 484 clock-frequency = <400000>; 485 486 /* AMS TCS3490 RGB+IR color sensor @ 72 */ 487}; 488 489&i2c13 { 490 status = "okay"; 491 clock-frequency = <400000>; 492 493 touchscreen@48 { 494 compatible = "samsung,s6sy761"; 495 reg = <0x48>; 496 interrupt-parent = <&tlmm>; 497 interrupts = <39 0x2008>; 498 /* It's "vddio" downstream but it works anyway! */ 499 vdd-supply = <&vreg_l1c_1p8>; 500 avdd-supply = <&vreg_l10c_3p3>; 501 502 pinctrl-names = "default"; 503 pinctrl-0 = <&ts_int_default>; 504 }; 505}; 506 507&i2c15 { 508 status = "okay"; 509 clock-frequency = <400000>; 510 511 /* Qcom SMB1390 @ 10 */ 512 /* Silicon Labs SI4704 FM Radio Receiver @ 11 */ 513 /* Qcom SMB1390_slave @ 18 */ 514 /* HALO HL6111R Qi charger @ 25 */ 515 /* Richwave RTC6226 FM Radio Receiver @ 64 */ 516}; 517 518&pcie0 { 519 status = "okay"; 520}; 521 522&pcie0_phy { 523 status = "okay"; 524 525 vdda-phy-supply = <&vreg_l5a_0p88>; 526 vdda-pll-supply = <&vreg_l9a_1p2>; 527}; 528 529&pcie2 { 530 status = "okay"; 531 532 pinctrl-0 = <&pcie2_default_state &mdm2ap_default &ap2mdm_default>; 533}; 534 535&pcie2_phy { 536 status = "okay"; 537 538 vdda-phy-supply = <&vreg_l5a_0p88>; 539 vdda-pll-supply = <&vreg_l9a_1p2>; 540}; 541 542&pon_pwrkey { 543 status = "okay"; 544}; 545 546&pon_resin { 547 status = "okay"; 548 549 linux,code = <KEY_VOLUMEUP>; 550}; 551 552&qupv3_id_0 { 553 status = "okay"; 554}; 555 556&qupv3_id_1 { 557 status = "okay"; 558}; 559 560&qupv3_id_2 { 561 status = "okay"; 562}; 563 564&sdhc_2 { 565 status = "okay"; 566 567 cd-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>; 568 pinctrl-names = "default", "sleep"; 569 pinctrl-0 = <&sdc2_default_state &sdc2_card_det_n>; 570 pinctrl-1 = <&sdc2_sleep_state &sdc2_card_det_n>; 571 vmmc-supply = <&vreg_l9c_2p9>; 572 vqmmc-supply = <&vreg_l6c_2p9>; 573 bus-width = <4>; 574 no-sdio; 575 no-emmc; 576}; 577 578&slpi { 579 status = "okay"; 580}; 581 582&tlmm { 583 gpio-reserved-ranges = <40 4>, <52 4>; 584 585 sdc2_default_state: sdc2-default { 586 clk { 587 pins = "sdc2_clk"; 588 drive-strength = <16>; 589 bias-disable; 590 }; 591 592 cmd { 593 pins = "sdc2_cmd"; 594 drive-strength = <16>; 595 bias-pull-up; 596 }; 597 598 data { 599 pins = "sdc2_data"; 600 drive-strength = <16>; 601 bias-pull-up; 602 }; 603 }; 604 605 mdm2ap_default: mdm2ap-default { 606 pins = "gpio1", "gpio3"; 607 function = "gpio"; 608 drive-strength = <8>; 609 bias-disable; 610 }; 611 612 ts_int_default: ts-int-default { 613 pins = "gpio39"; 614 function = "gpio"; 615 drive-strength = <2>; 616 bias-disabled; 617 input-enable; 618 }; 619 620 ap2mdm_default: ap2mdm-default { 621 pins = "gpio56", "gpio57"; 622 function = "gpio"; 623 drive-strength = <16>; 624 bias-disable; 625 }; 626 627 sdc2_card_det_n: sd-card-det-n { 628 pins = "gpio77"; 629 function = "gpio"; 630 bias-pull-up; 631 drive-strength = <2>; 632 }; 633}; 634 635&uart12 { 636 status = "okay"; 637}; 638 639/* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */ 640&ufs_mem_hc { status = "disabled"; }; 641&ufs_mem_phy { status = "disabled"; }; 642 643&usb_1 { 644 status = "okay"; 645}; 646 647&usb_1_dwc3 { 648 dr_mode = "peripheral"; 649}; 650 651&usb_1_hsphy { 652 status = "okay"; 653 654 vdda-pll-supply = <&vreg_l5a_0p88>; 655 vdda18-supply = <&vreg_l12a_1p8>; 656 vdda33-supply = <&vreg_l2a_3p1>; 657}; 658 659&usb_1_qmpphy { 660 status = "okay"; 661 662 vdda-phy-supply = <&vreg_l9a_1p2>; 663 vdda-pll-supply = <&vreg_l18a_0p9>; 664}; 665