CI: https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/pipelines/23280

- Add board:
        rk3328: FriendlyElec NanoPi R2S Plus
        rk3568: Qnap TS433
        rk3588: Cool Pi CM5 GenBook
- Move rk3399_force_power_on_reset to TPL for puma board;
This commit is contained in:
Tom Rini 2024-11-11 07:25:25 -06:00
commit fdcf06d58d
32 changed files with 1618 additions and 34 deletions

View file

@ -0,0 +1,3 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include "rk3328-nanopi-r2s-u-boot.dtsi"

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

@ -0,0 +1,20 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
#include "rk3588-u-boot.dtsi"
&fspim2_pins {
bootph-pre-ram;
bootph-some-ram;
};
&sfc {
flash@0 {
bootph-pre-ram;
bootph-some-ram;
};
};
/* USB A out */
&usb_host1_xhci {
snps,dis_u3_susphy_quirk;
};

View file

@ -169,15 +169,36 @@ void board_debug_uart_init(void)
} }
#endif #endif
#if defined(CONFIG_XPL_BUILD) && !defined(CONFIG_TPL_BUILD) #if defined(CONFIG_XPL_BUILD)
#if defined(CONFIG_TPL_BUILD)
static void rk3399_force_power_on_reset(void) static void rk3399_force_power_on_reset(void)
{ {
const struct rockchip_cru *cru = rockchip_get_cru();
ofnode node; ofnode node;
struct gpio_desc sysreset_gpio; struct gpio_desc sysreset_gpio;
if (!IS_ENABLED(CONFIG_SPL_GPIO)) { /*
* The RK3399 resets only 'almost all logic' (see also in the
* TRM "3.9.4 Global software reset"), when issuing a software
* reset. This may cause issues during boot-up for some
* configurations of the application software stack.
*
* To work around this, we test whether the last reset reason
* was a power-on reset and (if not) issue an overtemp-reset to
* reset the entire module.
*
* While this was previously fixed by modifying the various
* places that could generate a software reset (e.g. U-Boot's
* sysreset driver, the ATF or Linux), we now have it here to
* ensure that we no longer have to track this through the
* various components.
*/
if (cru->glb_rst_st == 0)
return;
if (!IS_ENABLED(CONFIG_TPL_GPIO)) {
debug("%s: trying to force a power-on reset but no GPIO " debug("%s: trying to force a power-on reset but no GPIO "
"support in SPL!\n", __func__); "support in TPL!\n", __func__);
return; return;
} }
@ -198,6 +219,11 @@ static void rk3399_force_power_on_reset(void)
dm_gpio_set_value(&sysreset_gpio, 1); dm_gpio_set_value(&sysreset_gpio, 1);
} }
void tpl_board_init(void)
{
rk3399_force_power_on_reset();
}
# else
void __weak led_setup(void) void __weak led_setup(void)
{ {
} }
@ -205,28 +231,6 @@ void __weak led_setup(void)
void spl_board_init(void) void spl_board_init(void)
{ {
led_setup(); led_setup();
if (IS_ENABLED(CONFIG_SPL_GPIO)) {
struct rockchip_cru *cru = rockchip_get_cru();
/*
* The RK3399 resets only 'almost all logic' (see also in the
* TRM "3.9.4 Global software reset"), when issuing a software
* reset. This may cause issues during boot-up for some
* configurations of the application software stack.
*
* To work around this, we test whether the last reset reason
* was a power-on reset and (if not) issue an overtemp-reset to
* reset the entire module.
*
* While this was previously fixed by modifying the various
* places that could generate a software reset (e.g. U-Boot's
* sysreset driver, the ATF or Linux), we now have it here to
* ensure that we no longer have to track this through the
* various components.
*/
if (cru->glb_rst_st != 0)
rk3399_force_power_on_reset();
}
} }
#endif #endif
#endif

View file

@ -32,6 +32,19 @@ config TARGET_POWKIDDY_X55_RK3566
help help
Powkiddy X55 handheld gaming console with an RK3566 SoC. 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 config TARGET_QUARTZ64_RK3566
bool "Pine64 Quartz64" bool "Pine64 Quartz64"
help help
@ -70,6 +83,7 @@ source "board/hardkernel/odroid_m1/Kconfig"
source "board/hardkernel/odroid_m1s/Kconfig" source "board/hardkernel/odroid_m1s/Kconfig"
source "board/pine64/quartz64_rk3566/Kconfig" source "board/pine64/quartz64_rk3566/Kconfig"
source "board/powkiddy/x55/Kconfig" source "board/powkiddy/x55/Kconfig"
source "board/qnap/ts433/Kconfig"
source "board/radxa/zero3-rk3566/Kconfig" source "board/radxa/zero3-rk3566/Kconfig"
source "board/xunlong/orangepi-3b-rk3566/Kconfig" source "board/xunlong/orangepi-3b-rk3566/Kconfig"

View file

@ -29,6 +29,24 @@ config TARGET_CM3588_NAS_RK3588
- 3.5mm Headphone out, 2.0mm PH-2A Mic in - 3.5mm Headphone out, 2.0mm PH-2A Mic in
- 5V Fan connector, PWM beeper, IR receiver, RTC battery connector - 5V Fan connector, PWM beeper, IR receiver, RTC battery connector
config TARGET_GENBOOK_CM5_RK3588
bool "Cool Pi CM5 GenBook"
select BOARD_LATE_INIT
help
GeenBook is a notebook based on Rockchip RK3588, and works as a carrier
board connect with CM5 SOM.
Specification:
- Rockchip RK3588
- LPDDR5X 8/32 GB
- eMMC 64 GB
- HDMI Type A out x 1
- USB 3.0 Host x 1
- USB-C 3.0 with DisplayPort AltMode
- PCIE M.2 E Key for RTL8852BE Wireless connection
- PCIE M.2 M Key for NVME connection
- eDP panel with 1920x1080
config TARGET_JAGUAR_RK3588 config TARGET_JAGUAR_RK3588
bool "Theobroma Systems SBC-RK3588-AMR (Jaguar)" bool "Theobroma Systems SBC-RK3588-AMR (Jaguar)"
select BOARD_LATE_INIT select BOARD_LATE_INIT
@ -367,6 +385,7 @@ config TEXT_BASE
default 0x00a00000 default 0x00a00000
source "board/armsom/sige7-rk3588/Kconfig" source "board/armsom/sige7-rk3588/Kconfig"
source "board/coolpi/genbook_cm5_rk3588/Kconfig"
source "board/edgeble/neural-compute-module-6/Kconfig" source "board/edgeble/neural-compute-module-6/Kconfig"
source "board/friendlyelec/cm3588-nas-rk3588/Kconfig" source "board/friendlyelec/cm3588-nas-rk3588/Kconfig"
source "board/friendlyelec/nanopc-t6-rk3588/Kconfig" source "board/friendlyelec/nanopc-t6-rk3588/Kconfig"

