[PATCH 12/12] rockchip: board: qnap-tsx33: add support for Qnap TS233 devices

Heiko Stuebner heiko at sntech.de
Mon Jan 5 20:47:23 CET 2026


The TS233 shares the same basic peripheral setup for
SoC, DDR, EMMC, 3 USB-ports, 1G network interface, SoC-SATA ports,
serial and maskrom access.

It could just share the same U-Boot binary with the TS433, and the type-
selection would take care of loading the right DTB for the operating
system. But right now we can't select the correct DTB for inside U-Boot
itself.

So for the time being, add separate defconfig and documentation for it.

Signed-off-by: Heiko Stuebner <heiko at sntech.de>
---
 arch/arm/dts/rk3568-qnap-ts233-u-boot.dtsi |  6 ++
 board/qnap/tsx33_rk356x/MAINTAINERS        |  2 +
 board/qnap/tsx33_rk356x/board.c            |  4 +-
 configs/qnap-ts233-rk3568_defconfig        | 85 ++++++++++++++++++++++
 doc/board/qnap/ts233.rst                   | 37 ++++++++++
 5 files changed, 132 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/dts/rk3568-qnap-ts233-u-boot.dtsi
 create mode 100644 configs/qnap-ts233-rk3568_defconfig
 create mode 100644 doc/board/qnap/ts233.rst

diff --git a/arch/arm/dts/rk3568-qnap-ts233-u-boot.dtsi b/arch/arm/dts/rk3568-qnap-ts233-u-boot.dtsi
new file mode 100644
index 00000000000..19acbceb468
--- /dev/null
+++ b/arch/arm/dts/rk3568-qnap-ts233-u-boot.dtsi
@@ -0,0 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2024 Heiko Stuebner <heiko at sntech.de>
+ */
+
+#include "rk356x-u-boot.dtsi"
diff --git a/board/qnap/tsx33_rk356x/MAINTAINERS b/board/qnap/tsx33_rk356x/MAINTAINERS
index b91274c7b43..af9bf9fe0c5 100644
--- a/board/qnap/tsx33_rk356x/MAINTAINERS
+++ b/board/qnap/tsx33_rk356x/MAINTAINERS
@@ -4,5 +4,7 @@ S:	Maintained
 F:	board/qnap/tsx33_rk356x/
 F:	doc/board/qnap/
 F:	include/configs/qnap_tsx33.h
+F:	configs/qnap-ts233-rk3568_defconfig
 F:	configs/qnap-ts433-rk3568_defconfig
+F:	arch/arm/dts/rk3568-qnap-ts233-u-boot.dtsi
 F:	arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi
