1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * Copyright (c) 2020 Martijn Braam <martijn@brixit.nl> 4 * Copyright (c) 2021 Kamil Trzciński <ayufan@ayufan.eu> 5 */ 6 7/* 8 * PinePhone Pro datasheet: 9 * https://files.pine64.org/doc/PinePhonePro/PinephonePro-Schematic-V1.0-20211127.pdf 10 */ 11 12/dts-v1/; 13#include <dt-bindings/input/gpio-keys.h> 14#include <dt-bindings/input/linux-event-codes.h> 15#include <dt-bindings/leds/common.h> 16#include "rk3399-s.dtsi" 17 18/ { 19 model = "Pine64 PinePhone Pro"; 20 compatible = "pine64,pinephone-pro", "rockchip,rk3399"; 21 chassis-type = "handset"; 22 23 aliases { 24 mmc0 = &sdio0; 25 mmc1 = &sdmmc; 26 mmc2 = &sdhci; 27 }; 28 29 chosen { 30 stdout-path = "serial2:115200n8"; 31 }; 32 33 adc-keys { 34 compatible = "adc-keys"; 35 io-channels = <&saradc 1>; 36 io-channel-names = "buttons"; 37 keyup-threshold-microvolt = <1600000>; 38 poll-interval = <100>; 39 40 button-up { 41 label = "Volume Up"; 42 linux,code = <KEY_VOLUMEUP>; 43 press-threshold-microvolt = <2000>; 44 }; 45 46 button-down { 47 label = "Volume Down"; 48 linux,code = <KEY_VOLUMEDOWN>; 49 press-threshold-microvolt = <300000>; 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 = <20>; 65 gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; 66 label = "Power"; 67 linux,code = <KEY_POWER>; 68 wakeup-source; 69 }; 70 }; 71 72 leds { 73 compatible = "gpio-leds"; 74 pinctrl-names = "default"; 75 pinctrl-0 = <&red_led_pin &green_led_pin &blue_led_pin>; 76 77 led_red: led-0 { 78 color = <LED_COLOR_ID_RED>; 79 gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; 80 }; 81 82 led_green: led-1 { 83 color = <LED_COLOR_ID_GREEN>; 84 gpios = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>; 85 }; 86 87 led_blue: led-2 { 88 color = <LED_COLOR_ID_BLUE>; 89 gpios = <&gpio4 RK_PD6 GPIO_ACTIVE_HIGH>; 90 }; 91 }; 92 93 multi-led { 94 compatible = "leds-group-multicolor"; 95 color = <LED_COLOR_ID_RGB>; 96 function = LED_FUNCTION_INDICATOR; 97 leds = <&led_red>, <&led_green>, <&led_blue>; 98 }; 99 100 vcc_sys: regulator-vcc-sys { 101 compatible = "regulator-fixed"; 102 regulator-name = "vcc_sys"; 103 regulator-always-on; 104 regulator-boot-on; 105 }; 106 107 avdd2v8_dvp: regulator-avdd2v8-dvp { 108 compatible = "regulator-fixed"; 109 regulator-name = "avdd2v8_dvp"; 110 regulator-always-on; 111 regulator-boot-on; 112 regulator-min-microvolt = <2800000>; 113 regulator-max-microvolt = <2800000>; 114 vin-supply = <&vcc3v3_sys>; 115 }; 116 117 vcc3v3_sys: regulator-vcc3v3-sys { 118 compatible = "regulator-fixed"; 119 regulator-name = "vcc3v3_sys"; 120 regulator-always-on; 121 regulator-boot-on; 122 regulator-min-microvolt = <3300000>; 123 regulator-max-microvolt = <3300000>; 124 vin-supply = <&vcc_sys>; 125 }; 126 127 vcca1v8_s3: regulator-vcc1v8-s3 { 128 compatible = "regulator-fixed"; 129 regulator-name = "vcca1v8_s3"; 130 regulator-min-microvolt = <1800000>; 131 regulator-max-microvolt = <1800000>; 132 vin-supply = <&vcc3v3_sys>; 133 regulator-always-on; 134 regulator-boot-on; 135 }; 136 137 vcc1v8_codec: regulator-vcc1v8-codec { 138 compatible = "regulator-fixed"; 139 enable-active-high; 140 gpio = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>; 141 pinctrl-names = "default"; 142 pinctrl-0 = <&vcc1v8_codec_en>; 143 regulator-name = "vcc1v8_codec"; 144 regulator-min-microvolt = <1800000>; 145 regulator-max-microvolt = <1800000>; 146 vin-supply = <&vcc3v3_sys>; 147 }; 148 149 vcc1v2_dvp: regulator-vcc1v2-dvp { 150 compatible = "regulator-fixed"; 151 regulator-name = "vcc1v2_dvp"; 152 regulator-always-on; 153 regulator-boot-on; 154 regulator-min-microvolt = <1200000>; 155 regulator-max-microvolt = <1200000>; 156 vin-supply = <&vcca1v8_s3>; 157 }; 158 159 wifi_pwrseq: sdio-wifi-pwrseq { 160 compatible = "mmc-pwrseq-simple"; 161 clocks = <&rk818 1>; 162 clock-names = "ext_clock"; 163 pinctrl-names = "default"; 164 pinctrl-0 = <&wifi_enable_h_pin>; 165 /* 166 * Wait between power-on and SDIO access for CYP43455 167 * POR circuit. 168 */ 169 post-power-on-delay-ms = <110>; 170 /* 171 * Wait between consecutive toggles for CYP43455 CBUCK 172 * regulator discharge. 173 */ 174 power-off-delay-us = <10000>; 175 176 /* WL_REG_ON on module */ 177 reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; 178 }; 179 180 /* MIPI DSI panel 1.8v supply */ 181 vcc1v8_lcd: regulator-vcc1v8-lcd { 182 compatible = "regulator-fixed"; 183 enable-active-high; 184 regulator-name = "vcc1v8_lcd"; 185 regulator-min-microvolt = <1800000>; 186 regulator-max-microvolt = <1800000>; 187 vin-supply = <&vcc3v3_sys>; 188 gpio = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>; 189 }; 190 191 /* MIPI DSI panel 2.8v supply */ 192 vcc2v8_lcd: regulator-vcc2v8-lcd { 193 compatible = "regulator-fixed"; 194 enable-active-high; 195 regulator-name = "vcc2v8_lcd"; 196 regulator-min-microvolt = <2800000>; 197 regulator-max-microvolt = <2800000>; 198 vin-supply = <&vcc3v3_sys>; 199 gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>; 200 }; 201 202 vibrator { 203 compatible = "gpio-vibrator"; 204 enable-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>; 205 vcc-supply = <&vcc3v3_sys>; 206 }; 207}; 208 209&cpu_alert0 { 210 temperature = <65000>; 211}; 212&cpu_alert1 { 213 temperature = <68000>; 214}; 215 216&cpu_l0 { 217 cpu-supply = <&vdd_cpu_l>; 218}; 219 220&cpu_l1 { 221 cpu-supply = <&vdd_cpu_l>; 222}; 223 224&cpu_l2 { 225 cpu-supply = <&vdd_cpu_l>; 226}; 227 228&cpu_l3 { 229 cpu-supply = <&vdd_cpu_l>; 230}; 231 232&cpu_b0 { 233 cpu-supply = <&vdd_cpu_b>; 234}; 235 236&cpu_b1 { 237 cpu-supply = <&vdd_cpu_b>; 238}; 239 240&emmc_phy { 241 status = "okay"; 242}; 243 244&gpu { 245 mali-supply = <&vdd_gpu>; 246 status = "okay"; 247}; 248 249&i2c0 { 250 clock-frequency = <400000>; 251 i2c-scl-rising-time-ns = <168>; 252 i2c-scl-falling-time-ns = <4>; 253 status = "okay"; 254 255 rk818: pmic@1c { 256 compatible = "rockchip,rk818"; 257 reg = <0x1c>; 258 interrupt-parent = <&gpio1>; 259 interrupts = <RK_PC5 IRQ_TYPE_LEVEL_LOW>; 260 #clock-cells = <1>; 261 clock-output-names = "xin32k", "rk808-clkout2"; 262 pinctrl-names = "default"; 263 pinctrl-0 = <&pmic_int_l>; 264 system-power-controller; 265 wakeup-source; 266 267 vcc1-supply = <&vcc_sys>; 268 vcc2-supply = <&vcc_sys>; 269 vcc3-supply = <&vcc_sys>; 270 vcc4-supply = <&vcc_sys>; 271 vcc6-supply = <&vcc_sys>; 272 vcc7-supply = <&vcc3v3_sys>; 273 vcc8-supply = <&vcc_sys>; 274 vcc9-supply = <&vcc3v3_sys>; 275 276 regulators { 277 vdd_cpu_l: DCDC_REG1 { 278 regulator-name = "vdd_cpu_l"; 279 regulator-always-on; 280 regulator-boot-on; 281 regulator-min-microvolt = <875000>; 282 regulator-max-microvolt = <975000>; 283 regulator-ramp-delay = <6001>; 284 regulator-state-mem { 285 regulator-off-in-suspend; 286 }; 287 }; 288 289 vdd_center: DCDC_REG2 { 290 regulator-name = "vdd_center"; 291 regulator-always-on; 292 regulator-boot-on; 293 regulator-min-microvolt = <800000>; 294 regulator-max-microvolt = <1000000>; 295 regulator-ramp-delay = <6001>; 296 regulator-state-mem { 297 regulator-off-in-suspend; 298 }; 299 }; 300 301 vcc_ddr: DCDC_REG3 { 302 regulator-name = "vcc_ddr"; 303 regulator-always-on; 304 regulator-boot-on; 305 regulator-state-mem { 306 regulator-on-in-suspend; 307 }; 308 }; 309 310 vcc_1v8: DCDC_REG4 { 311 regulator-name = "vcc_1v8"; 312 regulator-always-on; 313 regulator-boot-on; 314 regulator-min-microvolt = <1800000>; 315 regulator-max-microvolt = <1800000>; 316 regulator-state-mem { 317 regulator-on-in-suspend; 318 }; 319 }; 320 321 vcca3v0_codec: LDO_REG1 { 322 regulator-name = "vcca3v0_codec"; 323 regulator-min-microvolt = <3000000>; 324 regulator-max-microvolt = <3000000>; 325 }; 326 327 vcc3v0_touch: LDO_REG2 { 328 regulator-name = "vcc3v0_touch"; 329 regulator-min-microvolt = <3000000>; 330 regulator-max-microvolt = <3000000>; 331 }; 332 333 vcca1v8_codec: LDO_REG3 { 334 regulator-name = "vcca1v8_codec"; 335 regulator-always-on; 336 regulator-boot-on; 337 regulator-min-microvolt = <1800000>; 338 regulator-max-microvolt = <1800000>; 339 }; 340 341 rk818_pwr_on: LDO_REG4 { 342 regulator-name = "rk818_pwr_on"; 343 regulator-always-on; 344 regulator-boot-on; 345 regulator-min-microvolt = <3300000>; 346 regulator-max-microvolt = <3300000>; 347 regulator-state-mem { 348 regulator-on-in-suspend; 349 }; 350 }; 351 352 vcc_3v0: LDO_REG5 { 353 regulator-name = "vcc_3v0"; 354 regulator-always-on; 355 regulator-boot-on; 356 regulator-min-microvolt = <3000000>; 357 regulator-max-microvolt = <3000000>; 358 regulator-state-mem { 359 regulator-on-in-suspend; 360 }; 361 }; 362 363 vcc_1v5: LDO_REG6 { 364 regulator-name = "vcc_1v5"; 365 regulator-always-on; 366 regulator-boot-on; 367 regulator-min-microvolt = <1500000>; 368 regulator-max-microvolt = <1500000>; 369 regulator-state-mem { 370 regulator-on-in-suspend; 371 }; 372 }; 373 374 vcc1v8_dvp: LDO_REG7 { 375 regulator-name = "vcc1v8_dvp"; 376 regulator-min-microvolt = <1800000>; 377 regulator-max-microvolt = <1800000>; 378 }; 379 380 vcc3v3_s3: LDO_REG8 { 381 regulator-name = "vcc3v3_s3"; 382 regulator-always-on; 383 regulator-boot-on; 384 regulator-min-microvolt = <3300000>; 385 regulator-max-microvolt = <3300000>; 386 regulator-state-mem { 387 regulator-off-in-suspend; 388 }; 389 }; 390 391 vccio_sd: LDO_REG9 { 392 regulator-name = "vccio_sd"; 393 regulator-min-microvolt = <1800000>; 394 regulator-max-microvolt = <3300000>; 395 }; 396 397 vcc3v3_s0: SWITCH_REG { 398 regulator-name = "vcc3v3_s0"; 399 regulator-always-on; 400 regulator-boot-on; 401 regulator-state-mem { 402 regulator-on-in-suspend; 403 }; 404 }; 405 }; 406 }; 407 408 vdd_cpu_b: regulator@40 { 409 compatible = "silergy,syr827"; 410 reg = <0x40>; 411 fcs,suspend-voltage-selector = <1>; 412 pinctrl-names = "default"; 413 pinctrl-0 = <&vsel1_pin>; 414 regulator-name = "vdd_cpu_b"; 415 regulator-min-microvolt = <875000>; 416 regulator-max-microvolt = <1150000>; 417 regulator-ramp-delay = <1000>; 418 regulator-always-on; 419 regulator-boot-on; 420 421 regulator-state-mem { 422 regulator-off-in-suspend; 423 }; 424 }; 425 426 vdd_gpu: regulator@41 { 427 compatible = "silergy,syr828"; 428 reg = <0x41>; 429 fcs,suspend-voltage-selector = <1>; 430 pinctrl-names = "default"; 431 pinctrl-0 = <&vsel2_pin>; 432 regulator-name = "vdd_gpu"; 433 regulator-min-microvolt = <875000>; 434 regulator-max-microvolt = <975000>; 435 regulator-ramp-delay = <1000>; 436 regulator-always-on; 437 regulator-boot-on; 438 439 regulator-state-mem { 440 regulator-off-in-suspend; 441 }; 442 }; 443}; 444 445&i2c1 { 446 assigned-clocks = <&cru SCLK_CIF_OUT>; 447 assigned-clock-rates = <24000000>; 448 clock-frequency = <400000>; 449 pinctrl-names = "default"; 450 pinctrl-0 = <&i2c1_xfer &cif_clkouta>; 451 status = "okay"; 452 453 wcam: camera@1a { 454 compatible = "sony,imx258-pdaf"; 455 reg = <0x1a>; 456 clocks = <&cru SCLK_CIF_OUT>; /* MIPI_MCLK0, derived from CIF_CLKO */ 457 lens-focus = <&wcam_lens>; 458 orientation = <1>; /* V4L2_CAMERA_ORIENTATION_BACK */ 459 pinctrl-names = "default"; 460 pinctrl-0 = <&camera_rst_l>; 461 reset-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_LOW>; 462 rotation = <270>; 463 /* Note: both cameras also depend on vcca1v8_codec to power the I2C bus. */ 464 vif-supply = <&vcc1v8_dvp>; 465 vana-supply = <&avdd2v8_dvp>; 466 vdig-supply = <&vcc1v2_dvp>; /* DVDD_DVP is the same as VCC1V2_DVP */ 467 468 port { 469 wcam_out: endpoint { 470 data-lanes = <1 2 3 4>; 471 link-frequencies = /bits/ 64 <636000000>; 472 remote-endpoint = <&mipi_in_wcam>; 473 }; 474 }; 475 }; 476 477 wcam_lens: camera-lens@c { 478 compatible = "dongwoon,dw9714"; 479 reg = <0x0c>; 480 /* Same I2c bus as both cameras, depends on vcca1v8_codec for power. */ 481 vcc-supply = <&vcc1v8_dvp>; 482 }; 483 484 ucam: camera@36 { 485 compatible = "ovti,ov8858"; 486 reg = <0x36>; 487 clocks = <&cru SCLK_CIF_OUT>; /* MIPI_MCLK1, derived from CIF_CLK0 */ 488 clock-names = "xvclk"; 489 dovdd-supply = <&vcc1v8_dvp>; 490 orientation = <0>; /* V4L2_CAMERA_ORIENTATION_FRONT */ 491 pinctrl-names = "default"; 492 pinctrl-0 = <&camera2_rst_l &dvp_pdn0_h>; 493 powerdown-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_LOW>; 494 reset-gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_LOW>; 495 rotation = <90>; 496 497 port { 498 ucam_out: endpoint { 499 data-lanes = <1 2 3 4>; 500 remote-endpoint = <&mipi_in_ucam>; 501 }; 502 }; 503 }; 504}; 505 506&i2c3 { 507 i2c-scl-rising-time-ns = <450>; 508 i2c-scl-falling-time-ns = <15>; 509 status = "okay"; 510 511 touchscreen@14 { 512 compatible = "goodix,gt1158"; 513 reg = <0x14>; 514 interrupt-parent = <&gpio3>; 515 interrupts = <RK_PB5 IRQ_TYPE_EDGE_RISING>; 516 irq-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_HIGH>; 517 reset-gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_HIGH>; 518 AVDD28-supply = <&vcc3v0_touch>; 519 VDDIO-supply = <&vcc3v0_touch>; 520 touchscreen-size-x = <720>; 521 touchscreen-size-y = <1440>; 522 }; 523 524 light-sensor@48 { 525 compatible = "sensortek,stk3311"; 526 reg = <0x48>; 527 interrupt-parent = <&gpio4>; 528 interrupts = <RK_PD3 IRQ_TYPE_EDGE_FALLING>; 529 pinctrl-names = "default"; 530 pinctrl-0 = <&light_int_l>; 531 proximity-near-level = <300>; 532 }; 533}; 534 535&i2c4 { 536 i2c-scl-rising-time-ns = <600>; 537 i2c-scl-falling-time-ns = <20>; 538 status = "okay"; 539 540 /* Accelerometer/gyroscope */ 541 mpu6500@68 { 542 compatible = "invensense,mpu6500"; 543 reg = <0x68>; 544 interrupt-parent = <&gpio1>; 545 interrupts = <RK_PC6 IRQ_TYPE_LEVEL_LOW>; 546 vdd-supply = <&vcc_1v8>; 547 vddio-supply = <&vcc_1v8>; 548 549 mount-matrix = 550 "1", "0", "0", 551 "0", "-1", "0", 552 "0", "0", "-1"; 553 }; 554}; 555 556&i2c4 { 557 af8133j: compass@1c { 558 compatible = "voltafield,af8133j"; 559 reg = <0x1c>; 560 avdd-supply = <&vcc_3v0>; 561 dvdd-supply = <&vcc_1v8>; 562 pinctrl-names = "default"; 563 pinctrl-0 = <&compass_rst_l>; 564 reset-gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>; 565 566 mount-matrix = 567 "0", "1", "0", 568 "-1", "0", "0", 569 "0", "0", "1"; 570 }; 571}; 572 573&io_domains { 574 bt656-supply = <&vcc1v8_dvp>; 575 audio-supply = <&vcca1v8_codec>; 576 sdmmc-supply = <&vccio_sd>; 577 gpio1830-supply = <&vcc_3v0>; 578 status = "okay"; 579}; 580 581&isp0 { 582 status = "okay"; 583 584 ports { 585 port@0 { 586 mipi_in_ucam: endpoint@0 { 587 reg = <0>; 588 data-lanes = <1 2 3 4>; 589 remote-endpoint = <&ucam_out>; 590 }; 591 }; 592 }; 593}; 594 595&isp0_mmu { 596 status = "okay"; 597}; 598 599&isp1 { 600 status = "okay"; 601 602 ports { 603 port@0 { 604 mipi_in_wcam: endpoint@0 { 605 reg = <0>; 606 data-lanes = <1 2 3 4>; 607 remote-endpoint = <&wcam_out>; 608 }; 609 }; 610 }; 611}; 612 613&mipi_dphy_rx0 { 614 status = "okay"; 615}; 616 617&isp1_mmu { 618 status = "okay"; 619}; 620 621&mipi_dsi { 622 clock-master; 623 #address-cells = <1>; 624 #size-cells = <0>; 625 status = "okay"; 626 627 panel@0 { 628 compatible = "hannstar,hsd060bhw4", "himax,hx8394"; 629 reg = <0>; 630 backlight = <&backlight>; 631 iovcc-supply = <&vcc1v8_lcd>; 632 pinctrl-names = "default"; 633 pinctrl-0 = <&lcd1_rst_pin>; 634 reset-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_LOW>; 635 vcc-supply = <&vcc2v8_lcd>; 636 637 port { 638 mipi_in_panel: endpoint { 639 remote-endpoint = <&mipi_out_panel>; 640 }; 641 }; 642 }; 643}; 644 645&mipi_out { 646 mipi_out_panel: endpoint { 647 remote-endpoint = <&mipi_in_panel>; 648 }; 649}; 650 651&mipi_dsi1 { 652 status = "okay"; 653}; 654 655&pmu_io_domains { 656 pmu1830-supply = <&vcc_1v8>; 657 status = "okay"; 658}; 659 660&pinctrl { 661 buttons { 662 pwrbtn_pin: pwrbtn-pin { 663 rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; 664 }; 665 }; 666 667 lcd { 668 lcd1_rst_pin: lcd1-rst-pin { 669 rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>; 670 }; 671 }; 672 673 cameras { 674 camera_rst_l: camera-rst-l { 675 rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; 676 }; 677 camera2_rst_l: camera2-rst-l { 678 rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; 679 }; 680 dvp_pdn0_h: dvp-pdn0-h { 681 rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; 682 }; 683 }; 684 685 compass { 686 compass_rst_l: compass-rst-l { 687 rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; 688 }; 689 }; 690 691 leds { 692 red_led_pin: red-led-pin { 693 rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 694 }; 695 696 green_led_pin: green-led-pin { 697 rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; 698 }; 699 700 blue_led_pin: blue-led-pin { 701 rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; 702 }; 703 }; 704 705 pmic { 706 pmic_int_l: pmic-int-l { 707 rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; 708 }; 709 710 vsel1_pin: vsel1-pin { 711 rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; 712 }; 713 714 vsel2_pin: vsel2-pin { 715 rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; 716 }; 717 }; 718 719 sdio-pwrseq { 720 wifi_enable_h_pin: wifi-enable-h-pin { 721 rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; 722 }; 723 }; 724 725 sound { 726 vcc1v8_codec_en: vcc1v8-codec-en { 727 rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>; 728 }; 729 }; 730 731 stk3311 { 732 light_int_l: light-int-l { 733 rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO &pcfg_input_pull_up>; 734 }; 735 }; 736 737 wifi { 738 wifi_host_wake_l: wifi-host-wake-l { 739 rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; 740 }; 741 }; 742 743 wireless-bluetooth { 744 bt_wake_pin: bt-wake-pin { 745 rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 746 }; 747 748 bt_host_wake_pin: bt-host-wake-pin { 749 rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; 750 }; 751 752 bt_reset_pin: bt-reset-pin { 753 rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; 754 }; 755 }; 756}; 757 758&sdio0 { 759 bus-width = <4>; 760 cap-sd-highspeed; 761 cap-sdio-irq; 762 disable-wp; 763 keep-power-in-suspend; 764 mmc-pwrseq = <&wifi_pwrseq>; 765 non-removable; 766 pinctrl-names = "default"; 767 pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; 768 sd-uhs-sdr104; 769 #address-cells = <1>; 770 #size-cells = <0>; 771 status = "okay"; 772 773 brcmf: wifi@1 { 774 compatible = "brcm,bcm4329-fmac"; 775 reg = <1>; 776 interrupt-parent = <&gpio4>; 777 interrupts = <RK_PD0 IRQ_TYPE_LEVEL_HIGH>; 778 interrupt-names = "host-wake"; 779 pinctrl-names = "default"; 780 pinctrl-0 = <&wifi_host_wake_l>; 781 }; 782}; 783 784&pwm0 { 785 status = "okay"; 786}; 787 788&saradc { 789 vref-supply = <&vcca1v8_s3>; 790 status = "okay"; 791}; 792 793&sdmmc { 794 bus-width = <4>; 795 cap-sd-highspeed; 796 cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; 797 disable-wp; 798 max-frequency = <150000000>; 799 pinctrl-names = "default"; 800 pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; 801 vmmc-supply = <&vcc3v3_sys>; 802 vqmmc-supply = <&vccio_sd>; 803 status = "okay"; 804}; 805 806&sdhci { 807 bus-width = <8>; 808 mmc-hs200-1_8v; 809 non-removable; 810 status = "okay"; 811}; 812 813&spi1 { 814 status = "okay"; 815 816 flash@0 { 817 compatible = "jedec,spi-nor"; 818 reg = <0>; 819 spi-max-frequency = <10000000>; 820 vcc-supply = <&vcc_1v8>; 821 }; 822}; 823 824&tsadc { 825 rockchip,hw-tshut-mode = <1>; 826 rockchip,hw-tshut-polarity = <1>; 827 status = "okay"; 828}; 829 830&uart0 { 831 pinctrl-names = "default"; 832 pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; 833 uart-has-rtscts; 834 status = "okay"; 835 836 bluetooth { 837 compatible = "brcm,bcm4345c5"; 838 clocks = <&rk818 1>; 839 clock-names = "lpo"; 840 device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>; 841 host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; 842 max-speed = <1500000>; 843 pinctrl-names = "default"; 844 pinctrl-0 = <&bt_host_wake_pin &bt_wake_pin &bt_reset_pin>; 845 shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; 846 vbat-supply = <&vcc3v3_sys>; 847 vddio-supply = <&vcc_1v8>; 848 }; 849}; 850 851&uart2 { 852 status = "okay"; 853}; 854 855&vopb { 856 status = "okay"; 857 assigned-clocks = <&cru DCLK_VOP0_DIV>, <&cru DCLK_VOP0>, 858 <&cru ACLK_VOP0>, <&cru HCLK_VOP0>; 859 assigned-clock-rates = <0>, <0>, <400000000>, <100000000>; 860 assigned-clock-parents = <&cru PLL_GPLL>, <&cru DCLK_VOP0_DIV>; 861}; 862 863&vopb_mmu { 864 status = "okay"; 865}; 866 867&vopl { 868 status = "okay"; 869 assigned-clocks = <&cru DCLK_VOP1_DIV>, <&cru DCLK_VOP1>, 870 <&cru ACLK_VOP1>, <&cru HCLK_VOP1>; 871 assigned-clock-rates = <0>, <0>, <400000000>, <100000000>; 872 assigned-clock-parents = <&cru PLL_GPLL>, <&cru DCLK_VOP1_DIV>; 873}; 874 875&vopl_mmu { 876 status = "okay"; 877}; 878