1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (c) 2023, Luca Weiss <luca.weiss@fairphone.com> 4 */ 5 6/dts-v1/; 7 8/* PM7250B is configured to use SID8/9 */ 9#define PM7250B_SID 8 10#define PM7250B_SID1 9 11 12#include <dt-bindings/leds/common.h> 13#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> 14#include <dt-bindings/regulator/qcom,rpmh-regulator.h> 15#include "sc7280.dtsi" 16#include "pm7250b.dtsi" 17#include "pm7325.dtsi" 18#include "pm8350c.dtsi" /* PM7350C */ 19#include "pmk8350.dtsi" /* PMK7325 */ 20 21/delete-node/ &rmtfs_mem; 22 23/ { 24 model = "Fairphone 5"; 25 compatible = "fairphone,fp5", "qcom,qcm6490"; 26 chassis-type = "handset"; 27 28 aliases { 29 serial0 = &uart5; 30 serial1 = &uart7; 31 }; 32 33 chosen { 34 #address-cells = <2>; 35 #size-cells = <2>; 36 ranges; 37 38 framebuffer0: framebuffer@a000000 { 39 compatible = "simple-framebuffer"; 40 reg = <0x0 0xe1000000 0x0 (2700 * 1224 * 4)>; 41 width = <1224>; 42 height = <2700>; 43 stride = <(1224 * 4)>; 44 format = "a8r8g8b8"; 45 clocks = <&gcc GCC_DISP_HF_AXI_CLK>; 46 }; 47 }; 48 49 gpio-keys { 50 compatible = "gpio-keys"; 51 52 pinctrl-0 = <&volume_down_default>, <&hall_sensor_default>; 53 pinctrl-names = "default"; 54 55 key-volume-up { 56 label = "Volume up"; 57 gpios = <&pm7325_gpios 6 GPIO_ACTIVE_LOW>; 58 linux,code = <KEY_VOLUMEUP>; 59 }; 60 61 /* Powered by the always-on vreg_l8c */ 62 event-hall-sensor { 63 label = "Hall Effect Sensor"; 64 gpios = <&tlmm 155 GPIO_ACTIVE_LOW>; 65 linux,input-type = <EV_SW>; 66 linux,code = <SW_LID>; 67 linux,can-disable; 68 wakeup-source; 69 }; 70 }; 71 72 reserved-memory { 73 cont_splash_mem: cont-splash@e1000000 { 74 reg = <0x0 0xe1000000 0x0 0x2300000>; 75 no-map; 76 }; 77 78 adsp_mem: adsp@86700000 { 79 reg = <0x0 0x86700000 0x0 0x2800000>; 80 no-map; 81 }; 82 83 cdsp_mem: cdsp@88f00000 { 84 reg = <0x0 0x88f00000 0x0 0x1e00000>; 85 no-map; 86 }; 87 88 mpss_mem: mpss@8b800000 { 89 reg = <0x0 0x8b800000 0x0 0xf600000>; 90 no-map; 91 }; 92 93 wpss_mem: wpss@9ae00000 { 94 reg = <0x0 0x9ae00000 0x0 0x1900000>; 95 no-map; 96 }; 97 98 rmtfs_mem: memory@f8500000 { 99 compatible = "qcom,rmtfs-mem"; 100 reg = <0x0 0xf8500000 0x0 0x600000>; 101 no-map; 102 103 qcom,client-id = <1>; 104 qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>, <QCOM_SCM_VMID_NAV>; 105 }; 106 }; 107 108 ois_avdd0_1p8: regulator-ois-avdd0-1p8 { 109 compatible = "regulator-fixed"; 110 regulator-name = "OIS_AVDD0_1P8"; 111 regulator-min-microvolt = <1800000>; 112 regulator-max-microvolt = <1800000>; 113 gpio = <&tlmm 157 GPIO_ACTIVE_HIGH>; 114 enable-active-high; 115 vin-supply = <&vreg_bob>; 116 }; 117 118 ois_dvdd_1p1: regulator-ois-dvdd-1p1 { 119 compatible = "regulator-fixed"; 120 regulator-name = "OIS_DVDD_1P1"; 121 regulator-min-microvolt = <1100000>; 122 regulator-max-microvolt = <1100000>; 123 gpio = <&tlmm 97 GPIO_ACTIVE_HIGH>; 124 enable-active-high; 125 vin-supply = <&vreg_s8b>; 126 }; 127 128 afvdd_2p8: regulator-afvdd-2p8 { 129 compatible = "regulator-fixed"; 130 regulator-name = "AFVDD_2P8"; 131 regulator-min-microvolt = <2800000>; 132 regulator-max-microvolt = <2800000>; 133 gpio = <&tlmm 68 GPIO_ACTIVE_HIGH>; 134 enable-active-high; 135 vin-supply = <&vreg_bob>; 136 }; 137}; 138 139&apps_rsc { 140 regulators-0 { 141 compatible = "qcom,pm7325-rpmh-regulators"; 142 qcom,pmic-id = "b"; 143 144 vreg_s1b: smps1 { 145 regulator-min-microvolt = <1840000>; 146 regulator-max-microvolt = <2040000>; 147 }; 148 149 vreg_s7b: smps7 { 150 regulator-min-microvolt = <535000>; 151 regulator-max-microvolt = <1120000>; 152 }; 153 154 vreg_s8b: smps8 { 155 regulator-min-microvolt = <1200000>; 156 regulator-max-microvolt = <1500000>; 157 regulator-initial-mode = <RPMH_REGULATOR_MODE_RET>; 158 }; 159 160 vreg_l1b: ldo1 { 161 regulator-min-microvolt = <825000>; 162 regulator-max-microvolt = <925000>; 163 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 164 }; 165 166 vreg_l2b: ldo2 { 167 regulator-min-microvolt = <2700000>; 168 regulator-max-microvolt = <3544000>; 169 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 170 }; 171 172 vreg_l3b: ldo3 { 173 regulator-min-microvolt = <312000>; 174 regulator-max-microvolt = <910000>; 175 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 176 }; 177 178 vreg_l6b: ldo6 { 179 regulator-min-microvolt = <1140000>; 180 regulator-max-microvolt = <1260000>; 181 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 182 }; 183 184 vreg_l7b: ldo7 { 185 regulator-min-microvolt = <2400000>; 186 regulator-max-microvolt = <3544000>; 187 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 188 }; 189 190 vreg_l8b: ldo8 { 191 regulator-min-microvolt = <870000>; 192 regulator-max-microvolt = <970000>; 193 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 194 }; 195 196 vreg_l9b: ldo9 { 197 regulator-min-microvolt = <1200000>; 198 regulator-max-microvolt = <1304000>; 199 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 200 }; 201 202 vreg_l11b: ldo11 { 203 regulator-min-microvolt = <1504000>; 204 regulator-max-microvolt = <2000000>; 205 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 206 }; 207 208 vreg_l12b: ldo12 { 209 regulator-min-microvolt = <751000>; 210 regulator-max-microvolt = <824000>; 211 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 212 }; 213 214 vreg_l13b: ldo13 { 215 regulator-min-microvolt = <530000>; 216 regulator-max-microvolt = <824000>; 217 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 218 }; 219 220 vreg_l14b: ldo14 { 221 regulator-min-microvolt = <1080000>; 222 regulator-max-microvolt = <1304000>; 223 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 224 }; 225 226 vreg_l15b: ldo15 { 227 regulator-min-microvolt = <765000>; 228 regulator-max-microvolt = <1020000>; 229 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 230 }; 231 232 vreg_l16b: ldo16 { 233 regulator-min-microvolt = <1100000>; 234 regulator-max-microvolt = <1300000>; 235 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 236 }; 237 238 vreg_l17b: ldo17 { 239 regulator-min-microvolt = <1700000>; 240 regulator-max-microvolt = <1900000>; 241 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 242 }; 243 244 vreg_l18b: ldo18 { 245 regulator-min-microvolt = <1800000>; 246 regulator-max-microvolt = <2000000>; 247 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 248 }; 249 250 vreg_l19b: ldo19 { 251 regulator-min-microvolt = <1800000>; 252 regulator-max-microvolt = <2000000>; 253 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 254 }; 255 }; 256 257 regulators-1 { 258 compatible = "qcom,pm8350c-rpmh-regulators"; 259 qcom,pmic-id = "c"; 260 261 vreg_s1c: smps1 { 262 regulator-min-microvolt = <2190000>; 263 regulator-max-microvolt = <2210000>; 264 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 265 }; 266 267 vreg_s9c: smps9 { 268 regulator-min-microvolt = <1010000>; 269 regulator-max-microvolt = <1170000>; 270 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 271 }; 272 273 vreg_l1c: ldo1 { 274 regulator-min-microvolt = <1800000>; 275 regulator-max-microvolt = <1980000>; 276 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 277 }; 278 279 vreg_l2c: ldo2 { 280 regulator-min-microvolt = <1800000>; 281 regulator-max-microvolt = <1950000>; 282 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 283 }; 284 285 vreg_l3c: ldo3 { 286 regulator-min-microvolt = <3000000>; 287 regulator-max-microvolt = <3400000>; 288 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 289 }; 290 291 vreg_l4c: ldo4 { 292 regulator-min-microvolt = <1620000>; 293 regulator-max-microvolt = <3300000>; 294 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 295 }; 296 297 vreg_l5c: ldo5 { 298 regulator-min-microvolt = <1620000>; 299 regulator-max-microvolt = <3300000>; 300 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 301 }; 302 303 vreg_l6c: ldo6 { 304 regulator-min-microvolt = <1650000>; 305 regulator-max-microvolt = <3544000>; 306 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 307 }; 308 309 vreg_l7c: ldo7 { 310 regulator-min-microvolt = <3000000>; 311 regulator-max-microvolt = <3544000>; 312 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 313 }; 314 315 vreg_l8c: ldo8 { 316 regulator-min-microvolt = <1620000>; 317 regulator-max-microvolt = <2000000>; 318 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 319 /* Hall sensor VDD */ 320 regulator-always-on; 321 }; 322 323 vreg_l9c: ldo9 { 324 regulator-min-microvolt = <2700000>; 325 regulator-max-microvolt = <3544000>; 326 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 327 }; 328 329 vreg_l10c: ldo10 { 330 regulator-min-microvolt = <720000>; 331 regulator-max-microvolt = <1050000>; 332 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 333 }; 334 335 vreg_l11c: ldo11 { 336 regulator-min-microvolt = <2800000>; 337 regulator-max-microvolt = <3544000>; 338 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 339 }; 340 341 vreg_l12c: ldo12 { 342 regulator-min-microvolt = <1650000>; 343 regulator-max-microvolt = <2000000>; 344 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 345 }; 346 347 vreg_l13c: ldo13 { 348 regulator-min-microvolt = <2700000>; 349 regulator-max-microvolt = <3544000>; 350 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 351 }; 352 353 vreg_bob: bob { 354 regulator-min-microvolt = <3008000>; 355 regulator-max-microvolt = <3960000>; 356 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; 357 }; 358 }; 359}; 360 361&dispcc { 362 /* Disable for now so simple-framebuffer continues working */ 363 status = "disabled"; 364}; 365 366&gcc { 367 protected-clocks = <GCC_CFG_NOC_LPASS_CLK>, 368 <GCC_EDP_CLKREF_EN>, 369 <GCC_MSS_CFG_AHB_CLK>, 370 <GCC_MSS_GPLL0_MAIN_DIV_CLK_SRC>, 371 <GCC_MSS_OFFLINE_AXI_CLK>, 372 <GCC_MSS_Q6SS_BOOT_CLK_SRC>, 373 <GCC_MSS_Q6_MEMNOC_AXI_CLK>, 374 <GCC_MSS_SNOC_AXI_CLK>, 375 <GCC_QSPI_CNOC_PERIPH_AHB_CLK>, 376 <GCC_QSPI_CORE_CLK>, 377 <GCC_QSPI_CORE_CLK_SRC>, 378 <GCC_SEC_CTRL_CLK_SRC>, 379 <GCC_WPSS_AHB_BDG_MST_CLK>, 380 <GCC_WPSS_AHB_CLK>, 381 <GCC_WPSS_RSCP_CLK>; 382}; 383 384&gpi_dma0 { 385 status = "okay"; 386}; 387 388&gpi_dma1 { 389 status = "okay"; 390}; 391 392&i2c1 { 393 status = "okay"; 394 395 /* PM8008 PMIC @ 8 and 9 */ 396 /* Pixelworks @ 26 */ 397 /* FSA4480 USB audio switch @ 42 */ 398 /* AW86927FCR haptics @ 5a */ 399}; 400 401&i2c2 { 402 status = "okay"; 403 404 /* AW88261FCR amplifier @ 34 */ 405 /* AW88261FCR amplifier @ 35 */ 406}; 407 408&i2c4 { 409 status = "okay"; 410 411 /* PTN36502 USB redriver @ 1a */ 412}; 413 414&i2c9 { 415 status = "okay"; 416 417 /* ST21NFC NFC @ 28 */ 418 /* VL53L3 ToF @ 29 */ 419}; 420 421&ipa { 422 qcom,gsi-loader = "self"; 423 memory-region = <&ipa_fw_mem>; 424 firmware-name = "qcom/qcm6490/fairphone5/ipa_fws.mdt"; 425 status = "okay"; 426}; 427 428&pm7325_gpios { 429 volume_down_default: volume-down-default-state { 430 pins = "gpio6"; 431 function = PMIC_GPIO_FUNC_NORMAL; 432 power-source = <1>; 433 bias-pull-up; 434 input-enable; 435 }; 436}; 437 438&pm8350c_flash { 439 status = "okay"; 440 441 led-0 { 442 function = LED_FUNCTION_FLASH; 443 color = <LED_COLOR_ID_WHITE>; 444 led-sources = <1>, <4>; 445 led-max-microamp = <500000>; 446 flash-max-microamp = <1500000>; 447 flash-max-timeout-us = <1280000>; 448 }; 449}; 450 451&pmk8350_rtc { 452 status = "okay"; 453}; 454 455&pon_pwrkey { 456 status = "okay"; 457}; 458 459&pon_resin { 460 linux,code = <KEY_VOLUMEDOWN>; 461 status = "okay"; 462}; 463 464&qup_spi13_cs { 465 drive-strength = <6>; 466 bias-disable; 467}; 468 469&qup_spi13_data_clk { 470 drive-strength = <6>; 471 bias-disable; 472}; 473 474&qup_uart5_rx { 475 drive-strength = <2>; 476 bias-disable; 477}; 478 479&qup_uart5_tx { 480 drive-strength = <2>; 481 bias-disable; 482}; 483 484&qupv3_id_0 { 485 status = "okay"; 486}; 487 488&qupv3_id_1 { 489 status = "okay"; 490}; 491 492&sdc2_clk { 493 drive-strength = <16>; 494 bias-disable; 495}; 496 497&sdc2_cmd { 498 drive-strength = <10>; 499 bias-pull-up; 500}; 501 502&sdc2_data { 503 drive-strength = <10>; 504 bias-pull-up; 505}; 506 507&sdhc_2 { 508 vmmc-supply = <&vreg_l9c>; 509 vqmmc-supply = <&vreg_l6c>; 510 511 pinctrl-0 = <&sdc2_clk>, <&sdc2_cmd>, <&sdc2_data>; 512 pinctrl-1 = <&sdc2_clk_sleep>, <&sdc2_cmd_sleep>, <&sdc2_data_sleep>; 513 514 status = "okay"; 515}; 516 517&spi13 { 518 status = "okay"; 519 520 /* Goodix touchscreen @ 0 */ 521}; 522 523&tlmm { 524 /* 525 * 32-33: SMB1394 (SPMI) 526 * 56-59: fingerprint reader (SPI) 527 */ 528 gpio-reserved-ranges = <32 2>, <56 4>; 529 530 bluetooth_enable_default: bluetooth-enable-default-state { 531 pins = "gpio85"; 532 function = "gpio"; 533 output-low; 534 bias-disable; 535 }; 536 537 hall_sensor_default: hall-sensor-default-state { 538 pins = "gpio155"; 539 function = "gpio"; 540 drive-strength = <2>; 541 bias-pull-up; 542 }; 543 544 qup_uart7_sleep_cts: qup-uart7-sleep-cts-state { 545 pins = "gpio28"; 546 function = "gpio"; 547 /* 548 * Configure a bias-bus-hold on CTS to lower power 549 * usage when Bluetooth is turned off. Bus hold will 550 * maintain a low power state regardless of whether 551 * the Bluetooth module drives the pin in either 552 * direction or leaves the pin fully unpowered. 553 */ 554 bias-bus-hold; 555 }; 556 557 qup_uart7_sleep_rts: qup-uart7-sleep-rts-state { 558 pins = "gpio29"; 559 function = "gpio"; 560 /* 561 * Configure pull-down on RTS. As RTS is active low 562 * signal, pull it low to indicate the BT SoC that it 563 * can wakeup the system anytime from suspend state by 564 * pulling RX low (by sending wakeup bytes). 565 */ 566 bias-pull-down; 567 }; 568 569 qup_uart7_sleep_tx: qup-uart7-sleep-tx-state { 570 pins = "gpio30"; 571 function = "gpio"; 572 /* 573 * Configure pull-up on TX when it isn't actively driven 574 * to prevent BT SoC from receiving garbage during sleep. 575 */ 576 bias-pull-up; 577 }; 578 579 qup_uart7_sleep_rx: qup-uart7-sleep-rx-state { 580 pins = "gpio31"; 581 function = "gpio"; 582 /* 583 * Configure a pull-up on RX. This is needed to avoid 584 * garbage data when the TX pin of the Bluetooth module 585 * is floating which may cause spurious wakeups. 586 */ 587 bias-pull-up; 588 }; 589 590 sw_ctrl_default: sw-ctrl-default-state { 591 pins = "gpio86"; 592 function = "gpio"; 593 bias-pull-down; 594 }; 595}; 596 597&uart5 { 598 compatible = "qcom,geni-debug-uart"; 599 status = "okay"; 600}; 601 602&uart7 { 603 /delete-property/interrupts; 604 interrupts-extended = <&intc GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>, 605 <&tlmm 31 IRQ_TYPE_EDGE_FALLING>; 606 607 pinctrl-1 = <&qup_uart7_sleep_cts>, <&qup_uart7_sleep_rts>, <&qup_uart7_sleep_tx>, <&qup_uart7_sleep_rx>; 608 pinctrl-names = "default", "sleep"; 609 610 status = "okay"; 611 612 bluetooth: bluetooth { 613 compatible = "qcom,wcn6750-bt"; 614 615 pinctrl-0 = <&bluetooth_enable_default>, <&sw_ctrl_default>; 616 pinctrl-names = "default"; 617 618 enable-gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>; 619 swctrl-gpios = <&tlmm 86 GPIO_ACTIVE_HIGH>; 620 621 vddio-supply = <&vreg_l19b>; 622 vddaon-supply = <&vreg_s7b>; 623 vddbtcxmx-supply = <&vreg_s7b>; 624 vddrfacmn-supply = <&vreg_s7b>; 625 vddrfa0p8-supply = <&vreg_s7b>; 626 vddrfa1p7-supply = <&vreg_s1b>; 627 vddrfa1p2-supply = <&vreg_s8b>; 628 vddrfa2p2-supply = <&vreg_s1c>; 629 vddasd-supply = <&vreg_l11c>; 630 631 max-speed = <3200000>; 632 }; 633}; 634 635&usb_1 { 636 status = "okay"; 637}; 638 639&usb_1_dwc3 { 640 dr_mode = "peripheral"; 641}; 642 643&usb_1_hsphy { 644 vdda-pll-supply = <&vreg_l10c>; 645 vdda18-supply = <&vreg_l1c>; 646 vdda33-supply = <&vreg_l2b>; 647 648 qcom,hs-crossover-voltage-microvolt = <28000>; 649 qcom,hs-output-impedance-micro-ohms = <2600000>; 650 qcom,hs-rise-fall-time-bp = <5430>; 651 qcom,hs-disconnect-bp = <1743>; 652 qcom,hs-amplitude-bp = <2430>; 653 654 qcom,pre-emphasis-amplitude-bp = <20000>; 655 qcom,pre-emphasis-duration-bp = <20000>; 656 657 qcom,squelch-detector-bp = <(-2090)>; 658 659 status = "okay"; 660}; 661 662&usb_1_qmpphy { 663 vdda-phy-supply = <&vreg_l6b>; 664 vdda-pll-supply = <&vreg_l1b>; 665 666 status = "okay"; 667}; 668