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