Message ID | 20241028190034.143122-19-heiko@sntech.de |
---|---|
State | New |
Delegated to: | Kever Yang |
Headers | show |
Series | Support for rk3568 based QNAP TS433 NAS | expand |
On 2024/10/29 03:00, Heiko Stuebner wrote: > 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> Thanks, - Kever > --- > arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi | 6 ++ > arch/arm/mach-rockchip/rk3568/Kconfig | 14 ++++ > board/qnap/ts433/Kconfig | 12 +++ > board/qnap/ts433/MAINTAINERS | 8 ++ > configs/qnap-ts433-rk3568_defconfig | 87 +++++++++++++++++++++ > doc/board/index.rst | 1 + > doc/board/qnap/index.rst | 9 +++ > doc/board/qnap/ts433.rst | 91 ++++++++++++++++++++++ > doc/board/rockchip/rockchip.rst | 1 + > include/configs/qnap_ts433.h | 10 +++ > 10 files changed, 239 insertions(+) > create mode 100644 arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi > create mode 100644 board/qnap/ts433/Kconfig > create mode 100644 board/qnap/ts433/MAINTAINERS > create mode 100644 configs/qnap-ts433-rk3568_defconfig > create mode 100644 doc/board/qnap/index.rst > create mode 100644 doc/board/qnap/ts433.rst > create mode 100644 include/configs/qnap_ts433.h > > diff --git a/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi b/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi > new file mode 100644 > index 00000000000..19acbceb468 > --- /dev/null > +++ b/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi > @@ -0,0 +1,6 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * (C) Copyright 2024 Heiko Stuebner <heiko@sntech.de> > + */ > + > +#include "rk356x-u-boot.dtsi" > diff --git a/arch/arm/mach-rockchip/rk3568/Kconfig b/arch/arm/mach-rockchip/rk3568/Kconfig > index e646f714c92..ce327ed6f9e 100644 > --- a/arch/arm/mach-rockchip/rk3568/Kconfig > +++ b/arch/arm/mach-rockchip/rk3568/Kconfig > @@ -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" > > diff --git a/board/qnap/ts433/Kconfig b/board/qnap/ts433/Kconfig > new file mode 100644 > index 00000000000..b00e1f9f2ef > --- /dev/null > +++ b/board/qnap/ts433/Kconfig > @@ -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 > diff --git a/board/qnap/ts433/MAINTAINERS b/board/qnap/ts433/MAINTAINERS > new file mode 100644 > index 00000000000..c2b31ad9794 > --- /dev/null > +++ b/board/qnap/ts433/MAINTAINERS > @@ -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 > diff --git a/configs/qnap-ts433-rk3568_defconfig b/configs/qnap-ts433-rk3568_defconfig > new file mode 100644 > index 00000000000..840da7f3759 > --- /dev/null > +++ b/configs/qnap-ts433-rk3568_defconfig > @@ -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 > diff --git a/doc/board/index.rst b/doc/board/index.rst > index 3fb7c84f10c..fe775b1b05d 100644 > --- a/doc/board/index.rst > +++ b/doc/board/index.rst > @@ -42,6 +42,7 @@ Board-specific doc > phytec/index > purism/index > qualcomm/index > + qnap/index > renesas/index > rockchip/index > samsung/index > diff --git a/doc/board/qnap/index.rst b/doc/board/qnap/index.rst > new file mode 100644 > index 00000000000..652ea11a056 > --- /dev/null > +++ b/doc/board/qnap/index.rst > @@ -0,0 +1,9 @@ > +.. SPDX-License-Identifier: GPL-2.0+ > + > +Qnap > +==== > + > +.. toctree:: > + :maxdepth: 2 > + > + ts433.rst > diff --git a/doc/board/qnap/ts433.rst b/doc/board/qnap/ts433.rst > new file mode 100644 > index 00000000000..5c7fd314b7a > --- /dev/null > +++ b/doc/board/qnap/ts433.rst > @@ -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:: bash > + > + ,_ _. > + |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 > diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst > index 7b11a2e0a35..0783603ec50 100644 > --- a/doc/board/rockchip/rockchip.rst > +++ b/doc/board/rockchip/rockchip.rst > @@ -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) > diff --git a/include/configs/qnap_ts433.h b/include/configs/qnap_ts433.h > new file mode 100644 > index 00000000000..aee4546bf07 > --- /dev/null > +++ b/include/configs/qnap_ts433.h > @@ -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
Hi Heiko, Again, I got a warning/error from CI system for the doc :( https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/jobs/941781 /builds/u-boot/custodians/u-boot-rockchip/doc/board/qnap/ts433.rst:66: WARNING: Lexing literal_block ",_ _.\n|1234| 1=TX 2=VCC\n`----' 3=RX 4=GND" as "bash" resulted in an error at token: "'". Retrying in relaxed mode. [misc.highlighting_failure] Maybe you can try with below command in your environment? $ make htmldocs KDOC_WERROR=1 I didn't success to run this on my computer due to lots of modules missing one after another. Thanks, - Kever On 2024/10/29 03:00, Heiko Stuebner wrote: > 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> > --- > arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi | 6 ++ > arch/arm/mach-rockchip/rk3568/Kconfig | 14 ++++ > board/qnap/ts433/Kconfig | 12 +++ > board/qnap/ts433/MAINTAINERS | 8 ++ > configs/qnap-ts433-rk3568_defconfig | 87 +++++++++++++++++++++ > doc/board/index.rst | 1 + > doc/board/qnap/index.rst | 9 +++ > doc/board/qnap/ts433.rst | 91 ++++++++++++++++++++++ > doc/board/rockchip/rockchip.rst | 1 + > include/configs/qnap_ts433.h | 10 +++ > 10 files changed, 239 insertions(+) > create mode 100644 arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi > create mode 100644 board/qnap/ts433/Kconfig > create mode 100644 board/qnap/ts433/MAINTAINERS > create mode 100644 configs/qnap-ts433-rk3568_defconfig > create mode 100644 doc/board/qnap/index.rst > create mode 100644 doc/board/qnap/ts433.rst > create mode 100644 include/configs/qnap_ts433.h > > diff --git a/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi b/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi > new file mode 100644 > index 00000000000..19acbceb468 > --- /dev/null > +++ b/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi > @@ -0,0 +1,6 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * (C) Copyright 2024 Heiko Stuebner <heiko@sntech.de> > + */ > + > +#include "rk356x-u-boot.dtsi" > diff --git a/arch/arm/mach-rockchip/rk3568/Kconfig b/arch/arm/mach-rockchip/rk3568/Kconfig > index e646f714c92..ce327ed6f9e 100644 > --- a/arch/arm/mach-rockchip/rk3568/Kconfig > +++ b/arch/arm/mach-rockchip/rk3568/Kconfig > @@ -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" > > diff --git a/board/qnap/ts433/Kconfig b/board/qnap/ts433/Kconfig > new file mode 100644 > index 00000000000..b00e1f9f2ef > --- /dev/null > +++ b/board/qnap/ts433/Kconfig > @@ -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 > diff --git a/board/qnap/ts433/MAINTAINERS b/board/qnap/ts433/MAINTAINERS > new file mode 100644 > index 00000000000..c2b31ad9794 > --- /dev/null > +++ b/board/qnap/ts433/MAINTAINERS > @@ -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 > diff --git a/configs/qnap-ts433-rk3568_defconfig b/configs/qnap-ts433-rk3568_defconfig > new file mode 100644 > index 00000000000..840da7f3759 > --- /dev/null > +++ b/configs/qnap-ts433-rk3568_defconfig > @@ -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 > diff --git a/doc/board/index.rst b/doc/board/index.rst > index 3fb7c84f10c..fe775b1b05d 100644 > --- a/doc/board/index.rst > +++ b/doc/board/index.rst > @@ -42,6 +42,7 @@ Board-specific doc > phytec/index > purism/index > qualcomm/index > + qnap/index > renesas/index > rockchip/index > samsung/index > diff --git a/doc/board/qnap/index.rst b/doc/board/qnap/index.rst > new file mode 100644 > index 00000000000..652ea11a056 > --- /dev/null > +++ b/doc/board/qnap/index.rst > @@ -0,0 +1,9 @@ > +.. SPDX-License-Identifier: GPL-2.0+ > + > +Qnap > +==== > + > +.. toctree:: > + :maxdepth: 2 > + > + ts433.rst > diff --git a/doc/board/qnap/ts433.rst b/doc/board/qnap/ts433.rst > new file mode 100644 > index 00000000000..5c7fd314b7a > --- /dev/null > +++ b/doc/board/qnap/ts433.rst > @@ -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:: bash > + > + ,_ _. > + |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 > diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst > index 7b11a2e0a35..0783603ec50 100644 > --- a/doc/board/rockchip/rockchip.rst > +++ b/doc/board/rockchip/rockchip.rst > @@ -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) > diff --git a/include/configs/qnap_ts433.h b/include/configs/qnap_ts433.h > new file mode 100644 > index 00000000000..aee4546bf07 > --- /dev/null > +++ b/include/configs/qnap_ts433.h > @@ -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
diff --git a/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi b/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi new file mode 100644 index 00000000000..19acbceb468 --- /dev/null +++ b/arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2024 Heiko Stuebner <heiko@sntech.de> + */ + +#include "rk356x-u-boot.dtsi" diff --git a/arch/arm/mach-rockchip/rk3568/Kconfig b/arch/arm/mach-rockchip/rk3568/Kconfig index e646f714c92..ce327ed6f9e 100644 --- a/arch/arm/mach-rockchip/rk3568/Kconfig +++ b/arch/arm/mach-rockchip/rk3568/Kconfig @@ -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" diff --git a/board/qnap/ts433/Kconfig b/board/qnap/ts433/Kconfig new file mode 100644 index 00000000000..b00e1f9f2ef --- /dev/null +++ b/board/qnap/ts433/Kconfig @@ -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 diff --git a/board/qnap/ts433/MAINTAINERS b/board/qnap/ts433/MAINTAINERS new file mode 100644 index 00000000000..c2b31ad9794 --- /dev/null +++ b/board/qnap/ts433/MAINTAINERS @@ -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 diff --git a/configs/qnap-ts433-rk3568_defconfig b/configs/qnap-ts433-rk3568_defconfig new file mode 100644 index 00000000000..840da7f3759 --- /dev/null +++ b/configs/qnap-ts433-rk3568_defconfig @@ -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 diff --git a/doc/board/index.rst b/doc/board/index.rst index 3fb7c84f10c..fe775b1b05d 100644 --- a/doc/board/index.rst +++ b/doc/board/index.rst @@ -42,6 +42,7 @@ Board-specific doc phytec/index purism/index qualcomm/index + qnap/index renesas/index rockchip/index samsung/index diff --git a/doc/board/qnap/index.rst b/doc/board/qnap/index.rst new file mode 100644 index 00000000000..652ea11a056 --- /dev/null +++ b/doc/board/qnap/index.rst @@ -0,0 +1,9 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Qnap +==== + +.. toctree:: + :maxdepth: 2 + + ts433.rst diff --git a/doc/board/qnap/ts433.rst b/doc/board/qnap/ts433.rst new file mode 100644 index 00000000000..5c7fd314b7a --- /dev/null +++ b/doc/board/qnap/ts433.rst @@ -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:: bash + + ,_ _. + |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 diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst index 7b11a2e0a35..0783603ec50 100644 --- a/doc/board/rockchip/rockchip.rst +++ b/doc/board/rockchip/rockchip.rst @@ -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) diff --git a/include/configs/qnap_ts433.h b/include/configs/qnap_ts433.h new file mode 100644 index 00000000000..aee4546bf07 --- /dev/null +++ b/include/configs/qnap_ts433.h @@ -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
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> --- arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi | 6 ++ arch/arm/mach-rockchip/rk3568/Kconfig | 14 ++++ board/qnap/ts433/Kconfig | 12 +++ board/qnap/ts433/MAINTAINERS | 8 ++ configs/qnap-ts433-rk3568_defconfig | 87 +++++++++++++++++++++ doc/board/index.rst | 1 + doc/board/qnap/index.rst | 9 +++ doc/board/qnap/ts433.rst | 91 ++++++++++++++++++++++ doc/board/rockchip/rockchip.rst | 1 + include/configs/qnap_ts433.h | 10 +++ 10 files changed, 239 insertions(+) create mode 100644 arch/arm/dts/rk3568-qnap-ts433-u-boot.dtsi create mode 100644 board/qnap/ts433/Kconfig create mode 100644 board/qnap/ts433/MAINTAINERS create mode 100644 configs/qnap-ts433-rk3568_defconfig create mode 100644 doc/board/qnap/index.rst create mode 100644 doc/board/qnap/ts433.rst create mode 100644 include/configs/qnap_ts433.h