board: rockchip: add support for Qnap TS433 devices

The Qnap TS433 is a 4-bay NAS based around the RK3568.

Two SATA bays are connected to the RK3568's own SATA controllers while
the other two are connected to a JMicron SATA controller living on the
PCIe bus.

It provides one 2.5Gb and one 1Gb ethernet port as well as 3 usb ports.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
Heiko Stuebner 2024-10-28 20:00:34 +01:00 committed by Kever Yang
parent 373a336e2f
commit d3cacb79e7
10 changed files with 239 additions and 0 deletions

View file

@ -0,0 +1,6 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2024 Heiko Stuebner <heiko@sntech.de>
*/
#include "rk356x-u-boot.dtsi"

View file

@ -32,6 +32,19 @@ config TARGET_POWKIDDY_X55_RK3566
help
Powkiddy X55 handheld gaming console with an RK3566 SoC.
config TARGET_QNAP_TS433_RK3568
bool "QNAP-TS433"
help
Qnap TS433 4-bay NAS with a RK3568 SoC.
It provides the following featureset:
* 4GB LPDDR4
* 4GB eMMC
* 2 SATA ports connected to two RK3568's SATA controllers
* 2 SATA ports connected to a JMicron JMB58x AHCI SATA controller
* 1 1G network controller
* 1 2.5G Realtek RTL8125 network controller
config TARGET_QUARTZ64_RK3566
bool "Pine64 Quartz64"
help
@ -70,6 +83,7 @@ source "board/hardkernel/odroid_m1/Kconfig"
source "board/hardkernel/odroid_m1s/Kconfig"
source "board/pine64/quartz64_rk3566/Kconfig"
source "board/powkiddy/x55/Kconfig"
source "board/qnap/ts433/Kconfig"
source "board/radxa/zero3-rk3566/Kconfig"
source "board/xunlong/orangepi-3b-rk3566/Kconfig"

12
board/qnap/ts433/Kconfig Normal file
View file

@ -0,0 +1,12 @@
if TARGET_QNAP_TS433_RK3568
config SYS_BOARD
default "qnap_ts433"
config SYS_VENDOR
default "qnap"
config SYS_CONFIG_NAME
default "qnap_ts433"
endif

View file

@ -0,0 +1,8 @@
QNAP-TS433
M: Heiko Stuebner <heiko@sntech.de>
S: Maintained
F: board/qnap/ts433/
F: doc/board/qnap/
F: include/configs/qnap_ts433.h
F: configs/qnap-ts433-rk3568_defconfig
F: arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi

View file

@ -0,0 +1,87 @@
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-ts433"
CONFIG_ROCKCHIP_RK3568=y
CONFIG_SPL_SERIAL=y
CONFIG_TARGET_QNAP_TS433_RK3568=y
CONFIG_DEBUG_UART_BASE=0xFE660000
CONFIG_DEBUG_UART_CLOCK=24000000
CONFIG_SYS_LOAD_ADDR=0xc00800
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-ts433.dtb"
# CONFIG_DISPLAY_CPUINFO is not set
CONFIG_DISPLAY_BOARDINFO_LATE=y
CONFIG_SPL_MAX_SIZE=0x40000
CONFIG_SPL_PAD_TO=0x7f8000
# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
CONFIG_SPL_ATF=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_ROCKUSB=y
CONFIG_CMD_USB_MASS_STORAGE=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_SYS_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_SUPPORT_EMMC_RPMB=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_ROCKCHIP=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_PCIE_DW_ROCKCHIP=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

View file

@ -43,6 +43,7 @@ Board-specific doc
phytec/index
purism/index
qualcomm/index
qnap/index
renesas/index
rockchip/index
samsung/index

9
doc/board/qnap/index.rst Normal file
View file

@ -0,0 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0+
Qnap
====
.. toctree::
:maxdepth: 2
ts433.rst

91
doc/board/qnap/ts433.rst Normal file
View file

@ -0,0 +1,91 @@
.. SPDX-License-Identifier: GPL-2.0+
U-Boot for Qnap TS433 Devices
=================================
This allows U-Boot to boot the Qnap TS433 NAS
Preparing the serial
--------------------
Qnap devices run their serial console with a 115200 baudrate. As the
binary DDR-init and maskrom-downloader expect a 1500000 rate, it is
necessary to adapt the binaries if their output is needed.
This can be done with a binary provided in the rkbin repository.
First the ddrbin_param.txt in the rkbin repo needs to be modified:
.. code-block:: bash
diff --git a/tools/ddrbin_param.txt b/tools/ddrbin_param.txt
index 0dfdd318..82ade7e7 100644
--- a/tools/ddrbin_param.txt
+++ b/tools/ddrbin_param.txt
@@ -11,7 +11,7 @@ lp5_freq=
uart id=
uart iomux=
-uart baudrate=
+uart baudrate=115200
sr_idle=
pd_idle=
And after that the ddrbin_tool binary can be used to modify apply this
modification and also a new maskrom downloader can be build:
.. code-block:: bash
$ tools/ddrbin_tool rk3568 tools/ddrbin_param.txt bin/rk35/rk3568_ddr_1560MHz_v1.21.bin
$ tools/boot_merger RKBOOT/RK3568MINIALL.ini
Building U-Boot
---------------
.. code-block:: bash
$ export CROSS_COMPILE=aarch64-linux-gnu-
$ export BL31=../rkbin/bin/rk35/rk3568_bl31_v1.34.elf
$ export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3568_ddr_1056MHz_v1.13.bin
$ make qnap-ts433-rk3568_defconfig
$ make
This will build ``u-boot-rockchip.bin`` which can be written to the
on-board eMMC.
Image installation
------------------
The Qnap thankfully provides an easily accessible serial header as well as
a very user-friendly jumper-header to bring the device into maskrom mode.
To access both, the drive trays need to be removed. Looking at the board,
through the upper cutout of the metal frame the white 4-port serial-header
can be seen next to a barcode sticker. It's pinout is as follows:
.. code-block:: none
,_ _.
|1234| 1=TX 2=VCC
`----' 3=RX 4=GND
Directly below it, the mentioned 2-pin jumper header can be seen.
To write your u-boot to the device, it needs to be powered off first. Then
a jumper or suitable cable needs to be used to connect the two pins of the
maskrom header. Turning on the device now will start it in maskrom mode.
It is important that the jumper gets removed after that stop and before
actually trying to write to the emmc.
The front usb-port needs to be connected to the host with an USB-A-to-A
cable to allow flashing.
The flashing itself is done via rkdeveloptool, which can be found for
example as package of that name in Debian-based distributions:
.. code-block:: bash
$ rkdeveloptool db rk356x_spl_loader_v1.21.113.bin
$ rkdeveloptool wl 64 u-boot-rockchip.bin

View file

@ -119,6 +119,7 @@ List of mainline supported Rockchip boards:
- FriendlyElec NanoPi R5S (nanopi-r5s-rk3568)
- Generic RK3566/RK3568 (generic-rk3568)
- Hardkernel ODROID-M1 (odroid-m1-rk3568)
- QNAP TS-433 (qnap-ts433-rk3568)
- Radxa E25 Carrier Board (radxa-e25-rk3568)
- Radxa ROCK 3A (rock-3a-rk3568)
- Radxa ROCK 3B (rock-3b-rk3568)

View file

@ -0,0 +1,10 @@
/* SPDX-License-Identifier: GPL-2.0+ */
#ifndef __QNAP_TS433_H
#define __QNAP_TS433_H
#define ROCKCHIP_DEVICE_SETTINGS
#include <configs/rk3568_common.h>
#endif