Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions arch/arm64/boot/dts/rockchip/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3562-test2-ddr4-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3562-toybrick-android.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3562-toybrick-linux.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3562j-core-ddr4-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-box-X88PRO-npu.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-box-demo-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-evb-mipitest-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-evb1-ddr4-v10.dtb
Expand Down
341 changes: 341 additions & 0 deletions arch/arm64/boot/dts/rockchip/rk3566-box-X88PRO-npu.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,341 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Device Tree Source for the X88 PRO 20 TV Box / X88PRO-RK3566-4D32-V2.1 / RUPA TV Box (Rockchip RK3566)
*
* Reconstructed and adapted from the vendor Android DTB for use with
* the Rockchip 6.1 vendor kernel and Armbian specifically for NPU/RKNN support.
*
* Hardware working:
* - SoC: RK3566
* - GPU: Mali-G52
* - NPU: RKNPU (1 TOPS)
* - Ethernet: Gigabit Ethernet
* - Memory: 4 GiB DDR4
*
* Copyright (C) 2026 Evgenii Abdrazakov
*/

/dts-v1/;

#include "rk3566-box.dtsi"

/ {
model = "X88 PRO 20 RK3566 TV Box";
compatible = "x88pro20,rk3566-box", "rockchip,rk3566";

aliases {
ethernet0 = &gmac1;
mmc0 = &sdmmc0;
mmc1 = &sdmmc1;
mmc2 = &sdhci;
};

chosen {
stdout-path = "serial2:1500000n8";
};

ir-receiver {
compatible = "gpio-ir-receiver";
gpios = <&gpio4 RK_PC3 GPIO_ACTIVE_LOW>;
linux,rc-map-name = "rc-beelink-gs1";
pinctrl-names = "default";
pinctrl-0 = <&ir_receiver_pin>;
status = "okay";
};

leds {
compatible = "gpio-leds";

led-0 {
label = "x88pro20:blue:status";
gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
pinctrl-names = "default";
pinctrl-0 = <&led_status_enable_h>;
};
};

openvfd {
compatible = "open,vfd";
dev_name = "openvfd";
openvfd_chars = [04 00 01 02 03];
openvfd_display_type = <0x00010002>;
openvfd_dot_bits = [00 01 02 03 04 05 06];
openvfd_gpio_clk = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
openvfd_gpio_dat = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
openvfd_gpio_stb = <&gpio4 RK_PC6 GPIO_ACTIVE_LOW>;
status = "okay";
};

sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple";
clocks = <&pmucru CLK_RTC_32K>;
clock-names = "ext_clock";
pinctrl-names = "default";
pinctrl-0 = <&wifi_enable_h &wifi_32k>;
reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>;
status = "okay";
};

vcc5v0_host: vcc5v0-host-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_host_en>;
regulator-name = "vcc5v0_host";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_sys>;
};

vcc5v0_otg: vcc5v0-otg-regulator {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_otg_en>;
regulator-name = "vcc5v0_otg";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_sys>;
};
};

&gmac1 {
phy-mode = "rgmii";
clock_in_out = "input";
phy-supply = <&vcc_3v3>;

assigned-clocks = <&cru SCLK_GMAC1_RX_TX>,
<&cru SCLK_GMAC1>;
assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>,
<&gmac1_clkin>;

pinctrl-names = "default";
pinctrl-0 = <&gmac1m1_miim
&gmac1m1_tx_bus2
&gmac1m1_rx_bus2
&gmac1m1_rgmii_clk
&gmac1m1_rgmii_bus
&gmac1m1_clkinout>;

snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
snps,reset-delays-us = <0 20000 100000>;

tx_delay = <0x4f>;
rx_delay = <0x2d>;

phy-handle = <&rgmii_phy1>;
status = "okay";
};

&mdio1 {
rgmii_phy1: ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <1>;
};
};

&pmu_io_domains {
pmuio2-supply = <&vcc_3v3>;
vccio1-supply = <&vcc_3v3>;
vccio3-supply = <&vcc_3v3>;
vccio4-supply = <&vcc_1v8>;
vccio5-supply = <&vcc_3v3>;
vccio6-supply = <&vcc_1v8>;
vccio7-supply = <&vcc_3v3>;
status = "okay";
};