diff --git a/board/qnap/tsx33_rk356x/board.c b/board/qnap/tsx33_rk356x/board.c
index ea43d12942d..39e20e2ae95 100644
--- a/board/qnap/tsx33_rk356x/board.c
+++ b/board/qnap/tsx33_rk356x/board.c
@@ -85,7 +85,7 @@ static const struct tsx33_model tsx33_models[TSX33_MODELS] = {
 		"Q0AM0",
 		11,
 		"TS233",
-		NULL, /* not yet supported */
+		DTB_DIR "rk3568-qnap-ts233.dtb",
 	},
 	[Q0AJ0_Q0AM0_11_10] = {
 		"Q0AJ0",
@@ -93,7 +93,7 @@ static const struct tsx33_model tsx33_models[TSX33_MODELS] = {
 		"Q0AM0",
 		10,
 		"TS233",
-		NULL, /* not yet supported */
+		DTB_DIR "rk3568-qnap-ts233.dtb",
 	},
 	[Q0B20_Q0AW0_12_10] = {
 		"Q0B20",
diff --git a/configs/qnap-ts233-rk3568_defconfig b/configs/qnap-ts233-rk3568_defconfig
new file mode 100644
index 00000000000..53ac5b25bd0
--- /dev/null
+++ b/configs/qnap-ts233-rk3568_defconfig
@@ -0,0 +1,85 @@
+CONFIG_ARM=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_COUNTER_FREQUENCY=24000000
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3568-qnap-ts233"
+CONFIG_ROCKCHIP_RK3568=y
+CONFIG_SPL_SERIAL=y
+CONFIG_TARGET_QNAP_TSX33_RK356X=y
+CONFIG_SYS_LOAD_ADDR=0xc00800
+CONFIG_DEBUG_UART_BASE=0xFE660000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_PCI=y
+CONFIG_DEBUG_UART=y
+CONFIG_AHCI=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
+CONFIG_SPL_FIT_SIGNATURE=y
+CONFIG_SPL_LOAD_FIT=y
+CONFIG_LEGACY_IMAGE_FORMAT=y
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-qnap-ts233.dtb"
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_DISPLAY_BOARDINFO_LATE=y
+CONFIG_SPL_MAX_SIZE=0x40000
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+CONFIG_SPL_ATF=y
+CONFIG_BOARD_TYPES=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PCI=y
+CONFIG_CMD_SATA=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_PMIC=y
+CONFIG_CMD_REGULATOR=y
+# CONFIG_SPL_DOS_PARTITION is not set
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_OF_LIVE=y
+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+CONFIG_ENV_RELOC_GD_ENV_ADDR=y
+CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SPL_REGMAP=y
+CONFIG_SPL_SYSCON=y
+CONFIG_AHCI_PCI=y
+CONFIG_DWC_AHCI=y
+CONFIG_SPL_CLK=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_MISC=y
+CONFIG_I2C_EEPROM=y
+CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_SDMA=y
+CONFIG_MMC_SDHCI_ROCKCHIP=y
+CONFIG_DWC_ETH_QOS=y
+CONFIG_DWC_ETH_QOS_ROCKCHIP=y
+CONFIG_RTL8169=y
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
+CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_PMIC_FAN53555=y
+CONFIG_PMIC_RK8XX=y
+CONFIG_REGULATOR_RK8XX=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_SPL_RAM=y
+CONFIG_SCSI=y
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_NS16550_MEM32=y
+CONFIG_SYSRESET=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_GENERIC=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_GENERIC=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_GENERIC=y
+CONFIG_ERRNO_STR=y
+# CONFIG_SPL_ATF_NO_PLATFORM_PARAM is not set
+CONFIG_OPTEE_LIB=y
diff --git a/doc/board/qnap/ts233.rst b/doc/board/qnap/ts233.rst
new file mode 100644
index 00000000000..b706d97afa0
--- /dev/null
+++ b/doc/board/qnap/ts233.rst
@@ -0,0 +1,37 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+U-Boot for Qnap TS233 Devices
+=============================
+
+This allows U-Boot to boot the Qnap TS233 NAS
+
+The device is similar to the TS433 in terms of its basic peripheral setup
+of SoC, DDR, EMMC, 3 USB-ports, 1G network interface, SoC-SATA ports,
+serial and maskrom access.
+
+Please follow the TS433 steps but with the following changes.
+
+Building U-Boot
+---------------
+
+The TS233 can just run the TS433 U-Boot binary, but if a separate binary
+should be build, the following command will do so:
+
+.. code-block:: bash
+
+    $ export CROSS_COMPILE=aarch64-linux-gnu-
+    $ export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3568_ddr_1560MHz_v1.23.bin
+    $ make qnap-ts233-rk3568_defconfig
+    $ make
+
+This will build ``u-boot-rockchip.bin`` which can be written to the
+on-board eMMC.
+
+Image installation
+------------------
+
+The serial port is located next to the CPU and labeled "SOC_UART", while
+the maskrom jumper header is located in the smaller cutout and
+labeled "MASKROM RECOVERY".
+
+The USB port to use is the one located in the front of the device.
-- 
2.47.2



More information about the U-Boot mailing list