1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2 /* 3 * Copyright (c) 2020 Martijn Braam <martijn@br 4 * Copyright (c) 2021 Kamil TrzciĆski <ayufan@ 5 */ 6 7 /* 8 * PinePhone Pro datasheet: 9 * https://files.pine64.org/doc/PinePhonePro/P 10 */ 11 12 /dts-v1/; 13 #include <dt-bindings/input/gpio-keys.h> 14 #include <dt-bindings/input/linux-event-codes. 15 #include <dt-bindings/leds/common.h> 16 #include "rk3399.dtsi" 17 18 / { 19 model = "Pine64 PinePhone Pro"; 20 compatible = "pine64,pinephone-pro", " 21 chassis-type = "handset"; 22 23 aliases { 24 mmc0 = &sdio0; 25 mmc1 = &sdmmc; 26 mmc2 = &sdhci; 27 }; 28 29 chosen { 30 stdout-path = "serial2:115200n 31 }; 32 33 adc-keys { 34 compatible = "adc-keys"; 35 io-channels = <&saradc 1>; 36 io-channel-names = "buttons"; 37 keyup-threshold-microvolt = <1 38 poll-interval = <100>; 39 40 button-up { 41 label = "Volume Up"; 42 linux,code = <KEY_VOLU 43 press-threshold-microv 44 }; 45 46 button-down { 47 label = "Volume Down"; 48 linux,code = <KEY_VOLU 49 press-threshold-microv 50 }; 51 }; 52 53 backlight: backlight { 54 compatible = "pwm-backlight"; 55 pwms = <&pwm0 0 50000 0>; 56 }; 57 58 gpio-keys { 59 compatible = "gpio-keys"; 60 pinctrl-names = "default"; 61 pinctrl-0 = <&pwrbtn_pin>; 62 63 key-power { 64 debounce-interval = <2 65 gpios = <&gpio0 RK_PA5 66 label = "Power"; 67 linux,code = <KEY_POWE 68 wakeup-source; 69 }; 70 }; 71 72 leds { 73 compatible = "gpio-leds"; 74 pinctrl-names = "default"; 75 pinctrl-0 = <&red_led_pin &gre 76 77 led_red: led-0 { 78 color = <LED_COLOR_ID_ 79 gpios = <&gpio4 RK_PD2 80 }; 81 82 led_green: led-1 { 83 color = <LED_COLOR_ID_ 84 gpios = <&gpio4 RK_PD5 85 }; 86 87 led_blue: led-2 { 88 color = <LED_COLOR_ID_ 89 gpios = <&gpio4 RK_PD6 90 }; 91 }; 92 93 multi-led { 94 compatible = "leds-group-multi 95 color = <LED_COLOR_ID_RGB>; 96 function = LED_FUNCTION_INDICA 97 leds = <&led_red>, <&led_green 98 }; 99 100 vcc_sys: vcc-sys-regulator { 101 compatible = "regulator-fixed" 102 regulator-name = "vcc_sys"; 103 regulator-always-on; 104 regulator-boot-on; 105 }; 106 107 vcc3v3_sys: vcc3v3-sys-regulator { 108 compatible = "regulator-fixed" 109 regulator-name = "vcc3v3_sys"; 110 regulator-always-on; 111 regulator-boot-on; 112 regulator-min-microvolt = <330 113 regulator-max-microvolt = <330 114 vin-supply = <&vcc_sys>; 115 }; 116 117 vcca1v8_s3: vcc1v8-s3-regulator { 118 compatible = "regulator-fixed" 119 regulator-name = "vcca1v8_s3"; 120 regulator-min-microvolt = <180 121 regulator-max-microvolt = <180 122 vin-supply = <&vcc3v3_sys>; 123 regulator-always-on; 124 regulator-boot-on; 125 }; 126 127 vcc1v8_codec: vcc1v8-codec-regulator { 128 compatible = "regulator-fixed" 129 enable-active-high; 130 gpio = <&gpio3 RK_PA4 GPIO_ACT 131 pinctrl-names = "default"; 132 pinctrl-0 = <&vcc1v8_codec_en> 133 regulator-name = "vcc1v8_codec 134 regulator-min-microvolt = <180 135 regulator-max-microvolt = <180 136 vin-supply = <&vcc3v3_sys>; 137 }; 138 139 wifi_pwrseq: sdio-wifi-pwrseq { 140 compatible = "mmc-pwrseq-simpl 141 clocks = <&rk818 1>; 142 clock-names = "ext_clock"; 143 pinctrl-names = "default"; 144 pinctrl-0 = <&wifi_enable_h_pi 145 /* 146 * Wait between power-on and S 147 * POR circuit. 148 */ 149 post-power-on-delay-ms = <110> 150 /* 151 * Wait between consecutive to 152 * regulator discharge. 153 */ 154 power-off-delay-us = <10000>; 155 156 /* WL_REG_ON on module */ 157 reset-gpios = <&gpio0 RK_PB2 G 158 }; 159 160 /* MIPI DSI panel 1.8v supply */ 161 vcc1v8_lcd: vcc1v8-lcd { 162 compatible = "regulator-fixed" 163 enable-active-high; 164 regulator-name = "vcc1v8_lcd"; 165 regulator-min-microvolt = <180 166 regulator-max-microvolt = <180 167 vin-supply = <&vcc3v3_sys>; 168 gpio = <&gpio3 RK_PA5 GPIO_ACT 169 }; 170 171 /* MIPI DSI panel 2.8v supply */ 172 vcc2v8_lcd: vcc2v8-lcd { 173 compatible = "regulator-fixed" 174 enable-active-high; 175 regulator-name = "vcc2v8_lcd"; 176 regulator-min-microvolt = <280 177 regulator-max-microvolt = <280 178 vin-supply = <&vcc3v3_sys>; 179 gpio = <&gpio3 RK_PA1 GPIO_ACT 180 }; 181 182 vibrator { 183 compatible = "gpio-vibrator"; 184 enable-gpios = <&gpio3 RK_PB1 185 vcc-supply = <&vcc3v3_sys>; 186 }; 187 }; 188 189 &cpu_alert0 { 190 temperature = <65000>; 191 }; 192 &cpu_alert1 { 193 temperature = <68000>; 194 }; 195 196 &cpu_l0 { 197 cpu-supply = <&vdd_cpu_l>; 198 }; 199 200 &cpu_l1 { 201 cpu-supply = <&vdd_cpu_l>; 202 }; 203 204 &cpu_l2 { 205 cpu-supply = <&vdd_cpu_l>; 206 }; 207 208 &cpu_l3 { 209 cpu-supply = <&vdd_cpu_l>; 210 }; 211 212 &cpu_b0 { 213 cpu-supply = <&vdd_cpu_b>; 214 }; 215 216 &cpu_b1 { 217 cpu-supply = <&vdd_cpu_b>; 218 }; 219 220 &emmc_phy { 221 status = "okay"; 222 }; 223 224 &gpu { 225 mali-supply = <&vdd_gpu>; 226 status = "okay"; 227 }; 228 229 &i2c0 { 230 clock-frequency = <400000>; 231 i2c-scl-rising-time-ns = <168>; 232 i2c-scl-falling-time-ns = <4>; 233 status = "okay"; 234 235 rk818: pmic@1c { 236 compatible = "rockchip,rk818"; 237 reg = <0x1c>; 238 interrupt-parent = <&gpio1>; 239 interrupts = <RK_PC5 IRQ_TYPE_ 240 #clock-cells = <1>; 241 clock-output-names = "xin32k", 242 pinctrl-names = "default"; 243 pinctrl-0 = <&pmic_int_l>; 244 rockchip,system-power-controll 245 wakeup-source; 246 247 vcc1-supply = <&vcc_sys>; 248 vcc2-supply = <&vcc_sys>; 249 vcc3-supply = <&vcc_sys>; 250 vcc4-supply = <&vcc_sys>; 251 vcc6-supply = <&vcc_sys>; 252 vcc7-supply = <&vcc3v3_sys>; 253 vcc8-supply = <&vcc_sys>; 254 vcc9-supply = <&vcc3v3_sys>; 255 256 regulators { 257 vdd_cpu_l: DCDC_REG1 { 258 regulator-name 259 regulator-alwa 260 regulator-boot 261 regulator-min- 262 regulator-max- 263 regulator-ramp 264 regulator-stat 265 regula 266 }; 267 }; 268 269 vdd_center: DCDC_REG2 270 regulator-name 271 regulator-alwa 272 regulator-boot 273 regulator-min- 274 regulator-max- 275 regulator-ramp 276 regulator-stat 277 regula 278 }; 279 }; 280 281 vcc_ddr: DCDC_REG3 { 282 regulator-name 283 regulator-alwa 284 regulator-boot 285 regulator-stat 286 regula 287 }; 288 }; 289 290 vcc_1v8: DCDC_REG4 { 291 regulator-name 292 regulator-alwa 293 regulator-boot 294 regulator-min- 295 regulator-max- 296 regulator-stat 297 regula 298 }; 299 }; 300 301 vcca3v0_codec: LDO_REG 302 regulator-name 303 regulator-min- 304 regulator-max- 305 }; 306 307 vcc3v0_touch: LDO_REG2 308 regulator-name 309 regulator-min- 310 regulator-max- 311 }; 312 313 vcca1v8_codec: LDO_REG 314 regulator-name 315 regulator-min- 316 regulator-max- 317 }; 318 319 rk818_pwr_on: LDO_REG4 320 regulator-name 321 regulator-alwa 322 regulator-boot 323 regulator-min- 324 regulator-max- 325 regulator-stat 326 regula 327 }; 328 }; 329 330 vcc_3v0: LDO_REG5 { 331 regulator-name 332 regulator-alwa 333 regulator-boot 334 regulator-min- 335 regulator-max- 336 regulator-stat 337 regula 338 }; 339 }; 340 341 vcc_1v5: LDO_REG6 { 342 regulator-name 343 regulator-alwa 344 regulator-boot 345 regulator-min- 346 regulator-max- 347 regulator-stat 348 regula 349 }; 350 }; 351 352 vcc1v8_dvp: LDO_REG7 { 353 regulator-name 354 regulator-min- 355 regulator-max- 356 }; 357 358 vcc3v3_s3: LDO_REG8 { 359 regulator-name 360 regulator-alwa 361 regulator-boot 362 regulator-min- 363 regulator-max- 364 regulator-stat 365 regula 366 }; 367 }; 368 369 vccio_sd: LDO_REG9 { 370 regulator-name 371 regulator-min- 372 regulator-max- 373 }; 374 375 vcc3v3_s0: SWITCH_REG 376 regulator-name 377 regulator-alwa 378 regulator-boot 379 regulator-stat 380 regula 381 }; 382 }; 383 }; 384 }; 385 386 vdd_cpu_b: regulator@40 { 387 compatible = "silergy,syr827"; 388 reg = <0x40>; 389 fcs,suspend-voltage-selector = 390 pinctrl-names = "default"; 391 pinctrl-0 = <&vsel1_pin>; 392 regulator-name = "vdd_cpu_b"; 393 regulator-min-microvolt = <875 394 regulator-max-microvolt = <115 395 regulator-ramp-delay = <1000>; 396 regulator-always-on; 397 regulator-boot-on; 398 399 regulator-state-mem { 400 regulator-off-in-suspe 401 }; 402 }; 403 404 vdd_gpu: regulator@41 { 405 compatible = "silergy,syr828"; 406 reg = <0x41>; 407 fcs,suspend-voltage-selector = 408 pinctrl-names = "default"; 409 pinctrl-0 = <&vsel2_pin>; 410 regulator-name = "vdd_gpu"; 411 regulator-min-microvolt = <875 412 regulator-max-microvolt = <975 413 regulator-ramp-delay = <1000>; 414 regulator-always-on; 415 regulator-boot-on; 416 417 regulator-state-mem { 418 regulator-off-in-suspe 419 }; 420 }; 421 }; 422 423 &i2c3 { 424 i2c-scl-rising-time-ns = <450>; 425 i2c-scl-falling-time-ns = <15>; 426 status = "okay"; 427 428 touchscreen@14 { 429 compatible = "goodix,gt1158"; 430 reg = <0x14>; 431 interrupt-parent = <&gpio3>; 432 interrupts = <RK_PB5 IRQ_TYPE_ 433 irq-gpios = <&gpio3 RK_PB5 GPI 434 reset-gpios = <&gpio3 RK_PB4 G 435 AVDD28-supply = <&vcc3v0_touch 436 VDDIO-supply = <&vcc3v0_touch> 437 touchscreen-size-x = <720>; 438 touchscreen-size-y = <1440>; 439 }; 440 }; 441 442 &i2c4 { 443 i2c-scl-rising-time-ns = <600>; 444 i2c-scl-falling-time-ns = <20>; 445 status = "okay"; 446 447 /* Accelerometer/gyroscope */ 448 mpu6500@68 { 449 compatible = "invensense,mpu65 450 reg = <0x68>; 451 interrupt-parent = <&gpio1>; 452 interrupts = <RK_PC6 IRQ_TYPE_ 453 vddio-supply = <&vcc_1v8>; 454 }; 455 }; 456 457 &cluster0_opp { 458 opp04 { 459 status = "disabled"; 460 }; 461 462 opp05 { 463 status = "disabled"; 464 }; 465 }; 466 467 &cluster1_opp { 468 opp06 { 469 opp-hz = /bits/ 64 <1500000000 470 opp-microvolt = <1100000 11000 471 }; 472 473 opp07 { 474 status = "disabled"; 475 }; 476 }; 477 478 &io_domains { 479 bt656-supply = <&vcc1v8_dvp>; 480 audio-supply = <&vcca1v8_codec>; 481 sdmmc-supply = <&vccio_sd>; 482 gpio1830-supply = <&vcc_3v0>; 483 status = "okay"; 484 }; 485 486 &mipi_dsi { 487 status = "okay"; 488 clock-master; 489 490 ports { 491 mipi_out: port@1 { 492 #address-cells = <0>; 493 #size-cells = <0>; 494 reg = <1>; 495 496 mipi_out_panel: endpoi 497 remote-endpoin 498 }; 499 }; 500 }; 501 502 panel@0 { 503 compatible = "hannstar,hsd060b 504 reg = <0>; 505 backlight = <&backlight>; 506 reset-gpios = <&gpio4 RK_PD1 G 507 vcc-supply = <&vcc2v8_lcd>; 508 iovcc-supply = <&vcc1v8_lcd>; 509 pinctrl-names = "default"; 510 511 port { 512 mipi_in_panel: endpoin 513 remote-endpoin 514 }; 515 }; 516 }; 517 }; 518 519 &pmu_io_domains { 520 pmu1830-supply = <&vcc_1v8>; 521 status = "okay"; 522 }; 523 524 &pinctrl { 525 buttons { 526 pwrbtn_pin: pwrbtn-pin { 527 rockchip,pins = <0 RK_ 528 }; 529 }; 530 531 leds { 532 red_led_pin: red-led-pin { 533 rockchip,pins = <4 RK_ 534 }; 535 536 green_led_pin: green-led-pin { 537 rockchip,pins = <4 RK_ 538 }; 539 540 blue_led_pin: blue-led-pin { 541 rockchip,pins = <4 RK_ 542 }; 543 }; 544 545 pmic { 546 pmic_int_l: pmic-int-l { 547 rockchip,pins = <1 RK_ 548 }; 549 550 vsel1_pin: vsel1-pin { 551 rockchip,pins = <1 RK_ 552 }; 553 554 vsel2_pin: vsel2-pin { 555 rockchip,pins = <1 RK_ 556 }; 557 }; 558 559 sdio-pwrseq { 560 wifi_enable_h_pin: wifi-enable 561 rockchip,pins = <0 RK_ 562 }; 563 }; 564 565 sound { 566 vcc1v8_codec_en: vcc1v8-codec- 567 rockchip,pins = <3 RK_ 568 }; 569 }; 570 571 wireless-bluetooth { 572 bt_wake_pin: bt-wake-pin { 573 rockchip,pins = <2 RK_ 574 }; 575 576 bt_host_wake_pin: bt-host-wake 577 rockchip,pins = <0 RK_ 578 }; 579 580 bt_reset_pin: bt-reset-pin { 581 rockchip,pins = <0 RK_ 582 }; 583 }; 584 }; 585 586 &sdio0 { 587 bus-width = <4>; 588 cap-sd-highspeed; 589 cap-sdio-irq; 590 disable-wp; 591 keep-power-in-suspend; 592 mmc-pwrseq = <&wifi_pwrseq>; 593 non-removable; 594 pinctrl-names = "default"; 595 pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &s 596 sd-uhs-sdr104; 597 status = "okay"; 598 }; 599 600 &pwm0 { 601 status = "okay"; 602 }; 603 604 &saradc { 605 vref-supply = <&vcca1v8_s3>; 606 status = "okay"; 607 }; 608 609 &sdmmc { 610 bus-width = <4>; 611 cap-sd-highspeed; 612 cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_ 613 disable-wp; 614 max-frequency = <150000000>; 615 pinctrl-names = "default"; 616 pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sd 617 vmmc-supply = <&vcc3v3_sys>; 618 vqmmc-supply = <&vccio_sd>; 619 status = "okay"; 620 }; 621 622 &sdhci { 623 bus-width = <8>; 624 mmc-hs200-1_8v; 625 non-removable; 626 status = "okay"; 627 }; 628 629 &spi1 { 630 status = "okay"; 631 632 flash@0 { 633 compatible = "jedec,spi-nor"; 634 reg = <0>; 635 spi-max-frequency = <10000000> 636 }; 637 }; 638 639 &tsadc { 640 rockchip,hw-tshut-mode = <1>; 641 rockchip,hw-tshut-polarity = <1>; 642 status = "okay"; 643 }; 644 645 &uart0 { 646 pinctrl-names = "default"; 647 pinctrl-0 = <&uart0_xfer &uart0_cts &u 648 uart-has-rtscts; 649 status = "okay"; 650 651 bluetooth { 652 compatible = "brcm,bcm4345c5"; 653 clocks = <&rk818 1>; 654 clock-names = "lpo"; 655 device-wakeup-gpios = <&gpio2 656 host-wakeup-gpios = <&gpio0 RK 657 max-speed = <1500000>; 658 pinctrl-names = "default"; 659 pinctrl-0 = <&bt_host_wake_pin 660 shutdown-gpios = <&gpio0 RK_PB 661 vbat-supply = <&vcc3v3_sys>; 662 vddio-supply = <&vcc_1v8>; 663 }; 664 }; 665 666 &uart2 { 667 status = "okay"; 668 }; 669 670 &vopb { 671 status = "okay"; 672 assigned-clocks = <&cru DCLK_VOP0_DIV> 673 <&cru ACLK_VOP0>, <& 674 assigned-clock-rates = <0>, <0>, <4000 675 assigned-clock-parents = <&cru PLL_GPL 676 }; 677 678 &vopb_mmu { 679 status = "okay"; 680 }; 681 682 &vopl { 683 status = "okay"; 684 assigned-clocks = <&cru DCLK_VOP1_DIV> 685 <&cru ACLK_VOP1>, <& 686 assigned-clock-rates = <0>, <0>, <4000 687 assigned-clock-parents = <&cru PLL_GPL 688 }; 689 690 &vopl_mmu { 691 status = "okay"; 692 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.