View file

@ -21,6 +21,10 @@
#include <timestamp.h> #include <timestamp.h>
#endif #endif
__weak void tpl_board_init(void)
{
}
void board_init_f(ulong dummy) void board_init_f(ulong dummy)
{ {
struct udevice *dev; struct udevice *dev;
@ -54,6 +58,8 @@ void board_init_f(ulong dummy)
if (IS_ENABLED(CONFIG_SYS_ARCH_TIMER)) if (IS_ENABLED(CONFIG_SYS_ARCH_TIMER))
timer_init(); timer_init();
tpl_board_init();
ret = uclass_get_device(UCLASS_RAM, 0, &dev); ret = uclass_get_device(UCLASS_RAM, 0, &dev);
if (ret) { if (ret) {
printf("DRAM init failed: %d\n", ret); printf("DRAM init failed: %d\n", ret);

View file

@ -0,0 +1,12 @@
if TARGET_GENBOOK_CM5_RK3588
config SYS_BOARD
default "genbook_cm5_rk3588"
config SYS_VENDOR
default "coolpi"
config SYS_CONFIG_NAME
default "genbook-cm5-rk3588"
endif

View file

@ -0,0 +1,7 @@
GENBOOK-CM5-RK3588
M: Andy Yan <andyshrk@163.com>
S: Maintained
F: board/coolpi/genbook-cm5-rk3588
F: include/configs/genbook-cm5-rk3588.h
F: configs/coolpi-cm5-genbook-rk3588_defconfig
F: arch/arm/dts/rk3588-coolpi-cm5-genbook-u-boot.dtsi

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

@ -28,6 +28,12 @@ F: configs/nanopi-r2s-rk3328_defconfig
F: arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi F: arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi
F: arch/arm/dts/rk3328-nanopi-r2s.dts F: arch/arm/dts/rk3328-nanopi-r2s.dts
NANOPI-R2S-PLUS-RK3328
M: Jonas Karlman <jonas@kwiboo.se>
S: Maintained
F: configs/nanopi-r2s-plus-rk3328_defconfig
F: arch/arm/dts/rk3328-nanopi-r2s-plus-u-boot.dtsi
ORANGEPI-R1-PLUS-RK3328 ORANGEPI-R1-PLUS-RK3328
M: Tianling Shen <cnsztl@gmail.com> M: Tianling Shen <cnsztl@gmail.com>
S: Maintained S: Maintained

View file

@ -0,0 +1,101 @@
CONFIG_ARM=y
CONFIG_SKIP_LOWLEVEL_INIT=y
CONFIG_COUNTER_FREQUENCY=24000000
CONFIG_ARCH_ROCKCHIP=y
CONFIG_SF_DEFAULT_SPEED=24000000
CONFIG_SF_DEFAULT_MODE=0x2000
CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3588-coolpi-cm5-genbook"
CONFIG_ROCKCHIP_RK3588=y
CONFIG_ROCKCHIP_SPI_IMAGE=y
CONFIG_SPL_SERIAL=y
CONFIG_TARGET_GENBOOK_CM5_RK3588=y
CONFIG_SYS_LOAD_ADDR=0xc00800
CONFIG_SF_DEFAULT_BUS=5
CONFIG_DEBUG_UART_BASE=0xFEB50000
CONFIG_DEBUG_UART_CLOCK=24000000
CONFIG_SPL_SPI_FLASH_SUPPORT=y
CONFIG_SPL_SPI=y
CONFIG_PCI=y
CONFIG_DEBUG_UART=y
CONFIG_AHCI=y
# CONFIG_ANDROID_BOOT_IMAGE is not set
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/rk3588-coolpi-cm5-genbook.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_SPI_LOAD=y
CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000
CONFIG_SPL_ATF=y
# CONFIG_CMD_BIND is not set
# CONFIG_CMD_FASTBOOT is not set
CONFIG_CMD_GPIO=y
CONFIG_CMD_GPT=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MMC=y
CONFIG_CMD_PCI=y
CONFIG_CMD_USB=y
CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
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_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_FASTBOOT_BUF_ADDR=0x800800
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_HS400_ES_SUPPORT=y
CONFIG_SPL_MMC_HS400_ES_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_SPL_MMC_HS400_SUPPORT=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
CONFIG_MMC_SDHCI_ROCKCHIP=y
CONFIG_SPI_FLASH_SFDP_SUPPORT=y
CONFIG_SPI_FLASH_XMC=y
CONFIG_SPI_FLASH_XTX=y
CONFIG_NVME_PCI=y
CONFIG_PCIE_DW_ROCKCHIP=y
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y
CONFIG_PHY_ROCKCHIP_USBDP=y
CONFIG_SPL_PINCTRL=y
CONFIG_DM_PMIC=y
CONFIG_PMIC_RK8XX=y
CONFIG_REGULATOR_RK8XX=y
CONFIG_PWM_ROCKCHIP=y
CONFIG_SPL_RAM=y
CONFIG_SCSI=y
CONFIG_BAUDRATE=1500000
CONFIG_DEBUG_UART_SHIFT=2
CONFIG_SYS_NS16550_MEM32=y
CONFIG_ROCKCHIP_SFC=y
CONFIG_ROCKCHIP_SPI=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_USB_GADGET=y
CONFIG_ERRNO_STR=y

View file

@ -22,7 +22,6 @@ CONFIG_SPL_LOAD_FIT=y
CONFIG_LEGACY_IMAGE_FORMAT=y CONFIG_LEGACY_IMAGE_FORMAT=y
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-generic.dtb" CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-generic.dtb"
# CONFIG_DISPLAY_CPUINFO is not set # CONFIG_DISPLAY_CPUINFO is not set
CONFIG_DISPLAY_BOARDINFO_LATE=y
CONFIG_SPL_MAX_SIZE=0x40000 CONFIG_SPL_MAX_SIZE=0x40000
CONFIG_SPL_PAD_TO=0x7f8000 CONFIG_SPL_PAD_TO=0x7f8000
# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
@ -31,6 +30,7 @@ CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000
CONFIG_SPL_ATF=y CONFIG_SPL_ATF=y
CONFIG_CMD_GPIO=y CONFIG_CMD_GPIO=y
CONFIG_CMD_GPT=y CONFIG_CMD_GPT=y
CONFIG_CMD_MISC=y
CONFIG_CMD_MMC=y CONFIG_CMD_MMC=y
CONFIG_CMD_ROCKUSB=y CONFIG_CMD_ROCKUSB=y
CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_CMD_USB_MASS_STORAGE=y

View file

@ -18,13 +18,13 @@ CONFIG_SPL_LOAD_FIT=y
CONFIG_LEGACY_IMAGE_FORMAT=y CONFIG_LEGACY_IMAGE_FORMAT=y
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588-generic.dtb" CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588-generic.dtb"
# CONFIG_DISPLAY_CPUINFO is not set # CONFIG_DISPLAY_CPUINFO is not set
CONFIG_DISPLAY_BOARDINFO_LATE=y
CONFIG_SPL_MAX_SIZE=0x40000 CONFIG_SPL_MAX_SIZE=0x40000
CONFIG_SPL_PAD_TO=0x7f8000 CONFIG_SPL_PAD_TO=0x7f8000
# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
CONFIG_SPL_ATF=y CONFIG_SPL_ATF=y
CONFIG_CMD_GPIO=y CONFIG_CMD_GPIO=y
CONFIG_CMD_GPT=y CONFIG_CMD_GPT=y
CONFIG_CMD_MISC=y
CONFIG_CMD_MMC=y CONFIG_CMD_MMC=y
CONFIG_CMD_ROCKUSB=y CONFIG_CMD_ROCKUSB=y
CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_CMD_USB_MASS_STORAGE=y

View file

@ -0,0 +1,108 @@
CONFIG_ARM=y
CONFIG_SKIP_LOWLEVEL_INIT=y
CONFIG_COUNTER_FREQUENCY=24000000
CONFIG_ARCH_ROCKCHIP=y
CONFIG_SPL_GPIO=y
CONFIG_NR_DRAM_BANKS=1
CONFIG_SF_DEFAULT_SPEED=20000000
CONFIG_ENV_OFFSET=0x3F8000
CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3328-nanopi-r2s-plus"
CONFIG_DM_RESET=y
CONFIG_ROCKCHIP_RK3328=y
CONFIG_SYS_LOAD_ADDR=0x800800
CONFIG_DEBUG_UART_BASE=0xFF130000
CONFIG_DEBUG_UART_CLOCK=24000000
CONFIG_DEBUG_UART=y
# CONFIG_ANDROID_BOOT_IMAGE is not set
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/rk3328-nanopi-r2s-plus.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_POWER=y
CONFIG_SPL_ATF=y
CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
CONFIG_CMD_BOOTZ=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_ROCKUSB=y
CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_TIME=y
CONFIG_CMD_REGULATOR=y
CONFIG_SPL_OF_CONTROL=y
CONFIG_TPL_OF_CONTROL=y
CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
CONFIG_TPL_OF_PLATDATA=y
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SYS_MMC_ENV_DEV=0
CONFIG_TPL_DM=y
CONFIG_SPL_DM_SEQ_ALIAS=y
CONFIG_REGMAP=y
CONFIG_SPL_REGMAP=y
CONFIG_TPL_REGMAP=y
CONFIG_SYSCON=y
CONFIG_SPL_SYSCON=y
CONFIG_TPL_SYSCON=y
CONFIG_CLK=y
CONFIG_SPL_CLK=y
CONFIG_FASTBOOT_BUF_ADDR=0x800800
CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
CONFIG_ROCKCHIP_GPIO=y
CONFIG_SYS_I2C_ROCKCHIP=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_ROCKCHIP=y
CONFIG_PHY_MOTORCOMM=y
CONFIG_PHY_REALTEK=y
CONFIG_DM_MDIO=y
CONFIG_DM_ETH_PHY=y
CONFIG_PHY_GIGE=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_GMAC_ROCKCHIP=y
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
CONFIG_PINCTRL=y
CONFIG_SPL_PINCTRL=y
CONFIG_DM_PMIC=y
CONFIG_PMIC_RK8XX=y
CONFIG_SPL_DM_REGULATOR=y
CONFIG_DM_REGULATOR_FIXED=y
CONFIG_SPL_DM_REGULATOR_FIXED=y
CONFIG_DM_REGULATOR_GPIO=y
CONFIG_SPL_DM_REGULATOR_GPIO=y
CONFIG_REGULATOR_RK8XX=y
CONFIG_PWM_ROCKCHIP=y
CONFIG_RAM=y
CONFIG_SPL_RAM=y
CONFIG_TPL_RAM=y
CONFIG_DM_RNG=y
CONFIG_RNG_ROCKCHIP=y
CONFIG_BAUDRATE=1500000
CONFIG_DEBUG_UART_SHIFT=2
CONFIG_SYS_NS16550_MEM32=y
CONFIG_SYSINFO=y
CONFIG_SYSRESET=y
# CONFIG_TPL_SYSRESET is not set
CONFIG_USB=y
CONFIG_DM_USB_GADGET=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_USB_GADGET=y
CONFIG_USB_GADGET_DWC2_OTG=y
CONFIG_USB_FUNCTION_ROCKUSB=y
CONFIG_SPL_TINY_MEMSET=y
CONFIG_TPL_TINY_MEMSET=y
CONFIG_ERRNO_STR=y

View file

@ -30,6 +30,7 @@ CONFIG_SPL_I2C=y
CONFIG_SPL_POWER=y CONFIG_SPL_POWER=y
CONFIG_SPL_SPI_LOAD=y CONFIG_SPL_SPI_LOAD=y
CONFIG_TPL=y CONFIG_TPL=y
CONFIG_TPL_GPIO=y
# CONFIG_BOOTM_NETBSD is not set # CONFIG_BOOTM_NETBSD is not set
# CONFIG_BOOTM_PLAN9 is not set # CONFIG_BOOTM_PLAN9 is not set
# CONFIG_BOOTM_RTEMS is not set # CONFIG_BOOTM_RTEMS is not set
@ -78,6 +79,8 @@ CONFIG_ETH_DESIGNWARE=y
CONFIG_GMAC_ROCKCHIP=y CONFIG_GMAC_ROCKCHIP=y
CONFIG_PHY_ROCKCHIP_INNO_USB2=y CONFIG_PHY_ROCKCHIP_INNO_USB2=y
CONFIG_PHY_ROCKCHIP_TYPEC=y CONFIG_PHY_ROCKCHIP_TYPEC=y
CONFIG_TPL_PINCTRL=y
CONFIG_TPL_PINCTRL_FULL=y
CONFIG_DM_PMIC_FAN53555=y CONFIG_DM_PMIC_FAN53555=y
CONFIG_PMIC_RK8XX=y CONFIG_PMIC_RK8XX=y
CONFIG_SPL_PMIC_RK8XX=y CONFIG_SPL_PMIC_RK8XX=y

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

@ -0,0 +1,68 @@
.. SPDX-License-Identifier: GPL-2.0+
GenBook
=======
Cool Pi GenBook is a laptop powered by RK3588, it works with a
carrier board connect with CM5.
Specification:
* Rockchip RK3588
* LPDDR5X 8/32 GB
* eMMC 64 GB
* SPI Nor 8 MB
* HDMI Type A out x 1
* USB 3.0 Host x 1
* USB-C 3.0 with DisplayPort AltMode
* PCIE M.2 E Key for RTL8852BE Wireless connection
* PCIE M.2 M Key for NVME connection
* eDP panel with 1920x1080
Here is the step-by-step to compile and boot to U-Boot on GenBook.
Get the TF-A and DDR init (TPL) binaries
----------------------------------------
.. prompt:: bash
> cd u-boot
> export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.17.bin
> export BL31=../rkbin/bin/rk35/rk3588_bl31_v1.46.elf
> make coolpi-genbook-cm5-rk3588_defconfig
> make CROSS_COMPILE=aarch64-linux-gnu-
This will build ``u-boot-rockchip.bin`` for eMMC and ``u-boot-rockchip-spi.bin`` for SPI Nor.
Write u-boot to eMMC or SPI Nor from a Linux system on the laptop
-----------------------------------------------------------------
Copy ``u-boot-rockchip.bin`` and ``u-boot-rockchip-spi.bin`` to the laptop.
eMMC
~~~~
.. prompt:: bash
dd if=u-boot-rockchip.bin of=/dev/mmcblk0 bs=512 seek=64
SPI Nor
~~~~~~~
.. prompt:: bash
dd if=u-boot-rockchip-spi.bin of=/dev/mtdblock0
``upgrade_tool`` allows to flash the on-board SPI Nor via the USB TypeC interface
with help of the Rockchip loader binary.
To enter the USB flashing mode, connect the laptop and your HOST PC with a USB-C
cable, reset the laptop with ``Loader Key`` pressed.
On your PC, check with ``lsusb -d 2207:350b``).
To flash U-Boot on the SPI Nor with ``upgrade_tool``:
.. prompt:: bash
upgrade_tool db rk3588/MiniLoaderAll.bin
upgrade_tool ssd // Input 5 for SPINOR download mode
upgrade_tool wl 0 u-boot-rockchip-spi.bin
upgrade_tool rd

View file

@ -0,0 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0+
Cool Pi
=================
.. toctree::
:maxdepth: 2
genbook_cm5_rk3588

View file

@ -23,6 +23,7 @@ Board-specific doc
bsh/index bsh/index
cloos/index cloos/index
congatec/index congatec/index
coolpi/index
coreboot/index coreboot/index
emcraft/index emcraft/index
emulation/index emulation/index
@ -43,6 +44,7 @@ Board-specific doc
phytec/index phytec/index
purism/index purism/index
qualcomm/index qualcomm/index
qnap/index
renesas/index renesas/index
rockchip/index rockchip/index
samsung/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

@ -65,6 +65,7 @@ List of mainline supported Rockchip boards:
- FriendlyElec NanoPi R2C (nanopi-r2c-rk3328) - FriendlyElec NanoPi R2C (nanopi-r2c-rk3328)
- FriendlyElec NanoPi R2C Plus (nanopi-r2c-plus-rk3328) - FriendlyElec NanoPi R2C Plus (nanopi-r2c-plus-rk3328)
- FriendlyElec NanoPi R2S (nanopi-r2s-rk3328) - FriendlyElec NanoPi R2S (nanopi-r2s-rk3328)
- FriendlyElec NanoPi R2S Plus (nanopi-r2s-plus-rk3328)
- Pine64 Rock64 (rock64-rk3328) - Pine64 Rock64 (rock64-rk3328)
- Radxa ROCK Pi E (rock-pi-e-rk3328) - Radxa ROCK Pi E (rock-pi-e-rk3328)
- Xunlong Orange Pi R1 Plus (orangepi-r1-plus-rk3328) - Xunlong Orange Pi R1 Plus (orangepi-r1-plus-rk3328)
@ -119,6 +120,7 @@ List of mainline supported Rockchip boards:
- FriendlyElec NanoPi R5S (nanopi-r5s-rk3568) - FriendlyElec NanoPi R5S (nanopi-r5s-rk3568)
- Generic RK3566/RK3568 (generic-rk3568) - Generic RK3566/RK3568 (generic-rk3568)
- Hardkernel ODROID-M1 (odroid-m1-rk3568) - Hardkernel ODROID-M1 (odroid-m1-rk3568)
- QNAP TS-433 (qnap-ts433-rk3568)
- Radxa E25 Carrier Board (radxa-e25-rk3568) - Radxa E25 Carrier Board (radxa-e25-rk3568)
- Radxa ROCK 3A (rock-3a-rk3568) - Radxa ROCK 3A (rock-3a-rk3568)
- Radxa ROCK 3B (rock-3b-rk3568) - Radxa ROCK 3B (rock-3b-rk3568)
@ -147,6 +149,7 @@ List of mainline supported Rockchip boards:
- Xunlong Orange Pi 5 Plus (orangepi-5-plus-rk3588) - Xunlong Orange Pi 5 Plus (orangepi-5-plus-rk3588)
- Yanyi Tech CoolPi 4 Model B (coolpi-4b-rk3588s) - Yanyi Tech CoolPi 4 Model B (coolpi-4b-rk3588s)
- Yanyi Tech CoolPi CM5 EVB (coolpi-cm5-evb-rk3588) - Yanyi Tech CoolPi CM5 EVB (coolpi-cm5-evb-rk3588)
- Yanyi Tech CoolPi CM5 GenBook (coolpi-cm5-genbook-rk3588)
* rv1108 * rv1108
- Rockchip Evb-rv1108 (evb-rv1108) - Rockchip Evb-rv1108 (evb-rv1108)

View file

@ -127,6 +127,14 @@ config SPL_PINCTRL_GENERIC
This option is an SPL-variant of the PINCTRL_GENERIC option. This option is an SPL-variant of the PINCTRL_GENERIC option.
See the help of PINCTRL_GENERIC for details. See the help of PINCTRL_GENERIC for details.
config TPL_PINCTRL_GENERIC
bool "Support generic pin controllers in TPL"
depends on TPL_PINCTRL_FULL
default y
help
This option is a TPL-variant of the PINCTRL_GENERIC option.
See the help of PINCTRL_GENERIC for details.
config SPL_PINMUX config SPL_PINMUX
bool "Support pin multiplexing controllers in SPL" bool "Support pin multiplexing controllers in SPL"
depends on SPL_PINCTRL_GENERIC depends on SPL_PINCTRL_GENERIC

View file

@ -14,4 +14,11 @@ config SPL_PINCTRL_ROCKCHIP
help help
This option is an SPL-variant of the PINCTRL_ROCKCHIP option. This option is an SPL-variant of the PINCTRL_ROCKCHIP option.
config TPL_PINCTRL_ROCKCHIP
bool "Support Rockchip pin controllers in TPL"
depends on ARCH_ROCKCHIP && TPL_PINCTRL_GENERIC
default y
help
This option is a TPL-variant of the PINCTRL_ROCKCHIP option.
endif endif

View file

@ -0,0 +1,32 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* (C) Copyright 2018 FriendlyElec Computer Tech. Co., Ltd.
* (http://www.friendlyarm.com)
*
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
*/
/dts-v1/;
#include "rk3328-nanopi-r2s.dts"
/ {
compatible = "friendlyarm,nanopi-r2s-plus", "rockchip,rk3328";
model = "FriendlyElec NanoPi R2S Plus";
aliases {
mmc1 = &emmc;
};
};
&emmc {
bus-width = <8>;
cap-mmc-highspeed;
disable-wp;
mmc-hs200-1_8v;
non-removable;
num-slots = <1>;
pinctrl-names = "default";
pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
supports-emmc;
status = "okay";
};

View file

@ -6,12 +6,190 @@
/dts-v1/; /dts-v1/;
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include "rk3568.dtsi" #include "rk3568.dtsi"
/ { / {
model = "Qnap TS-433-4G NAS System 4-Bay"; model = "Qnap TS-433-4G NAS System 4-Bay";
compatible = "qnap,ts433", "rockchip,rk3568"; compatible = "qnap,ts433", "rockchip,rk3568";
aliases {
ethernet0 = &gmac0;
mmc0 = &sdhci;
rtc0 = &rtc_rv8263;
};
chosen {
stdout-path = "serial2:115200n8";
};
keys {
compatible = "gpio-keys";
pinctrl-0 = <&copy_button_pin>, <&reset_button_pin>;
pinctrl-names = "default";
key-copy {
label = "copy";
gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
linux,code = <KEY_COPY>;
};
key-reset {
label = "reset";
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
};
leds {
compatible = "gpio-leds";
led-0 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_DISK;
gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>;
linux,default-trigger = "disk-activity";
pinctrl-names = "default";
pinctrl-0 = <&hdd1_led_pin>;
};
led-1 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_DISK;
gpios = <&gpio1 RK_PD6 GPIO_ACTIVE_LOW>;
linux,default-trigger = "disk-activity";
pinctrl-names = "default";
pinctrl-0 = <&hdd2_led_pin>;
};
led-2 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_DISK;
gpios = <&gpio1 RK_PD7 GPIO_ACTIVE_LOW>;
linux,default-trigger = "disk-activity";
pinctrl-names = "default";
pinctrl-0 = <&hdd3_led_pin>;
};
led-3 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_DISK;
gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>;
linux,default-trigger = "disk-activity";
pinctrl-names = "default";
pinctrl-0 = <&hdd4_led_pin>;
};
};
dc_12v: regulator-dc-12v {
compatible = "regulator-fixed";
regulator-name = "dc_12v";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
};
vcc3v3_pcie: regulator-vcc3v3-pcie {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_pcie";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
enable-active-high;
gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;
vin-supply = <&dc_12v>;
};
vcc3v3_sys: regulator-vcc3v3-sys {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&dc_12v>;
};
vcc5v0_host: regulator-vcc5v0-host {
compatible = "regulator-fixed";
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_host_en>;
gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
regulator-name = "vcc5v0_host";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_usb>;
};
vcc5v0_otg: regulator-vcc5v0-otg {
compatible = "regulator-fixed";
enable-active-high;
gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_otg_en>;
regulator-name = "vcc5v0_otg";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v0_usb>;
};
vcc5v0_sys: regulator-vcc5v0-sys {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&dc_12v>;
};
vcc5v0_usb: regulator-vcc5v0-usb {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_usb";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&dc_12v>;
};
};
/* connected to usb_host0_xhci */
&combphy0 {
status = "okay";
};
/* connected to sata1 */
&combphy1 {
status = "okay";
};
/* connected to sata2 */
&combphy2 {
status = "okay";
};
&cpu0 {
cpu-supply = <&vdd_cpu>;
};
&cpu1 {
cpu-supply = <&vdd_cpu>;
};
&cpu2 {
cpu-supply = <&vdd_cpu>;
};
&cpu3 {
cpu-supply = <&vdd_cpu>;
}; };
&gmac0 { &gmac0 {
@ -20,35 +198,282 @@
assigned-clock-rates = <0>, <125000000>; assigned-clock-rates = <0>, <125000000>;
clock_in_out = "output"; clock_in_out = "output";
phy-handle = <&rgmii_phy0>; phy-handle = <&rgmii_phy0>;
phy-mode = "rgmii"; phy-mode = "rgmii-id";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&gmac0_miim pinctrl-0 = <&gmac0_miim
&gmac0_tx_bus2 &gmac0_tx_bus2
&gmac0_rx_bus2 &gmac0_rx_bus2
&gmac0_rgmii_clk &gmac0_rgmii_clk
&gmac0_rgmii_bus>; &gmac0_rgmii_bus>;
rx_delay = <0x2f>; status = "okay";
tx_delay = <0x3c>; };
&gpu {
mali-supply = <&vdd_gpu>;
status = "okay"; status = "okay";
}; };
&i2c0 { &i2c0 {
status = "okay";
pmic@20 { pmic@20 {
compatible = "rockchip,rk809"; compatible = "rockchip,rk809";
reg = <0x20>; reg = <0x20>;
interrupt-parent = <&gpio0>; interrupt-parent = <&gpio0>;
interrupts = <3 IRQ_TYPE_LEVEL_LOW>; interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
#clock-cells = <1>;
pinctrl-names = "default";
pinctrl-0 = <&pmic_int_l>;
system-power-controller;
vcc1-supply = <&vcc3v3_sys>;
vcc2-supply = <&vcc3v3_sys>;
vcc3-supply = <&vcc3v3_sys>;
vcc4-supply = <&vcc3v3_sys>;
vcc5-supply = <&vcc3v3_sys>;
vcc6-supply = <&vcc3v3_sys>;
vcc7-supply = <&vcc3v3_sys>;
vcc8-supply = <&vcc3v3_sys>;
vcc9-supply = <&vcc3v3_sys>;
wakeup-source;
regulators {
vdd_logic: DCDC_REG1 {
regulator-name = "vdd_logic";
regulator-always-on;
regulator-boot-on;
regulator-initial-mode = <0x2>;
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1350000>;
regulator-ramp-delay = <6001>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdd_gpu: DCDC_REG2 {
regulator-name = "vdd_gpu";
regulator-always-on;
regulator-initial-mode = <0x2>;
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1350000>;
regulator-ramp-delay = <6001>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_ddr: DCDC_REG3 {
regulator-name = "vcc_ddr";
regulator-always-on;
regulator-boot-on;
regulator-initial-mode = <0x2>;
regulator-state-mem {
regulator-on-in-suspend;
};
};
vdd_npu: DCDC_REG4 {
regulator-name = "vdd_npu";
regulator-initial-mode = <0x2>;
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1350000>;
regulator-ramp-delay = <6001>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_1v8: DCDC_REG5 {
regulator-name = "vcc_1v8";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdda0v9_image: LDO_REG1 {
regulator-name = "vdda0v9_image";
regulator-always-on;
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <900000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdda_0v9: LDO_REG2 {
regulator-name = "vdda_0v9";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <900000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vdda0v9_pmu: LDO_REG3 {
regulator-name = "vdda0v9_pmu";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <900000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <900000>;
};
};
vccio_acodec: LDO_REG4 {
regulator-name = "vccio_acodec";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vccio_sd: LDO_REG5 {
regulator-name = "vccio_sd";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc3v3_pmu: LDO_REG6 {
regulator-name = "vcc3v3_pmu";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <3300000>;
};
};
vcca_1v8: LDO_REG7 {
regulator-name = "vcca_1v8";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcca1v8_pmu: LDO_REG8 {
regulator-name = "vcca1v8_pmu";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
vcca1v8_image: LDO_REG9 {
regulator-name = "vcca1v8_image";
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc_3v3: SWITCH_REG1 {
regulator-name = "vcc_3v3";
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-off-in-suspend;
};
};
vcc3v3_sd: SWITCH_REG2 {
regulator-name = "vcc3v3_sd";
/*
* turning this off, breaks access to both
* PCIe controllers, refclk generator perhaps
*/
regulator-always-on;
regulator-boot-on;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
};
vdd_cpu: regulator@40 {
compatible = "silergy,syr827";
reg = <0x40>;
fcs,suspend-voltage-selector = <1>;
regulator-name = "vdd_cpu";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <712500>;
regulator-max-microvolt = <1390000>;
regulator-ramp-delay = <2300>;
vin-supply = <&vcc5v0_sys>;
}; };
}; };
&i2c1 { &i2c1 {
status = "okay"; status = "okay";
rtc@51 { rtc_rv8263: rtc@51 {
compatible = "microcrystal,rv8263"; compatible = "microcrystal,rv8263";
reg = <0x51>; reg = <0x51>;
wakeup-source; wakeup-source;
}; };
/* eeprom for vital-product-data on the mainboard */
eeprom@54 {
compatible = "giantec,gt24c04a", "atmel,24c04";
reg = <0x54>;
label = "VPD_MB";
num-addresses = <2>;
pagesize = <16>;
read-only;
};
/* eeprom for vital-product-data on the backplane */
eeprom@56 {
compatible = "giantec,gt24c04a", "atmel,24c04";
reg = <0x56>;
label = "VPD_BP";
num-addresses = <2>;
pagesize = <16>;
read-only;
};
}; };
&mdio0 { &mdio0 {
@ -59,12 +484,82 @@
}; };
&pcie30phy { &pcie30phy {
data-lanes = <1 2>;
status = "okay"; status = "okay";
}; };
/* Connected to a JMicron AHCI SATA controller */
&pcie3x1 { &pcie3x1 {
/* The downstream dts has: rockchip,bifurcation, XXX: find out what this is about */
reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_pcie>;
status = "okay";
};
/* Connected to the 2.5G NIC for the upper network jack */
&pcie3x2 {
num-lanes = <1>;
reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_pcie>;
status = "okay";
};
&pinctrl {
keys {
copy_button_pin: copy-button-pin {
rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>;
};
reset_button_pin: reset-button-pin {
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
leds {
hdd1_led_pin: hdd1-led-pin {
rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
};
hdd2_led_pin: hdd2-led-pin {
rockchip,pins = <1 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
};
hdd3_led_pin: hdd3-led-pin {
rockchip,pins = <1 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>;
};
hdd4_led_pin: hdd4_led-pin {
rockchip,pins = <2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
pmic {
pmic_int_l: pmic-int-l {
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
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_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&pmu_io_domains {
vccio4-supply = <&vcc_1v8>;
vccio6-supply = <&vcc_1v8>;
status = "okay";
};
&sata1 {
status = "okay";
};
&sata2 {
status = "okay"; status = "okay";
}; };
@ -75,6 +570,20 @@
status = "okay"; status = "okay";
}; };
&tsadc {
rockchip,hw-tshut-mode = <1>;
rockchip,hw-tshut-polarity = <0>;
status = "okay";
};
/*
* Connected to an MCU, that provides access to more LEDs,
* buzzer, fan control and more.
*/
&uart0 {
status = "okay";
};
/* /*
* Pins available on CN3 connector at TTL voltage level (3V3). * Pins available on CN3 connector at TTL voltage level (3V3).
* ,_ _. * ,_ _.
@ -84,3 +593,53 @@
&uart2 { &uart2 {
status = "okay"; status = "okay";
}; };
&usb2phy0 {
status = "okay";
};
/* connected to usb_host0_xhci */
&usb2phy0_otg {
phy-supply = <&vcc5v0_otg>;
status = "okay";
};
&usb2phy1 {
status = "okay";
};
/* connected to usb_host1_ehci/ohci */
&usb2phy1_host {
phy-supply = <&vcc5v0_host>;
status = "okay";
};
/* connected to usb_host0_ehci/ohci */
&usb2phy1_otg {
phy-supply = <&vcc5v0_host>;
status = "okay";
};
/* right port backside */
&usb_host0_ehci {
status = "okay";
};
&usb_host0_ohci {
status = "okay";
};
/* front port */
&usb_host0_xhci {
dr_mode = "host";
status = "okay";
};
/* left port backside */
&usb_host1_ehci {
status = "okay";
};
&usb_host1_ohci {
status = "okay";
};

View file

@ -0,0 +1,349 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
*
*/
/dts-v1/;
#include <dt-bindings/leds/common.h>
#include "rk3588-coolpi-cm5.dtsi"
/ {
model = "CoolPi CM5 GenBook";
compatible = "coolpi,pi-cm5-genbook", "coolpi,pi-cm5", "rockchip,rk3588";
backlight: backlight {
compatible = "pwm-backlight";
enable-gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&bl_en>;
power-supply = <&vcc12v_dcin>;
pwms = <&pwm6 0 25000 0>;
};
battery: battery {
compatible = "simple-battery";
charge-full-design-microamp-hours = <9800000>;
voltage-max-design-microvolt = <4350000>;
voltage-min-design-microvolt = <3000000>;
};
charger: dc-charger {
compatible = "gpio-charger";
charger-type = "mains";
gpios = <&gpio1 RK_PC0 GPIO_ACTIVE_LOW>;
};
leds: leds {
compatible = "gpio-leds";
heartbeat_led: led-0 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
wlan_led: led-1 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
};
charging_red: led-2 {
function = LED_FUNCTION_CHARGING;
color = <LED_COLOR_ID_RED>;
gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>;
};
};
vcc12v_dcin: vcc12v-dcin-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc12v_dcin";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
};
vcc_sys: vcc-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <7000000>;
regulator-max-microvolt = <7000000>;
vin-supply = <&vcc12v_dcin>;
};
vcc5v0_sys: vcc5v0-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <7000000>;
regulator-max-microvolt = <7000000>;
vin-supply = <&vcc_sys>;
};
vcc3v3_sys: vcc3v3-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_sys";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vcc5v0_sys>;
};
vcc3v3_lcd: vcc3v3-lcd-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_lcd";
enable-active-high;
gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&lcdpwr_en>;
vin-supply = <&vcc3v3_sys>;
};
vcc5v0_usb: vcc5v0-usb-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_usb";
regulator-boot-on;
regulator-always-on;
enable-active-high;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_pwren>;
vin-supply = <&vcc_sys>;
};
vcc5v0_usb_host0: vcc5v0_usb30_host: vcc5v0-usb-host-regulator {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_host";
regulator-boot-on;
regulator-always-on;
enable-active-high;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio1 RK_PA7 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_host_pwren>;
vin-supply = <&vcc5v0_usb>;
};
};
&i2c4 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c4m3_xfer>;
cw2015@62 {
compatible = "cellwise,cw2015";
reg = <0x62>;
cellwise,battery-profile = /bits/ 8 <
0x17 0x67 0x69 0x63 0x63 0x62 0x62 0x5F
0x52 0x73 0x4C 0x5A 0x5B 0x4B 0x42 0x3A
0x33 0x2D 0x29 0x28 0x2E 0x31 0x3C 0x49
0x2C 0x2C 0x0C 0xCD 0x30 0x51 0x50 0x66
0x74 0x74 0x75 0x78 0x41 0x1B 0x84 0x5F
0x0B 0x34 0x1C 0x45 0x89 0x92 0xA0 0x13
0x2C 0x55 0xAB 0xCB 0x80 0x5E 0x7B 0xCB
0x2F 0x00 0x64 0xA5 0xB5 0x10 0x18 0x21
>;
cellwise,monitor-interval-ms = <3000>;
monitored-battery = <&battery>;
power-supplies = <&charger>;
};
};
&i2c5 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c5m3_xfer>;
touchpad: touchpad@2c {
compatible = "hid-over-i2c";
reg = <0x2c>;
interrupt-parent = <&gpio1>;
interrupts = <RK_PD6 IRQ_TYPE_LEVEL_LOW>;
hid-descr-addr = <0x0020>;
};
};
&gmac0 {
status = "disabled";
};
/* M.2 E-Key */
&pcie2x1l0 {
reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_sys>;
pinctrl-names = "default";
pinctrl-0 = <&pcie_clkreq &pcie_wake &pcie_rst &wifi_pwron &bt_pwron>;
status = "okay";
};
&pcie2x1l2 {
status = "disabled";
};
&pcie30phy {
status = "okay";
};
/* M.2 M-Key ssd */
&pcie3x4 {
reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_sys>;
status = "okay";
};
&pinctrl {
lcd {
lcdpwr_en: lcdpwr-en {
rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>;
};
bl_en: bl-en {
rockchip,pins = <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
usb {
usb_pwren: usb-pwren {
rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
};
usb_otg_pwren: usb-otg-pwren {
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
};
usb_host_pwren: usb-host-pwren {
rockchip,pins = <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
wifi {
bt_pwron: bt-pwron {
rockchip,pins = <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
};
pcie_clkreq: pcie-clkreq {
rockchip,pins = <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
};
pcie_rst: pcie-rst {
rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
};
wifi_pwron: wifi-pwron {
rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
};
pcie_wake: pcie-wake {
rockchip,pins = <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
};
&pwm6 {
pinctrl-0 = <&pwm6m1_pins>;
status = "okay";
};
&sdmmc {
status = "disabled";
};
&sfc {
pinctrl-names = "default";
pinctrl-0 = <&fspim2_pins>;
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-max-frequency = <100000000>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <1>;
};
};
&u2phy0 {
status = "okay";
};
&u2phy0_otg {
status = "okay";
};
&usbdp_phy0 {
status = "okay";
};
&u2phy1 {
status = "okay";
};
&u2phy1_otg {
status = "okay";
};
&u2phy2 {
status = "okay";
};
&u2phy3 {
status = "okay";
};
&u2phy2_host {
phy-supply = <&vcc5v0_usb_host0>;
status = "okay";
};
&u2phy3_host {
phy-supply = <&vcc5v0_usb>;
status = "okay";
};
&usbdp_phy1 {
status = "okay";
};
/* For Keypad */
&usb_host0_ehci {
status = "okay";
};
&usb_host0_ohci {
status = "okay";
};
/* Type C port */
&usb_host0_xhci {
dr_mode = "peripheral";
maximum-speed = "high-speed";
status = "okay";
};
/* connected to a HUB for camera and BT */
&usb_host1_ehci {
status = "okay";
};
&usb_host1_ohci {
status = "okay";
};
/* USB A out */
&usb_host1_xhci {
dr_mode = "host";
status = "okay";
};

View file

@ -0,0 +1,19 @@
/* SPDX-License-Identifier: GPL-2.0+ */
#ifndef __GENBOOK_CM5_RK3588_H
#define __GENBOOK_CM5_RK3588_H
#define ROCKCHIP_DEVICE_SETTINGS \
"stdout=serial,vidconsole\0" \
"stderr=serial,vidconsole\0"
/*
* As a laptop, there is no sdmmc, and we want to
* set usb the highest boot priority for third-part
* os installation.
*/
#define BOOT_TARGETS "usb mmc0"
#include <configs/rk3588_common.h>
#endif /* __GENBOOK_CM5_RK3588_H */

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

View file

@ -13,7 +13,9 @@
#ifndef CONFIG_XPL_BUILD #ifndef CONFIG_XPL_BUILD
#ifndef BOOT_TARGETS
#define BOOT_TARGETS "mmc1 mmc0 nvme scsi usb pxe dhcp spi" #define BOOT_TARGETS "mmc1 mmc0 nvme scsi usb pxe dhcp spi"
#endif
#ifdef CONFIG_ARM64 #ifdef CONFIG_ARM64
#define ROOT_UUID "B921B045-1DF0-41C3-AF44-4C6F280D3FAE;\0" #define ROOT_UUID "B921B045-1DF0-41C3-AF44-4C6F280D3FAE;\0"