1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/dts-v1/; 3#include <dt-bindings/pwm/pwm.h> 4#include <dt-bindings/input/input.h> 5#include "rk3399.dtsi" 6#include "rk3399-opp.dtsi" 7 8/ { 9 model = "Hugsun X99 TV BOX"; 10 compatible = "hugsun,x99", "rockchip,rk3399"; 11 12 chosen { 13 stdout-path = "serial2:1500000n8"; 14 }; 15 16 clkin_gmac: external-gmac-clock { 17 compatible = "fixed-clock"; 18 clock-frequency = <125000000>; 19 clock-output-names = "clkin_gmac"; 20 #clock-cells = <0>; 21 }; 22 23 dc_5v: dc-5v { 24 compatible = "regulator-fixed"; 25 regulator-name = "dc_5v"; 26 regulator-always-on; 27 regulator-boot-on; 28 regulator-min-microvolt = <5000000>; 29 regulator-max-microvolt = <5000000>; 30 }; 31 32 vcc_sys: vcc-sys { 33 compatible = "regulator-fixed"; 34 regulator-name = "vcc_sys"; 35 regulator-min-microvolt = <5000000>; 36 regulator-max-microvolt = <5000000>; 37 regulator-always-on; 38 vin-supply = <&dc_5v>; 39 }; 40 41 vcc_phy: vcc-phy-regulator { 42 compatible = "regulator-fixed"; 43 regulator-name = "vcc_phy"; 44 regulator-always-on; 45 regulator-boot-on; 46 }; 47 48 vcc1v8_s0: vcc1v8-s0 { 49 compatible = "regulator-fixed"; 50 regulator-name = "vcc1v8_s0"; 51 regulator-min-microvolt = <1800000>; 52 regulator-max-microvolt = <1800000>; 53 regulator-always-on; 54 }; 55 56 vcc3v3_sys: vcc3v3-sys { 57 compatible = "regulator-fixed"; 58 regulator-name = "vcc3v3_sys"; 59 regulator-min-microvolt = <3300000>; 60 regulator-max-microvolt = <3300000>; 61 regulator-always-on; 62 vin-supply = <&vcc_sys>; 63 }; 64 65 vcc5v0_host: vcc5v0-host-regulator { 66 compatible = "regulator-fixed"; 67 enable-active-high; 68 gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; 69 pinctrl-names = "default"; 70 pinctrl-0 = <&host_vbus_drv>; 71 regulator-name = "vcc5v0_host"; 72 regulator-always-on; 73 }; 74 75 vcc5v0_typec: vcc5v0-typec-regulator { 76 compatible = "regulator-fixed"; 77 enable-active-high; 78 gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>; 79 pinctrl-names = "default"; 80 pinctrl-0 = <&vcc5v0_typec_en>; 81 regulator-name = "vcc5v0_typec"; 82 regulator-always-on; 83 vin-supply = <&vcc5v0_usb>; 84 }; 85 86 vcc5v0_usb: vcc5v0-usb { 87 compatible = "regulator-fixed"; 88 regulator-name = "vcc5v0_usb"; 89 regulator-always-on; 90 regulator-boot-on; 91 regulator-min-microvolt = <5000000>; 92 regulator-max-microvolt = <5000000>; 93 vin-supply = <&dc_5v>; 94 }; 95 96 vdd_log: vdd-log { 97 compatible = "pwm-regulator"; 98 pwms = <&pwm2 0 25000 1>; 99 pwm-supply = <&vcc_sys>; 100 regulator-name = "vdd_log"; 101 regulator-min-microvolt = <800000>; 102 regulator-max-microvolt = <1400000>; 103 regulator-always-on; 104 regulator-boot-on; 105 }; 106 107 sdio_pwrseq: sdio-pwrseq { 108 compatible = "mmc-pwrseq-simple"; 109 clocks = <&rk808 1>; 110 clock-names = "ext_clock"; 111 pinctrl-names = "default"; 112 pinctrl-0 = <&wifi_reg_on_h>; 113 reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; 114 }; 115 116}; 117 118&cpu_l0 { 119 cpu-supply = <&vdd_cpu_l>; 120}; 121 122&cpu_l1 { 123 cpu-supply = <&vdd_cpu_l>; 124}; 125 126&cpu_l2 { 127 cpu-supply = <&vdd_cpu_l>; 128}; 129 130&cpu_l3 { 131 cpu-supply = <&vdd_cpu_l>; 132}; 133 134&cpu_b0 { 135 cpu-supply = <&vdd_cpu_b>; 136}; 137 138&cpu_b1 { 139 cpu-supply = <&vdd_cpu_b>; 140}; 141 142&emmc_phy { 143 status = "okay"; 144}; 145 146&gmac { 147 assigned-clocks = <&cru SCLK_RMII_SRC>; 148 assigned-clock-parents = <&clkin_gmac>; 149 clock_in_out = "input"; 150 phy-supply = <&vcc_phy>; 151 phy-mode = "rgmii"; 152 pinctrl-names = "default"; 153 pinctrl-0 = <&rgmii_pins>; 154 snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; 155 snps,reset-active-low; 156 snps,reset-delays-us = <0 10000 50000>; 157 tx_delay = <0x28>; 158 rx_delay = <0x11>; 159 status = "okay"; 160}; 161 162&gpu { 163 status = "okay"; 164 mali-supply = <&vdd_gpu>; 165}; 166 167&hdmi { 168 ddc-i2c-bus = <&i2c3>; 169 pinctrl-names = "default"; 170 pinctrl-0 = <&hdmi_cec>; 171 status = "okay"; 172}; 173 174&hdmi_sound { 175 status = "okay"; 176}; 177 178&i2c0 { 179 status = "okay"; 180 i2c-scl-rising-time-ns = <180>; 181 i2c-scl-falling-time-ns = <30>; 182 clock-frequency = <400000>; 183 184 vdd_cpu_b: syr827@40 { 185 compatible = "silergy,syr827"; 186 reg = <0x40>; 187 regulator-compatible = "fan53555-reg"; 188 pinctrl-0 = <&vsel1_gpio>; 189 regulator-name = "vdd_cpu_b"; 190 regulator-min-microvolt = <712500>; 191 regulator-max-microvolt = <1500000>; 192 regulator-ramp-delay = <1000>; 193 fcs,suspend-voltage-selector = <1>; 194 regulator-always-on; 195 regulator-boot-on; 196 vin-supply = <&vcc_sys>; 197 regulator-state-mem { 198 regulator-off-in-suspend; 199 }; 200 }; 201 202 vdd_gpu: syr828@41 { 203 compatible = "silergy,syr828"; 204 reg = <0x41>; 205 regulator-compatible = "fan53555-reg"; 206 pinctrl-0 = <&vsel2_gpio>; 207 regulator-name = "vdd_gpu"; 208 regulator-min-microvolt = <712500>; 209 regulator-max-microvolt = <1500000>; 210 regulator-ramp-delay = <1000>; 211 fcs,suspend-voltage-selector = <1>; 212 regulator-always-on; 213 regulator-boot-on; 214 vin-supply = <&vcc_sys>; 215 regulator-initial-mode = <1>; 216 regulator-state-mem { 217 regulator-off-in-suspend; 218 }; 219 }; 220 221 rk808: pmic@1b { 222 compatible = "rockchip,rk808"; 223 reg = <0x1b>; 224 interrupt-parent = <&gpio1>; 225 interrupts = <21 IRQ_TYPE_LEVEL_LOW>; 226 pinctrl-names = "default"; 227 pinctrl-0 = <&pmic_int_l>; 228 rockchip,system-power-controller; 229 wakeup-source; 230 #clock-cells = <1>; 231 clock-output-names = "xin32k", "rtc_clko_wifi"; 232 233 vcc1-supply = <&vcc_sys>; 234 vcc2-supply = <&vcc_sys>; 235 vcc3-supply = <&vcc_sys>; 236 vcc4-supply = <&vcc_sys>; 237 vcc6-supply = <&vcc_sys>; 238 vcc7-supply = <&vcc_sys>; 239 vcc8-supply = <&vcc3v3_sys>; 240 vcc9-supply = <&vcc_sys>; 241 vcc10-supply = <&vcc_sys>; 242 vcc11-supply = <&vcc_sys>; 243 vcc12-supply = <&vcc3v3_sys>; 244 vddio-supply = <&vcc_1v8>; 245 246 regulators { 247 vdd_center: DCDC_REG1 { 248 regulator-name = "vdd_center"; 249 regulator-min-microvolt = <900000>; 250 regulator-max-microvolt = <900000>; 251 regulator-ramp-delay = <6001>; 252 regulator-always-on; 253 regulator-boot-on; 254 regulator-state-mem { 255 regulator-off-in-suspend; 256 }; 257 }; 258 259 vdd_cpu_l: DCDC_REG2 { 260 regulator-name = "vdd_cpu_l"; 261 regulator-min-microvolt = <750000>; 262 regulator-max-microvolt = <1350000>; 263 regulator-ramp-delay = <6001>; 264 regulator-always-on; 265 regulator-boot-on; 266 regulator-state-mem { 267 regulator-off-in-suspend; 268 }; 269 }; 270 271 vcc_ddr: DCDC_REG3 { 272 regulator-name = "vcc_ddr"; 273 regulator-always-on; 274 regulator-boot-on; 275 regulator-state-mem { 276 regulator-on-in-suspend; 277 }; 278 }; 279 280 vcc_1v8: DCDC_REG4 { 281 regulator-name = "vcc_1v8"; 282 regulator-min-microvolt = <1800000>; 283 regulator-max-microvolt = <1800000>; 284 regulator-always-on; 285 regulator-boot-on; 286 regulator-state-mem { 287 regulator-on-in-suspend; 288 regulator-suspend-microvolt = <1800000>; 289 }; 290 }; 291 292 vcc1v8_dvp: LDO_REG1 { 293 regulator-name = "vcc1v8_dvp"; 294 regulator-min-microvolt = <1800000>; 295 regulator-max-microvolt = <1800000>; 296 regulator-always-on; 297 regulator-boot-on; 298 regulator-state-mem { 299 regulator-on-in-suspend; 300 regulator-suspend-microvolt = <1800000>; 301 }; 302 }; 303 304 vcca1v8_hdmi: LDO_REG2 { 305 regulator-name = "vcca1v8_hdmi"; 306 regulator-min-microvolt = <1800000>; 307 regulator-max-microvolt = <1800000>; 308 regulator-always-on; 309 regulator-boot-on; 310 regulator-state-mem { 311 regulator-on-in-suspend; 312 regulator-suspend-microvolt = <1800000>; 313 }; 314 }; 315 316 vcca_1v8: LDO_REG3 { 317 regulator-name = "vcca_1v8"; 318 regulator-min-microvolt = <1800000>; 319 regulator-max-microvolt = <1800000>; 320 regulator-always-on; 321 regulator-boot-on; 322 regulator-state-mem { 323 regulator-on-in-suspend; 324 regulator-suspend-microvolt = <1800000>; 325 }; 326 }; 327 328 vcc_sd: LDO_REG4 { 329 regulator-name = "vcc_sd"; 330 regulator-min-microvolt = <1800000>; 331 regulator-max-microvolt = <3300000>; 332 regulator-always-on; 333 regulator-boot-on; 334 regulator-state-mem { 335 regulator-on-in-suspend; 336 regulator-suspend-microvolt = <3300000>; 337 }; 338 }; 339 340 vcc3v0_sd: LDO_REG5 { 341 regulator-name = "vcc3v0_sd"; 342 regulator-min-microvolt = <3000000>; 343 regulator-max-microvolt = <3000000>; 344 regulator-always-on; 345 regulator-boot-on; 346 regulator-state-mem { 347 regulator-on-in-suspend; 348 regulator-suspend-microvolt = <3000000>; 349 }; 350 }; 351 352 vcc_1v5: LDO_REG6 { 353 regulator-name = "vcc_1v5"; 354 regulator-min-microvolt = <1500000>; 355 regulator-max-microvolt = <1500000>; 356 regulator-always-on; 357 regulator-boot-on; 358 regulator-state-mem { 359 regulator-on-in-suspend; 360 regulator-suspend-microvolt = <1500000>; 361 }; 362 }; 363 364 vcca0v9_hdmi: LDO_REG7 { 365 regulator-name = "vcca0v9_hdmi"; 366 regulator-min-microvolt = <900000>; 367 regulator-max-microvolt = <900000>; 368 regulator-always-on; 369 regulator-boot-on; 370 regulator-state-mem { 371 regulator-on-in-suspend; 372 regulator-suspend-microvolt = <900000>; 373 }; 374 }; 375 376 vcc_3v0: LDO_REG8 { 377 regulator-name = "vcc_3v0"; 378 regulator-min-microvolt = <3000000>; 379 regulator-max-microvolt = <3000000>; 380 regulator-always-on; 381 regulator-boot-on; 382 regulator-state-mem { 383 regulator-on-in-suspend; 384 regulator-suspend-microvolt = <3000000>; 385 }; 386 }; 387 388 vcc3v3_s3: SWITCH_REG1 { 389 regulator-name = "vcc3v3_s3"; 390 regulator-always-on; 391 regulator-boot-on; 392 regulator-state-mem { 393 regulator-on-in-suspend; 394 }; 395 }; 396 397 vcc3v3_s0: SWITCH_REG2 { 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 409&i2c1 { 410 i2c-scl-rising-time-ns = <300>; 411 i2c-scl-falling-time-ns = <15>; 412 status = "okay"; 413}; 414 415&i2c3 { 416 i2c-scl-rising-time-ns = <450>; 417 i2c-scl-falling-time-ns = <15>; 418 status = "okay"; 419}; 420 421&i2c4 { 422 i2c-scl-rising-time-ns = <600>; 423 i2c-scl-falling-time-ns = <40>; 424 status = "okay"; 425 426 fusb0: typec-portc@22 { 427 compatible = "fcs,fusb302"; 428 reg = <0x22>; 429 interrupt-parent = <&gpio1>; 430 interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>; 431 pinctrl-names = "default"; 432 pinctrl-0 = <&fusb0_int>; 433 vbus-supply = <&vcc5v0_typec>; 434 status = "okay"; 435 }; 436}; 437 438&i2c7 { 439 status = "okay"; 440}; 441 442&i2s0 { 443 rockchip,playback-channels = <8>; 444 rockchip,capture-channels = <8>; 445 status = "okay"; 446}; 447 448&i2s1 { 449 rockchip,playback-channels = <2>; 450 rockchip,capture-channels = <2>; 451 status = "okay"; 452}; 453 454&i2s2 { 455 status = "okay"; 456}; 457 458&io_domains { 459 status = "okay"; 460 audio-supply = <&vcc1v8_s0>; 461 bt656-supply = <&vcc1v8_s0>; 462 gpio1830-supply = <&vcc_3v0>; 463 sdmmc-supply = <&vcc_sd>; 464}; 465 466&pmu_io_domains { 467 status = "okay"; 468 pmu1830-supply = <&vcc_1v8>; 469}; 470 471&pinctrl { 472 fusb30x { 473 fusb0_int: fusb0-int { 474 rockchip,pins = 475 <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; 476 }; 477 }; 478 479 gmac { 480 rgmii_sleep_pins: rgmii-sleep-pins { 481 rockchip,pins = 482 <3 RK_PB7 RK_FUNC_GPIO &pcfg_output_low>; 483 }; 484 }; 485 486 pmic { 487 pmic_int_l: pmic-int-l { 488 rockchip,pins = 489 <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; 490 }; 491 492 vsel1_gpio: vsel1-gpio { 493 rockchip,pins = 494 <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; 495 }; 496 497 vsel2_gpio: vsel2-gpio { 498 rockchip,pins = 499 <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; 500 }; 501 }; 502 503 sdio { 504 bt_host_wake_l: bt-host-wake-l { 505 rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; 506 }; 507 508 bt_reg_on_h: bt-reg-on-h { 509 /* external pullup to VCC1V8_PMUPLL */ 510 rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; 511 }; 512 513 bt_wake_l: bt-wake-l { 514 rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 515 }; 516 517 wifi_reg_on_h: wifi-reg_on-h { 518 rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; 519 }; 520 }; 521 522 wifi { 523 wifi_host_wake_l: wifi-host-wake-l { 524 rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; 525 }; 526 }; 527 528 usb-typec { 529 vcc5v0_typec_en: vcc5v0_typec_en { 530 rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; 531 }; 532 }; 533 534 usb2 { 535 host_vbus_drv: host-vbus-drv { 536 rockchip,pins = 537 <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 538 }; 539 }; 540}; 541 542&pwm0 { 543 status = "okay"; 544}; 545 546&pwm2 { 547 status = "okay"; 548 pinctrl-0 = <&pwm2_pin_pull_down>; 549}; 550 551&saradc { 552 vref-supply = <&vcc1v8_s0>; 553 status = "okay"; 554}; 555 556&sdmmc { 557 clock-frequency = <150000000>; 558 clock-freq-min-max = <200000 150000000>; 559 supports-sd; 560 bus-width = <4>; 561 cap-mmc-highspeed; 562 cap-sd-highspeed; 563 disable-wp; 564 vqmmc-supply = <&vcc_sd>; 565 pinctrl-names = "default"; 566 pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; 567 card-detect-delay = <800>; 568 status = "okay"; 569}; 570 571&sdhci { 572 bus-width = <8>; 573 mmc-hs400-1_8v; 574 mmc-hs400-enhanced-strobe; 575 supports-emmc; 576 non-removable; 577 keep-power-in-suspend; 578 status = "okay"; 579}; 580 581&sdio0 { 582 bus-width = <4>; 583 clock-frequency = <50000000>; 584 cap-sdio-irq; 585 cap-sd-highspeed; 586 keep-power-in-suspend; 587 mmc-pwrseq = <&sdio_pwrseq>; 588 non-removable; 589 pinctrl-names = "default"; 590 pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; 591 sd-uhs-sdr104; 592 #address-cells = <1>; 593 #size-cells = <0>; 594 status = "okay"; 595 596 brcmf: wifi@1 { 597 compatible = "brcm,bcm4329-fmac"; 598 reg = <1>; 599 interrupt-parent = <&gpio0>; 600 interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>; 601 interrupt-names = "host-wake"; 602 pinctrl-names = "default"; 603 pinctrl-0 = <&wifi_host_wake_l>; 604 }; 605}; 606 607&spdif { 608 status = "okay"; 609 pinctrl-0 = <&spdif_bus_1>; 610 #sound-dai-cells = <0>; 611}; 612 613&spi1 { 614 status = "okay"; 615 max-freq = <10000000>; 616 617 flash@0 { 618 compatible = "jedec,spi-nor"; 619 #address-cells = <1>; 620 #size-cells = <1>; 621 reg = <0>; 622 spi-max-frequency = <10000000>; 623 }; 624}; 625 626&tcphy0 { 627 status = "okay"; 628}; 629 630&tcphy1 { 631 status = "okay"; 632}; 633 634&tsadc { 635 /* tshut mode 0:CRU 1:GPIO */ 636 rockchip,hw-tshut-mode = <1>; 637 /* tshut polarity 0:LOW 1:HIGH */ 638 rockchip,hw-tshut-polarity = <1>; 639 rockchip,hw-tshut-temp = <110000>; 640 status = "okay"; 641}; 642 643&u2phy0 { 644 status = "okay"; 645 646 u2phy0_host: host-port { 647 phy-supply = <&vcc5v0_typec>; 648 status = "okay"; 649 }; 650 651 u2phy0_otg: otg-port { 652 status = "okay"; 653 }; 654}; 655 656&u2phy1 { 657 status = "okay"; 658 659 u2phy1_host: host-port { 660 phy-supply = <&vcc5v0_host>; 661 status = "okay"; 662 }; 663 664 u2phy1_otg: otg-port { 665 status = "okay"; 666 }; 667}; 668 669&uart0 { 670 pinctrl-names = "default"; 671 pinctrl-0 = <&uart0_xfer &uart0_rts &uart0_cts>; 672 status = "okay"; 673 674 bluetooth { 675 compatible = "brcm,bcm43438-bt"; 676 clocks = <&rk808 1>; 677 clock-names = "ext_clock"; 678 device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>; 679 host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; 680 shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; 681 max-speed = <4000000>; 682 pinctrl-names = "default"; 683 pinctrl-0 = <&bt_reg_on_h &bt_host_wake_l &bt_wake_l>; 684 vbat-supply = <&vcc3v3_sys>; 685 vddio-supply = <&vcc_1v8>; 686 }; 687}; 688 689&uart2 { 690 status = "okay"; 691}; 692 693&usb_host0_ehci { 694 status = "okay"; 695}; 696 697&usb_host0_ohci { 698 status = "okay"; 699}; 700 701&usb_host1_ehci { 702 status = "okay"; 703}; 704 705&usb_host1_ohci { 706 status = "okay"; 707}; 708 709&usbdrd3_0 { 710 status = "okay"; 711}; 712 713&usbdrd_dwc3_0 { 714 status = "okay"; 715 dr_mode = "host"; 716}; 717 718&usbdrd3_1 { 719 status = "okay"; 720}; 721 722&usbdrd_dwc3_1 { 723 status = "okay"; 724 dr_mode = "host"; 725}; 726 727&vopb { 728 status = "okay"; 729}; 730 731&vopb_mmu { 732 status = "okay"; 733}; 734