1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2 3#include <dt-bindings/gpio/gpio.h> 4#include <dt-bindings/input/gpio-keys.h> 5#include <dt-bindings/input/input.h> 6#include <dt-bindings/leds/common.h> 7#include <dt-bindings/pinctrl/rockchip.h> 8 9#include "rk3566.dtsi" 10 11/ { 12 chassis-type = "tablet"; 13 14 aliases { 15 mmc0 = &sdhci; 16 }; 17 18 chosen { 19 stdout-path = "serial2:1500000n8"; 20 }; 21 22 adc-keys { 23 compatible = "adc-keys"; 24 io-channels = <&saradc 0>; 25 io-channel-names = "buttons"; 26 keyup-threshold-microvolt = <1750000>; 27 28 button-recovery { 29 label = "recovery"; 30 linux,code = <KEY_VENDOR>; 31 press-threshold-microvolt = <0>; 32 }; 33 }; 34 35 spk_amp: audio-amplifier { 36 compatible = "simple-audio-amplifier"; 37 enable-gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>; 38 pinctrl-0 = <&spk_amp_enable_h>; 39 pinctrl-names = "default"; 40 sound-name-prefix = "Speaker Amp"; 41 }; 42 43 dmic_codec: dmic-codec { 44 compatible = "dmic-codec"; 45 num-channels = <6>; 46 #sound-dai-cells = <0>; 47 }; 48 49 gpio-keys { 50 compatible = "gpio-keys"; 51 pinctrl-0 = <&hall_int_l>; 52 pinctrl-names = "default"; 53 54 switch-cover { 55 label = "cover"; 56 gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>; 57 linux,input-type = <EV_SW>; 58 linux,code = <SW_MACHINE_COVER>; 59 linux,can-disable; 60 wakeup-event-action = <EV_ACT_DEASSERTED>; 61 wakeup-source; 62 }; 63 }; 64 65 gpio-leds { 66 compatible = "gpio-leds"; 67 pinctrl-0 = <&led_pin>; 68 pinctrl-names = "default"; 69 70 led-0 { 71 color = <LED_COLOR_ID_WHITE>; 72 function = LED_FUNCTION_CHARGING; 73 gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>; 74 }; 75 }; 76 77 sdio_pwrseq: sdio-pwrseq { 78 compatible = "mmc-pwrseq-simple"; 79 clocks = <&rk817 1>; 80 clock-names = "ext_clock"; 81 pinctrl-0 = <&wifi_enable_h>; 82 pinctrl-names = "default"; 83 reset-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_LOW>; 84 }; 85 86 sound { 87 compatible = "simple-audio-card"; 88 simple-audio-card,name = "PineNote"; 89 simple-audio-card,aux-devs = <&spk_amp>; 90 simple-audio-card,widgets = "Headphone", "Headphones", 91 "Speaker", "Internal Speakers"; 92 simple-audio-card,routing = "Headphones", "HPOL", 93 "Headphones", "HPOR", 94 "Internal Speakers", "Speaker Amp OUTL", 95 "Internal Speakers", "Speaker Amp OUTR", 96 "Speaker Amp INL", "HPOL", 97 "Speaker Amp INR", "HPOR"; 98 simple-audio-card,pin-switches = "Internal Speakers"; 99 #address-cells = <1>; 100 #size-cells = <0>; 101 102 simple-audio-card,dai-link@0 { 103 reg = <0>; 104 bitclock-master = <&link0_cpu>; 105 format = "i2s"; 106 frame-master = <&link0_cpu>; 107 mclk-fs = <256>; 108 109 link0_cpu: cpu { 110 sound-dai = <&i2s1_8ch>; 111 }; 112 113 link0_codec: codec { 114 sound-dai = <&rk817>; 115 }; 116 }; 117 118 simple-audio-card,dai-link@1 { 119 reg = <1>; 120 bitclock-master = <&link1_cpu>; 121 format = "pdm"; 122 frame-master = <&link1_cpu>; 123 124 link1_cpu: cpu { 125 sound-dai = <&pdm>; 126 }; 127 128 link1_codec: codec { 129 sound-dai = <&dmic_codec>; 130 }; 131 }; 132 }; 133 134 vbat_4g: regulator-vbat-4g { 135 compatible = "regulator-fixed"; 136 regulator-name = "vbat_4g"; 137 regulator-min-microvolt = <3800000>; 138 regulator-max-microvolt = <3800000>; 139 /* powered by vcc_bat, enabled by vbat_4g_en */ 140 vin-supply = <&vbat_4g_en>; 141 }; 142 143 vcc_1v8: regulator-vcc-1v8 { 144 compatible = "regulator-fixed"; 145 regulator-name = "vcc_1v8"; 146 regulator-always-on; 147 regulator-min-microvolt = <1800000>; 148 regulator-max-microvolt = <1800000>; 149 /* powered by vcc_sys, enabled by vcc_1v8_en */ 150 vin-supply = <&vcc_1v8_en>; 151 }; 152 153 vcc_bat: regulator-vcc-bat { 154 compatible = "regulator-fixed"; 155 regulator-name = "vcc_bat"; 156 regulator-always-on; 157 regulator-min-microvolt = <3800000>; 158 regulator-max-microvolt = <3800000>; 159 }; 160 161 vcc_hall_3v3: regulator-vcc-hall-3v3 { 162 compatible = "regulator-fixed"; 163 regulator-name = "vcc_hall_3v3"; 164 regulator-always-on; 165 regulator-min-microvolt = <3300000>; 166 regulator-max-microvolt = <3300000>; 167 vin-supply = <&vcc_sys>; 168 }; 169 170 vcc_sys: regulator-vcc-sys { 171 compatible = "regulator-fixed"; 172 regulator-name = "vcc_sys"; 173 regulator-always-on; 174 regulator-min-microvolt = <3800000>; 175 regulator-max-microvolt = <3800000>; 176 vin-supply = <&vcc_bat>; 177 }; 178 179 vcc_wl: regulator-vcc-wl { 180 compatible = "regulator-fixed"; 181 enable-active-high; 182 gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; 183 pinctrl-0 = <&vcc_wl_pin>; 184 pinctrl-names = "default"; 185 regulator-name = "vcc_wl"; 186 regulator-min-microvolt = <3300000>; 187 regulator-max-microvolt = <3300000>; 188 vin-supply = <&vcc_bat>; 189 }; 190 191 vdda_0v9: regulator-vdda-0v9 { 192 compatible = "regulator-fixed"; 193 regulator-name = "vdda_0v9"; 194 regulator-always-on; 195 regulator-min-microvolt = <900000>; 196 regulator-max-microvolt = <900000>; 197 /* powered by vcc_sys, enabled by vcc_1v8_en */ 198 vin-supply = <&vcc_1v8_en>; 199 }; 200}; 201 202&cpu0 { 203 cpu-supply = <&vdd_cpu>; 204}; 205 206&cpu1 { 207 cpu-supply = <&vdd_cpu>; 208}; 209 210&cpu2 { 211 cpu-supply = <&vdd_cpu>; 212}; 213 214&cpu3 { 215 cpu-supply = <&vdd_cpu>; 216}; 217 218&i2c0 { 219 status = "okay"; 220 221 vdd_cpu: regulator@1c { 222 compatible = "tcs,tcs4525"; 223 reg = <0x1c>; 224 fcs,suspend-voltage-selector = <0>; 225 regulator-name = "vdd_cpu"; 226 regulator-min-microvolt = <712500>; 227 regulator-max-microvolt = <1390000>; 228 regulator-ramp-delay = <2300>; 229 regulator-always-on; 230 vin-supply = <&vcc_sys>; 231 232 regulator-state-mem { 233 regulator-on-in-suspend; 234 }; 235 }; 236 237 rk817: pmic@20 { 238 compatible = "rockchip,rk817"; 239 reg = <0x20>; 240 interrupt-parent = <&gpio0>; 241 interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; 242 assigned-clocks = <&cru I2S1_MCLKOUT_TX>; 243 assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; 244 clocks = <&cru I2S1_MCLKOUT_TX>; 245 clock-names = "mclk"; 246 #clock-cells = <1>; 247 pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>, <&pmic_sleep>; 248 pinctrl-names = "default"; 249 system-power-controller; 250 #sound-dai-cells = <0>; 251 wakeup-source; 252 253 vcc1-supply = <&vcc_sys>; 254 vcc2-supply = <&vcc_sys>; 255 vcc3-supply = <&vcc_sys>; 256 vcc4-supply = <&vcc_sys>; 257 vcc5-supply = <&vcc_sys>; 258 vcc6-supply = <&vcc_sys>; 259 vcc7-supply = <&vcc_sys>; 260 vcc8-supply = <&vcc_sys>; 261 vcc9-supply = <&dcdc_boost>; 262 263 regulators { 264 vdd_logic: DCDC_REG1 { 265 regulator-name = "vdd_logic"; 266 regulator-always-on; 267 regulator-min-microvolt = <500000>; 268 regulator-max-microvolt = <1350000>; 269 regulator-ramp-delay = <6001>; 270 regulator-initial-mode = <0x2>; 271 272 regulator-state-mem { 273 regulator-off-in-suspend; 274 regulator-suspend-microvolt = <900000>; 275 }; 276 }; 277 278 vdd_gpu_npu: DCDC_REG2 { 279 regulator-name = "vdd_gpu_npu"; 280 regulator-min-microvolt = <500000>; 281 regulator-max-microvolt = <1350000>; 282 regulator-ramp-delay = <6001>; 283 regulator-initial-mode = <0x2>; 284 285 regulator-state-mem { 286 regulator-off-in-suspend; 287 }; 288 }; 289 290 vcc_ddr: DCDC_REG3 { 291 regulator-name = "vcc_ddr"; 292 regulator-always-on; 293 regulator-initial-mode = <0x2>; 294 295 regulator-state-mem { 296 regulator-on-in-suspend; 297 }; 298 }; 299 300 vcc_3v3: DCDC_REG4 { 301 regulator-name = "vcc_3v3"; 302 regulator-always-on; 303 regulator-min-microvolt = <3300000>; 304 regulator-max-microvolt = <3300000>; 305 regulator-initial-mode = <0x2>; 306 307 regulator-state-mem { 308 regulator-off-in-suspend; 309 }; 310 }; 311 312 vcca_1v8_pmu: LDO_REG1 { 313 regulator-name = "vcca_1v8_pmu"; 314 regulator-always-on; 315 regulator-min-microvolt = <1800000>; 316 regulator-max-microvolt = <1800000>; 317 318 regulator-state-mem { 319 regulator-on-in-suspend; 320 }; 321 }; 322 323 /* unused */ 324 vdda_0v9_ldo: LDO_REG2 { 325 regulator-name = "vdda_0v9_ldo"; 326 regulator-min-microvolt = <900000>; 327 regulator-max-microvolt = <900000>; 328 329 regulator-state-mem { 330 regulator-off-in-suspend; 331 }; 332 }; 333 334 vdda_0v9_pmu: LDO_REG3 { 335 regulator-name = "vdda_0v9_pmu"; 336 regulator-always-on; 337 regulator-min-microvolt = <900000>; 338 regulator-max-microvolt = <900000>; 339 340 regulator-state-mem { 341 regulator-on-in-suspend; 342 }; 343 }; 344 345 vccio_acodec: LDO_REG4 { 346 regulator-name = "vccio_acodec"; 347 regulator-always-on; 348 regulator-min-microvolt = <3300000>; 349 regulator-max-microvolt = <3300000>; 350 351 regulator-state-mem { 352 regulator-off-in-suspend; 353 }; 354 }; 355 356 /* unused */ 357 vccio_sd: LDO_REG5 { 358 regulator-name = "vccio_sd"; 359 regulator-min-microvolt = <1800000>; 360 regulator-max-microvolt = <3300000>; 361 362 regulator-state-mem { 363 regulator-off-in-suspend; 364 }; 365 }; 366 367 vcc_3v3_pmu: LDO_REG6 { 368 regulator-name = "vcc_3v3_pmu"; 369 regulator-always-on; 370 regulator-min-microvolt = <3300000>; 371 regulator-max-microvolt = <3300000>; 372 373 regulator-state-mem { 374 regulator-on-in-suspend; 375 }; 376 }; 377 378 vcc_1v8_en: LDO_REG7 { 379 regulator-name = "vcc_1v8_en"; 380 regulator-min-microvolt = <1800000>; 381 regulator-max-microvolt = <1800000>; 382 383 regulator-state-mem { 384 regulator-off-in-suspend; 385 }; 386 }; 387 388 vbat_4g_en: LDO_REG8 { 389 regulator-name = "vbat_4g_en"; 390 regulator-min-microvolt = <1800000>; 391 regulator-max-microvolt = <1800000>; 392 393 regulator-state-mem { 394 regulator-off-in-suspend; 395 }; 396 }; 397 398 sleep_sta_ctl: LDO_REG9 { 399 regulator-name = "sleep_sta_ctl"; 400 regulator-min-microvolt = <1800000>; 401 regulator-max-microvolt = <1800000>; 402 403 regulator-state-mem { 404 regulator-on-in-suspend; 405 }; 406 }; 407 408 dcdc_boost: BOOST { 409 regulator-name = "boost"; 410 regulator-min-microvolt = <5000000>; 411 regulator-max-microvolt = <5000000>; 412 413 regulator-state-mem { 414 regulator-off-in-suspend; 415 }; 416 }; 417 418 otg_switch: OTG_SWITCH { 419 regulator-name = "otg_switch"; 420 421 regulator-state-mem { 422 regulator-off-in-suspend; 423 }; 424 }; 425 }; 426 }; 427}; 428 429&i2c1 { 430 status = "okay"; 431 432 digitizer@9 { 433 compatible = "wacom,w9013", "hid-over-i2c"; 434 reg = <0x09>; 435 interrupt-parent = <&gpio0>; 436 interrupts = <RK_PB6 IRQ_TYPE_LEVEL_LOW>; 437 hid-descr-addr = <0x1>; 438 pinctrl-0 = <&pen_fwe>, <&pen_irq_l>, <&pen_rst_l>; 439 pinctrl-names = "default"; 440 vdd-supply = <&vcc_3v3_pmu>; 441 }; 442}; 443 444&i2c3 { 445 pinctrl-0 = <&i2c3m1_xfer>; 446 status = "okay"; 447 448 led-controller@36 { 449 compatible = "ti,lm3630a"; 450 reg = <0x36>; 451 enable-gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; 452 pinctrl-0 = <&backlight_hwen_h>; 453 pinctrl-names = "default"; 454 #address-cells = <1>; 455 #size-cells = <0>; 456 457 led@0 { 458 reg = <0>; 459 label = "backlight_cool"; 460 default-brightness = <0>; 461 }; 462 463 led@1 { 464 reg = <1>; 465 label = "backlight_warm"; 466 default-brightness = <0>; 467 }; 468 }; 469 470 wusb3801: tcpc@60 { 471 compatible = "willsemi,wusb3801"; 472 reg = <0x60>; 473 interrupt-parent = <&gpio0>; 474 interrupts = <RK_PA4 IRQ_TYPE_LEVEL_LOW>; 475 pinctrl-0 = <&tcpc_int_l>; 476 pinctrl-names = "default"; 477 478 connector { 479 compatible = "usb-c-connector"; 480 label = "USB-C"; 481 vbus-supply = <&otg_switch>; 482 power-role = "dual"; 483 try-power-role = "sink"; 484 data-role = "dual"; 485 typec-power-opmode = "default"; 486 pd-disable; 487 488 ports { 489 #address-cells = <0x1>; 490 #size-cells = <0x0>; 491 492 port@0 { 493 reg = <0x0>; 494 495 typec_hs_usb2phy0: endpoint { 496 remote-endpoint = <&usb2phy0_typec_hs>; 497 }; 498 }; 499 }; 500 }; 501 }; 502}; 503 504&i2c5 { 505 status = "okay"; 506 507 accelerometer@18 { 508 compatible = "silan,sc7a20"; 509 reg = <0x18>; 510 interrupt-parent = <&gpio3>; 511 interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>; 512 pinctrl-0 = <&accelerometer_int_l>; 513 pinctrl-names = "default"; 514 st,drdy-int-pin = <1>; 515 vdd-supply = <&vcc_3v3>; 516 vddio-supply = <&vcc_3v3>; 517 }; 518}; 519 520&i2s1_8ch { 521 pinctrl-0 = <&i2s1m0_lrcktx>, <&i2s1m0_sclktx>, <&i2s1m0_sdi0>, <&i2s1m0_sdo0>; 522 rockchip,trcm-sync-tx-only; 523 status = "okay"; 524}; 525 526&pdm { 527 pinctrl-0 = <&pdmm0_clk1>, <&pdmm0_sdi1>, <&pdmm0_sdi2>; 528 /* microphones are on channels 1 and 2 */ 529 rockchip,path-map = <1>, <2>, <0>, <3>; 530 status = "okay"; 531}; 532 533&pinctrl { 534 accelerometer { 535 accelerometer_int_l: accelerometer-int-l { 536 rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; 537 }; 538 }; 539 540 audio-amplifier { 541 spk_amp_enable_h: spk-amp-enable-h { 542 rockchip,pins = <3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; 543 }; 544 }; 545 546 backlight { 547 backlight_hwen_h: backlight-hwen-h { 548 rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; 549 }; 550 }; 551 552 bt { 553 bt_enable_h: bt-enable-h { 554 rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; 555 }; 556 557 bt_host_wake_l: bt-host-wake-l { 558 rockchip,pins = <0 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>; 559 }; 560 561 bt_wake_h: bt-wake-h { 562 rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; 563 }; 564 }; 565 566 led { 567 led_pin: led-pin { 568 rockchip,pins = <3 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; 569 }; 570 }; 571 572 hall { 573 hall_int_l: hall-int-l { 574 rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; 575 }; 576 }; 577 578 pen { 579 pen_fwe: pen-fwe { 580 rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_down>; 581 }; 582 583 pen_irq_l: pen-irq-l { 584 rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; 585 }; 586 587 pen_rst_l: pen-rst-l { 588 rockchip,pins = <0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>; 589 }; 590 }; 591 592 pmic { 593 pmic_int_l: pmic-int-l { 594 rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; 595 }; 596 597 pmic_sleep: pmic-sleep { 598 rockchip,pins = <0 RK_PA2 1 &pcfg_pull_none>; 599 }; 600 }; 601 602 sdio-pwrseq { 603 wifi_enable_h: wifi-enable-h { 604 rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; 605 }; 606 }; 607 608 tcpc { 609 tcpc_int_l: tcpc-int-l { 610 rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>; 611 }; 612 }; 613 614 vcc-wl { 615 vcc_wl_pin: vcc-wl-pin { 616 rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; 617 }; 618 }; 619 620 wifi { 621 wifi_host_wake_l: wifi-host-wake-l { 622 rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; 623 }; 624 }; 625}; 626 627&pmu_io_domains { 628 pmuio1-supply = <&vcc_3v3_pmu>; 629 pmuio2-supply = <&vcc_3v3_pmu>; 630 vccio1-supply = <&vccio_acodec>; 631 vccio2-supply = <&vcc_1v8>; 632 vccio3-supply = <&vcc_3v3>; 633 vccio4-supply = <&vcca_1v8_pmu>; 634 vccio5-supply = <&vcc_3v3>; 635 vccio6-supply = <&vcc_3v3>; 636 status = "okay"; 637}; 638 639&saradc { 640 vref-supply = <&vcc_1v8>; 641 status = "okay"; 642}; 643 644&sdhci { 645 bus-width = <8>; 646 mmc-hs200-1_8v; 647 non-removable; 648 pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, <&emmc_datastrobe>, <&emmc_rstnout>; 649 pinctrl-names = "default"; 650 vmmc-supply = <&vcc_3v3>; 651 vqmmc-supply = <&vcc_1v8>; 652 status = "okay"; 653}; 654 655&sdmmc1 { 656 bus-width = <4>; 657 cap-sd-highspeed; 658 cap-sdio-irq; 659 keep-power-in-suspend; 660 mmc-pwrseq = <&sdio_pwrseq>; 661 non-removable; 662 pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_clk>, <&sdmmc1_cmd>; 663 pinctrl-names = "default"; 664 sd-uhs-sdr104; 665 vmmc-supply = <&vcc_wl>; 666 vqmmc-supply = <&vcca_1v8_pmu>; 667 status = "okay"; 668}; 669 670&tsadc { 671 /* tshut mode 0:CRU 1:GPIO */ 672 rockchip,hw-tshut-mode = <1>; 673 /* tshut polarity 0:LOW 1:HIGH */ 674 rockchip,hw-tshut-polarity = <0>; 675 status = "okay"; 676}; 677 678&uart1 { 679 dma-names = "tx", "rx"; 680 pinctrl-0 = <&uart1m0_ctsn>, <&uart1m0_rtsn>, <&uart1m0_xfer>; 681 pinctrl-names = "default"; 682 uart-has-rtscts; 683 status = "okay"; 684 685 bluetooth { 686 compatible = "brcm,bcm43438-bt"; 687 clocks = <&rk817 1>; 688 clock-names = "lpo"; 689 device-wakeup-gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; 690 host-wakeup-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; 691 pinctrl-0 = <&bt_enable_h>, <&bt_host_wake_l>, <&bt_wake_h>; 692 pinctrl-names = "default"; 693 shutdown-gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; 694 vbat-supply = <&vcc_wl>; 695 vddio-supply = <&vcca_1v8_pmu>; 696 }; 697}; 698 699&uart2 { 700 status = "okay"; 701}; 702 703&usb_host0_xhci { 704 dr_mode = "otg"; 705 status = "okay"; 706}; 707 708&usb2phy0 { 709 status = "okay"; 710}; 711 712&usb2phy0_otg { 713 status = "okay"; 714 715 port { 716 usb2phy0_typec_hs: endpoint { 717 remote-endpoint = <&typec_hs_usb2phy0>; 718 }; 719 }; 720}; 721