diff --git a/config/boards/radxa-e52c.conf b/config/boards/radxa-e52c.conf index f1b8c243a5..4632adf4d2 100644 --- a/config/boards/radxa-e52c.conf +++ b/config/boards/radxa-e52c.conf @@ -4,10 +4,11 @@ BOARD_VENDOR="radxa" BOARDFAMILY="rockchip-rk3588" BOARD_MAINTAINER="amazingfate schwar3kat" BOOTCONFIG="radxa-e52c-rk3588s_defconfig" -KERNEL_TARGET="vendor" +KERNEL_TARGET="vendor,current,edge" BOOT_FDT_FILE="rockchip/rk3588s-radxa-e52c.dtb" BOOT_SCENARIO="spl-blobs" BOOT_SOC="rk3588" +DEFAULT_CONSOLE="serial" IMAGE_PARTITION_TABLE="gpt" HAS_VIDEO_OUTPUT="no" @@ -22,7 +23,7 @@ function post_family_tweaks_bsp__radxa_e52c_enable_leds() { tx=0 rx=1 device_name=lan - + [/sys/class/leds/wan-led] trigger=netdev interval=52 @@ -31,11 +32,11 @@ function post_family_tweaks_bsp__radxa_e52c_enable_leds() { tx=0 rx=1 device_name=wan - + [/sys/class/leds/mmc0::] trigger=mmc0 brightness=0 - + [/sys/class/leds/sys-led] trigger=heartbeat brightness=0 @@ -52,3 +53,30 @@ function post_family_tweaks_bsp__radxa_e52c_enable_leds() { EOF } +# Mainline U-Boot, only for non-vendor BRANCH +function post_family_config__radxa_e52c_use_mainline_uboot() { + [[ "${BRANCH}" == "vendor" ]] && return 0 + + declare -g BOOT_FDT_FILE="rockchip/rk3582-radxa-e52c.dtb" + display_alert "$BOARD" "u-boot ${BOOTBRANCH_BOARD} overrides" "info" + declare -g BOOTCONFIG="radxa-e52c-rk3582_defconfig" + declare -g BOOTSOURCE="https://github.com/u-boot/u-boot.git" + declare -g BOOTBRANCH="tag:v2026.01" + declare -g BOOTPATCHDIR="v2026.01" + declare -g BOOTDIR="u-boot-${BOARD}" + declare -g UBOOT_TARGET_MAP="BL31=${RKBIN_DIR}/${BL31_BLOB} ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB};;u-boot-rockchip.bin" + unset uboot_custom_postprocess write_uboot_platform write_uboot_platform_mtd # disable stuff from rockchip64_common; we're using binman here which does all the work already + + # Just use the binman-provided u-boot-rockchip.bin, which is ready-to-go + function write_uboot_platform() { + dd "if=$1/u-boot-rockchip.bin" "of=$2" bs=32k seek=1 conv=notrunc status=none + } +} + +# Mainline U-Boot, only for non-vendor BRANCH +function post_config_uboot_target__extra_configs_for_radxa_e52c_mainline_uboot() { + [[ "${BRANCH}" == "vendor" ]] && return 0 + + display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable BTRFS filesystem support" "info" + run_host_command_logged scripts/config --enable CONFIG_CMD_BTRFS +} diff --git a/patch/u-boot/v2026.01/board_radxa-e52c/0000-add-initial-rk3582-support.patch b/patch/u-boot/v2026.01/board_radxa-e52c/0000-add-initial-rk3582-support.patch new file mode 100644 index 0000000000..8deb164a1e --- /dev/null +++ b/patch/u-boot/v2026.01/board_radxa-e52c/0000-add-initial-rk3582-support.patch @@ -0,0 +1,260 @@ +From 981fcdc310c7c4aff85ff6cfaddb34c2e63f8163 Mon Sep 17 00:00:00 2001 +From: Jonas Karlman +Date: Wed, 7 Jan 2026 23:07:39 +0000 +Subject: [PATCH] rockchip: Add initial RK3582 support + +The RK3582 SoC is a variant of the RK3588S with some IP blocks disabled. +What blocks are disabled/non-working is indicated by ip-state in OTP. + +This add initial support for RK3582 by using ft_system_setup() to mark +any cpu, gpu and/or vdec/venc node with status=fail as indicated by +ip-state. + +This apply same policy as vendor U-Boot for RK3582, i.e. two big cpu +cores, the gpu and one vdec/venc core is always failed/disabled. + +Enable Kconfig option OF_SYSTEM_SETUP in board defconfig to make use of +the required DT fixups for RK3582 board variants. + +Signed-off-by: Jonas Karlman +--- + arch/arm/mach-rockchip/rk3588/rk3588.c | 215 +++++++++++++++++++++++++ + 1 file changed, 215 insertions(+) + +diff --git a/arch/arm/mach-rockchip/rk3588/rk3588.c b/arch/arm/mach-rockchip/rk3588/rk3588.c +index 6324c6f12867..c1138ffcb87f 100644 +--- a/arch/arm/mach-rockchip/rk3588/rk3588.c ++++ b/arch/arm/mach-rockchip/rk3588/rk3588.c +@@ -7,6 +7,7 @@ + #define LOG_CATEGORY LOGC_ARCH + + #include ++#include + #include + #include + #include +@@ -240,6 +241,16 @@ int rockchip_dram_init_banksize_fixup(struct bd_info *bd) + + #define RK3588_OTP_CPU_CODE_OFFSET 0x02 + #define RK3588_OTP_SPECIFICATION_OFFSET 0x06 ++#define RK3588_OTP_IP_STATE_OFFSET 0x1d ++ ++#define FAIL_CPU_CLUSTER0 GENMASK(3, 0) ++#define FAIL_CPU_CLUSTER1 GENMASK(5, 4) ++#define FAIL_CPU_CLUSTER2 GENMASK(7, 6) ++#define FAIL_GPU GENMASK(4, 1) ++#define FAIL_RKVDEC0 BIT(6) ++#define FAIL_RKVDEC1 BIT(7) ++#define FAIL_RKVENC0 BIT(0) ++#define FAIL_RKVENC1 BIT(2) + + int checkboard(void) + { +@@ -285,3 +296,207 @@ int checkboard(void) + + return 0; + } ++ ++static int fdt_path_del_node(void *fdt, const char *path) ++{ ++ int nodeoffset; ++ ++ nodeoffset = fdt_path_offset(fdt, path); ++ if (nodeoffset < 0) ++ return nodeoffset; ++ ++ return fdt_del_node(fdt, nodeoffset); ++} ++ ++static int fdt_path_set_name(void *fdt, const char *path, const char *name) ++{ ++ int nodeoffset; ++ ++ nodeoffset = fdt_path_offset(fdt, path); ++ if (nodeoffset < 0) ++ return nodeoffset; ++ ++ return fdt_set_name(fdt, nodeoffset, name); ++} ++ ++/* ++ * RK3582 is a variant of the RK3588S with some IP blocks disabled. What blocks ++ * are disabled/non-working is indicated by ip-state in OTP. ft_system_setup() ++ * is used to mark any cpu, gpu and/or vdec/venc node with status=fail as ++ * indicated by ip-state. Apply same policy as vendor U-Boot for RK3582, i.e. ++ * two big cpu cores, the gpu and one vdec/venc core is always failed. Enable ++ * OF_SYSTEM_SETUP to use the required DT fixups for RK3582 board variants. ++ */ ++int ft_system_setup(void *blob, struct bd_info *bd) ++{ ++ static const char * const cpu_node_names[] = { ++ "cpu@0", "cpu@100", "cpu@200", "cpu@300", ++ "cpu@400", "cpu@500", "cpu@600", "cpu@700", ++ }; ++ int parent, node, i, comp_len, len, ret; ++ bool cluster1_removed = false; ++ u8 cpu_code[2], ip_state[3]; ++ struct udevice *dev; ++ char soc_comp[16]; ++ const char *comp; ++ void *data; ++ ++ if (!IS_ENABLED(CONFIG_OF_SYSTEM_SETUP)) ++ return 0; ++ ++ if (!IS_ENABLED(CONFIG_ROCKCHIP_OTP) || !CONFIG_IS_ENABLED(MISC)) ++ return -ENOSYS; ++ ++ ret = uclass_get_device_by_driver(UCLASS_MISC, ++ DM_DRIVER_GET(rockchip_otp), &dev); ++ if (ret) { ++ log_debug("Could not find otp device, ret=%d\n", ret); ++ return ret; ++ } ++ ++ /* cpu-code: SoC model, e.g. 0x35 0x82 or 0x35 0x88 */ ++ ret = misc_read(dev, RK3588_OTP_CPU_CODE_OFFSET, cpu_code, 2); ++ if (ret < 0) { ++ log_debug("Could not read cpu-code, ret=%d\n", ret); ++ return ret; ++ } ++ ++ log_debug("cpu-code: %02x %02x\n", cpu_code[0], cpu_code[1]); ++ ++ /* only fail cores on rk3582 */ ++ if (!(cpu_code[0] == 0x35 && cpu_code[1] == 0x82)) ++ return 0; ++ ++ ret = misc_read(dev, RK3588_OTP_IP_STATE_OFFSET, &ip_state, 3); ++ if (ret < 0) { ++ log_err("Could not read ip-state, ret=%d\n", ret); ++ return ret; ++ } ++ ++ log_debug("ip-state: %02x %02x %02x (otp)\n", ++ ip_state[0], ip_state[1], ip_state[2]); ++ ++ /* policy: fail entire big core cluster when one or more core is bad */ ++ if (ip_state[0] & FAIL_CPU_CLUSTER1) ++ ip_state[0] |= FAIL_CPU_CLUSTER1; ++ if (ip_state[0] & FAIL_CPU_CLUSTER2) ++ ip_state[0] |= FAIL_CPU_CLUSTER2; ++ ++ /* policy: always fail one big core cluster on rk3582 */ ++ if (!(ip_state[0] & (FAIL_CPU_CLUSTER1 | FAIL_CPU_CLUSTER2))) ++ ip_state[0] |= FAIL_CPU_CLUSTER2; ++ ++ /* policy: always fail gpu on rk3582 */ ++ ip_state[1] |= FAIL_GPU; ++ ++ /* policy: always fail one rkvdec core on rk3582 */ ++ if (!(ip_state[1] & (FAIL_RKVDEC0 | FAIL_RKVDEC1))) ++ ip_state[1] |= FAIL_RKVDEC1; ++ ++ /* policy: always fail one rkvenc core on rk3582 */ ++ if (!(ip_state[2] & (FAIL_RKVENC0 | FAIL_RKVENC1))) ++ ip_state[2] |= FAIL_RKVENC1; ++ ++ log_debug("ip-state: %02x %02x %02x (policy)\n", ++ ip_state[0], ip_state[1], ip_state[2]); ++ ++ /* cpu cluster1: ip_state[0]: bit4~5 */ ++ if ((ip_state[0] & FAIL_CPU_CLUSTER1) == FAIL_CPU_CLUSTER1) { ++ log_debug("remove cpu-map cluster1\n"); ++ fdt_path_del_node(blob, "/cpus/cpu-map/cluster1"); ++ cluster1_removed = true; ++ } ++ ++ /* cpu cluster2: ip_state[0]: bit6~7 */ ++ if ((ip_state[0] & FAIL_CPU_CLUSTER2) == FAIL_CPU_CLUSTER2) { ++ log_debug("remove cpu-map cluster2\n"); ++ fdt_path_del_node(blob, "/cpus/cpu-map/cluster2"); ++ } else if (cluster1_removed) { ++ /* cluster nodes must be named in a continuous series */ ++ log_debug("rename cpu-map cluster2\n"); ++ fdt_path_set_name(blob, "/cpus/cpu-map/cluster2", "cluster1"); ++ } ++ ++ /* gpu: ip_state[1]: bit1~4 */ ++ if (ip_state[1] & FAIL_GPU) { ++ log_debug("fail gpu\n"); ++ fdt_status_fail_by_pathf(blob, "/gpu@fb000000"); ++ } ++ ++ /* rkvdec: ip_state[1]: bit6,7 */ ++ if (ip_state[1] & FAIL_RKVDEC0) { ++ log_debug("fail rkvdec0\n"); ++ fdt_status_fail_by_pathf(blob, "/video-codec@fdc38000"); ++ fdt_status_fail_by_pathf(blob, "/iommu@fdc38700"); ++ } ++ if (ip_state[1] & FAIL_RKVDEC1) { ++ log_debug("fail rkvdec1\n"); ++ fdt_status_fail_by_pathf(blob, "/video-codec@fdc40000"); ++ fdt_status_fail_by_pathf(blob, "/iommu@fdc40700"); ++ } ++ ++ /* rkvenc: ip_state[2]: bit0,2 */ ++ if (ip_state[2] & FAIL_RKVENC0) { ++ log_debug("fail rkvenc0\n"); ++ fdt_status_fail_by_pathf(blob, "/video-codec@fdbd0000"); ++ fdt_status_fail_by_pathf(blob, "/iommu@fdbdf000"); ++ } ++ if (ip_state[2] & FAIL_RKVENC1) { ++ log_debug("fail rkvenc1\n"); ++ fdt_status_fail_by_pathf(blob, "/video-codec@fdbe0000"); ++ fdt_status_fail_by_pathf(blob, "/iommu@fdbef000"); ++ } ++ ++ parent = fdt_path_offset(blob, "/cpus"); ++ if (parent < 0) { ++ log_err("Could not find /cpus, parent=%d\n", parent); ++ return parent; ++ } ++ ++ /* cpu: ip_state[0]: bit0~7 */ ++ for (i = 0; i < 8; i++) { ++ /* fail any bad cpu core */ ++ if (!(ip_state[0] & BIT(i))) ++ continue; ++ ++ node = fdt_subnode_offset(blob, parent, cpu_node_names[i]); ++ if (node >= 0) { ++ log_debug("fail cpu %s\n", cpu_node_names[i]); ++ fdt_status_fail(blob, node); ++ } else { ++ log_err("Could not find %s, node=%d\n", ++ cpu_node_names[i], node); ++ return node; ++ } ++ } ++ ++ node = fdt_path_offset(blob, "/"); ++ if (node < 0) { ++ log_err("Could not find /, node=%d\n", node); ++ return node; ++ } ++ ++ snprintf(soc_comp, sizeof(soc_comp), "rockchip,rk35%x", cpu_code[1]); ++ ++ for (i = 0, comp_len = 0; ++ (comp = fdt_stringlist_get(blob, node, "compatible", i, &len)); ++ i++) { ++ /* stop at soc compatible */ ++ if (!strcmp(comp, soc_comp) || ++ !strcmp(comp, "rockchip,rk3588s") || ++ !strcmp(comp, "rockchip,rk3588")) ++ break; ++ ++ log_debug("compatible[%d]: %s\n", i, comp); ++ comp_len += len + 1; ++ } ++ ++ /* truncate to only include board compatible */ ++ fdt_setprop_placeholder(blob, node, "compatible", comp_len, &data); ++ ++ /* append soc compatible */ ++ fdt_appendprop_string(blob, node, "compatible", soc_comp); ++ fdt_appendprop_string(blob, node, "compatible", "rockchip,rk3588s"); ++ ++ return 0; ++} diff --git a/patch/u-boot/v2026.01/board_radxa-e52c/0001-rk3588-generic-support-for-rk3582.patch b/patch/u-boot/v2026.01/board_radxa-e52c/0001-rk3588-generic-support-for-rk3582.patch new file mode 100644 index 0000000000..24ebe0ec35 --- /dev/null +++ b/patch/u-boot/v2026.01/board_radxa-e52c/0001-rk3588-generic-support-for-rk3582.patch @@ -0,0 +1,86 @@ +From 51dd17cd676857da04752910adfeca6bac8977a8 Mon Sep 17 00:00:00 2001 +From: Jonas Karlman +Date: Wed, 7 Jan 2026 23:07:40 +0000 +Subject: [PATCH] rockchip: rk3588-generic: Enable support for RK3582 + +Add Kconfig option OF_SYSTEM_SETUP=y to support booting boards with a +RK3582 SoC. CPU and GPU cores are failed based on ip-state and policy. + +Tested on a ROCK 5C Lite v1.1: + + cpu-code: 35 82 + ip-state: 10 00 00 (otp) + ip-state: 30 9e 04 (policy) + remove cpu-map cluster1 + rename cpu-map cluster2 + fail gpu + fail rkvdec1 + fail rkvenc1 + fail cpu cpu@400 + fail cpu cpu@500 + +and on a Radxa E52C: + + cpu-code: 35 82 + ip-state: 00 04 00 (otp) + ip-state: c0 9e 04 (policy) + remove cpu-map cluster2 + fail gpu + fail rkvdec1 + fail rkvenc1 + fail cpu cpu@600 + fail cpu cpu@700 + +Signed-off-by: Jonas Karlman +Reviewed-by: Quentin Schulz +--- + arch/arm/dts/rk3588-generic.dts | 4 ++-- + configs/generic-rk3588_defconfig | 1 + + doc/board/rockchip/rockchip.rst | 2 +- + 3 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/dts/rk3588-generic.dts b/arch/arm/dts/rk3588-generic.dts +index 6740f9866f17..04144e2ad128 100644 +--- a/arch/arm/dts/rk3588-generic.dts ++++ b/arch/arm/dts/rk3588-generic.dts +@@ -1,13 +1,13 @@ + // SPDX-License-Identifier: (GPL-2.0+ OR MIT) + /* +- * Minimal generic DT for RK3588S/RK3588 with eMMC, SD-card and USB OTG enabled ++ * Minimal generic DT for RK3582/RK3588S/RK3588 with eMMC, SD-card and USB OTG enabled + */ + + /dts-v1/; + #include "rk3588s.dtsi" + + / { +- model = "Generic RK3588S/RK3588"; ++ model = "Generic RK3582/RK3588S/RK3588"; + compatible = "rockchip,rk3588"; + + aliases { +diff --git a/configs/generic-rk3588_defconfig b/configs/generic-rk3588_defconfig +index dfa8efabe6be..7a8c176912e1 100644 +--- a/configs/generic-rk3588_defconfig ++++ b/configs/generic-rk3588_defconfig +@@ -16,6 +16,7 @@ CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_SPL_LOAD_FIT=y + # CONFIG_BOOTMETH_VBE is not set + CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_OF_SYSTEM_SETUP=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588-generic.dtb" + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_SPL_MAX_SIZE=0x40000 +diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst +index 6ae4d4371ff6..886df1c39cbc 100644 +--- a/doc/board/rockchip/rockchip.rst ++++ b/doc/board/rockchip/rockchip.rst +@@ -154,7 +154,7 @@ List of mainline supported Rockchip boards: + - FriendlyElec NanoPi R6C (nanopi-r6c-rk3588s) + - FriendlyElec NanoPi R6S (nanopi-r6s-rk3588s) + - GameForce Ace (gameforce-ace-rk3588s) +- - Generic RK3588S/RK3588 (generic-rk3588) ++ - Generic RK3582/RK3588S/RK3588 (generic-rk3588) + - Hardkernel ODROID-M2 (odroid-m2-rk3588s) + - Indiedroid Nova (nova-rk3588s) + - Khadas Edge2 (khadas-edge2-rk3588s) diff --git a/patch/u-boot/v2026.01/board_radxa-e52c/1000-add-support-for-radxa-e52c.patch b/patch/u-boot/v2026.01/board_radxa-e52c/1000-add-support-for-radxa-e52c.patch new file mode 100644 index 0000000000..315e8b9d12 --- /dev/null +++ b/patch/u-boot/v2026.01/board_radxa-e52c/1000-add-support-for-radxa-e52c.patch @@ -0,0 +1,159 @@ +From 7bb408061a496cb3c56825da82342ae8d2e4602b Mon Sep 17 00:00:00 2001 +From: FUKAUMI Naoki +Date: Sat, 10 Jan 2026 01:15:05 +0000 +Subject: [PATCH] rockchip: Add support for Radxa E52C + +The Radxa E52C is a compact network computer developed by Radxa, based +on the Rockchip RK3582 SoC. [1] + +Specification: +- Dual Cortex-A76 and Quad Cortex-A55 cores +- 5TOPS NPU +- Up to 8GB LPDDR4x RAM +- Up to 64GB eMMC +- microSD card slot +- USB 3.0 Type-A OTG port +- USB Type-C debug port (USB-UART) +- USB Type-C power port (5V) +- 2x Gigabit Ethernet ports +- Maskrom and User buttons +- Aluminum alloy case + +[1] https://dl.radxa.com/e/e52c/radxa_e52c_product_brief.pdf + +Signed-off-by: FUKAUMI Naoki +Reviewed-by: Christopher Obbard +Reviewed-by: Jonas Karlman +--- + arch/arm/dts/rk3582-radxa-e52c-u-boot.dtsi | 24 +++++++ + configs/radxa-e52c-rk3582_defconfig | 77 ++++++++++++++++++++++ + doc/board/rockchip/rockchip.rst | 1 + + 3 files changed, 102 insertions(+) + create mode 100644 arch/arm/dts/rk3582-radxa-e52c-u-boot.dtsi + create mode 100644 configs/radxa-e52c-rk3582_defconfig + +diff --git a/arch/arm/dts/rk3582-radxa-e52c-u-boot.dtsi b/arch/arm/dts/rk3582-radxa-e52c-u-boot.dtsi +new file mode 100644 +index 00000000000..dd65cdd250f +--- /dev/null ++++ b/arch/arm/dts/rk3582-radxa-e52c-u-boot.dtsi +@@ -0,0 +1,24 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2026 Radxa Computer (Shenzhen) Co., Ltd. ++ */ ++ ++#include "rk3588s-u-boot.dtsi" ++ ++/ { ++ leds-0 { ++ led-1 { ++ default-state = "on"; ++ gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_LOW>; ++ }; ++ ++ led-2 { ++ default-state = "on"; ++ gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++}; ++ ++&sdhci { ++ mmc-hs200-1_8v; ++}; +diff --git a/configs/radxa-e52c-rk3582_defconfig b/configs/radxa-e52c-rk3582_defconfig +new file mode 100644 +index 00000000000..5c1056867f2 +--- /dev/null ++++ b/configs/radxa-e52c-rk3582_defconfig +@@ -0,0 +1,77 @@ ++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/rk3582-radxa-e52c" ++CONFIG_ROCKCHIP_RK3588=y ++CONFIG_SPL_SERIAL=y ++CONFIG_TARGET_EVB_RK3588=y ++CONFIG_SYS_LOAD_ADDR=0xc00800 ++CONFIG_DEBUG_UART_BASE=0xFEB50000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_PCI=y ++CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_OF_SYSTEM_SETUP=y ++CONFIG_DEFAULT_FDT_FILE="rockchip/rk3582-radxa-e52c.dtb" ++# CONFIG_DISPLAY_CPUINFO is not set ++CONFIG_SPL_MAX_SIZE=0x40000 ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++CONFIG_SPL_ATF=y ++CONFIG_CMD_MEMINFO=y ++CONFIG_CMD_MEMINFO_MAP=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_MISC=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++# CONFIG_CMD_SETEXPR is not set ++CONFIG_CMD_RNG=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_ADC is not set ++CONFIG_SPL_CLK=y ++CONFIG_ROCKCHIP_GPIO=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_PHYLIB=y ++CONFIG_RTL8169=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_SPL_RAM=y ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_SYS_NS16550_MEM32=y ++CONFIG_ROCKCHIP_SPI=y ++CONFIG_SYSRESET=y ++CONFIG_SYSRESET_PSCI=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_DWC3=y ++CONFIG_USB_DWC3_GENERIC=y ++CONFIG_ERRNO_STR=y +diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst +index 7a8532b49fc..2fd7d687d2e 100644 +--- a/doc/board/rockchip/rockchip.rst ++++ b/doc/board/rockchip/rockchip.rst +@@ -160,6 +160,7 @@ List of mainline supported Rockchip boards: + - Khadas Edge2 (khadas-edge2-rk3588s) + - MNT Reform2 (mnt-reform2-rk3588) + - Pine64 QuartzPro64 (quartzpro64-rk3588) ++ - Radxa E52C (radxa-e52c-rk3582) + - Radxa ROCK 5 ITX (rock-5-itx-rk3588) + - Radxa ROCK 5A (rock5a-rk3588s) + - Radxa ROCK 5B/5B+/5T (rock5b-rk3588)