&rknpu {
/delete-property/ memory-region;
};

&rknpu_mmu {
status = "okay";
};

&sdhci {
bus-width = <8>;
max-frequency = <200000000>;
mmc-hs200-1_8v;
no-sd;
no-sdio;
non-removable;
status = "okay";
};

&sdmmc0 {
bus-width = <4>;
cap-sd-highspeed;
cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
disable-wp;
max-frequency = <150000000>;
no-mmc;
no-sdio;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc0_bus4
&sdmmc0_clk
&sdmmc0_cmd>;
vmmc-supply = <&vcc_3v3>;
status = "okay";
};

&sdmmc1 {
#address-cells = <1>;
#size-cells = <0>;

bus-width = <4>;
cap-sd-highspeed;
cap-sdio-irq;
keep-power-in-suspend;
max-frequency = <150000000>;
mmc-pwrseq = <&sdio_pwrseq>;
non-removable;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
sd-uhs-sdr104;
vmmc-supply = <&vcc_3v3>;
vqmmc-supply = <&vcc_1v8>;
status = "okay";

wifi@1 {
compatible = "realtek,rtl8821cs";
reg = <1>;
Comment thread
coderabbitai[bot] marked this conversation as resolved.
interrupt-parent = <&gpio2>;
interrupts = <RK_PB2 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "host-wake";
pinctrl-names = "default";
pinctrl-0 = <&wifi_host_wake_irq>;
};
};

&uart1 {
dma-names = "tx", "rx";
pinctrl-names = "default";
pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>;
uart-has-rtscts;
status = "okay";

bluetooth {
compatible = "realtek,rtl8821cs-bt";
clocks = <&pmucru CLK_RTC_32K>;
clock-names = "txco";
device-wakeup-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>;
host-wakeup-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>;
shutdown-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>;
vbat-supply = <&vcc3v3_sys>;
vddio-supply = <&vcc_1v8>;
};
};

&u2phy0_host {
phy-supply = <&vcc5v0_host>;
status = "okay";
};

&u2phy0_otg {
phy-supply = <&vcc5v0_otg>;
status = "okay";
};

&u2phy1_host {
phy-supply = <&vcc5v0_host>;
status = "disabled";
};

&u2phy1_otg {
phy-supply = <&vcc5v0_host>;
status = "okay";
};

&usb2phy1 {
status = "okay";
};

&usb_host0_ehci {
status = "okay";
};

&usb_host0_ohci {
status = "okay";
};

&usb_host1_ehci {
status = "disabled";
};

&usb_host1_ohci {
status = "disabled";
};

&usbdrd_dwc3 {
dr_mode = "host";
phys = <&u2phy0_otg>;
phy-names = "usb2-phy";
maximum-speed = "high-speed";
snps,dis_u2_susphy_quirk;
status = "okay";
};

&combphy1_usq {
assigned-clocks = <&pmucru CLK_PCIEPHY1_REF>;
assigned-clock-rates = <100000000>;
status = "okay";
};

&pinctrl {
bt {
bt_enable_h: bt-enable-h {
rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
};

bt_host_wake_l: bt-host-wake-l {
rockchip,pins = <2 RK_PC0 RK_FUNC_GPIO &pcfg_pull_down>;
};

bt_wake_l: bt-wake-l {
rockchip,pins = <2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
};
};

ir-receiver {
ir_receiver_pin: ir-receiver-pin {
rockchip,pins = <4 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};

leds {
led_status_enable_h: led-status-enable-h {
rockchip,pins = <0 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};

sdio-pwrseq {
wifi_enable_h: wifi-enable-h {
rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
};

wifi_32k: wifi-32k {
rockchip,pins = <2 RK_PC6 1 &pcfg_pull_none>;
};

wifi_host_wake_irq: wifi-host-wake-irq {
rockchip,pins = <2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};

usb {
vcc5v0_host_en: vcc5v0-host-en {
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
};

vcc5v0_otg_en: vcc5v0-otg-en {
rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
Loading