[PATCH RFC 17/18] rockchip: rk356x-generic: Initialize SDRAM at TPL stage

Pavel Golikov paullo612 at ya.ru
Sun May 17 21:24:43 CEST 2026


Only LPDDR4 initialization is confirmed to be working for now.

Signed-off-by: Pavel Golikov <paullo612 at ya.ru>
---
 arch/arm/mach-rockchip/Kconfig        | 28 +++++++++++++++++++++++++++-
 arch/arm/mach-rockchip/rk3568/Kconfig | 16 ++++++++++++++++
 common/spl/Kconfig.tpl                |  1 +
 configs/generic-rk3568_defconfig      |  1 +
 4 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index 108713488af..9a6a580025e 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -413,11 +413,15 @@ config ROCKCHIP_RK3528
 config ROCKCHIP_RK3568
 	bool "Support Rockchip RK3568"
 	select ARM64
+	select SUPPORT_TPL
+	select TPL_HAVE_INIT_STACK if TPL
+	select TPL_ROCKCHIP_BACK_TO_BROM if TPL
 	select SUPPORT_SPL
 	select SPL
 	select CLK
 	select PINCTRL
 	select RAM
+	select ROCKCHIP_SDRAM_COMMON
 	select REGMAP
 	select SYSCON
 	select BOARD_LATE_INIT
@@ -433,10 +437,32 @@ config ROCKCHIP_RK3568
 	imply RNG_ROCKCHIP
 	imply ROCKCHIP_COMMON_BOARD
 	imply ROCKCHIP_COMMON_STACK_ADDR
-	imply ROCKCHIP_EXTERNAL_TPL
 	imply ROCKCHIP_OTP
+	imply ROCKCHIP_SERIAL if !ROCKCHIP_EXTERNAL_TPL
 	imply SPL_ATF_NO_PLATFORM_PARAM if SPL_ATF
 	imply SPL_MMC_HS200_SUPPORT if SPL_MMC && MMC_HS200_SUPPORT
+	imply TPL if !ROCKCHIP_EXTERNAL_TPL
+	imply TPL_CLK
+	imply TPL_DM
+	imply TPL_LIBCOMMON_SUPPORT
+	imply TPL_LIBGENERIC_SUPPORT
+	imply TPL_OF_CONTROL
+	imply TPL_OF_PLATDATA
+	imply TPL_RAM
+	imply TPL_ROCKCHIP_COMMON_BOARD
+	imply TPL_SERIAL
+	imply TPL_SYSCON
+	imply SPL_CLK
+	imply SPL_DM
+	imply SPL_DRIVERS_MISC
+	imply SPL_LIBCOMMON_SUPPORT
+	imply SPL_LIBGENERIC_SUPPORT
+	imply SPL_OF_CONTROL
+	imply SPL_RAM
+	imply SPL_REGMAP
+	imply SPL_ROCKCHIP_COMMON_BOARD
+	imply SPL_SERIAL
+	imply SPL_SYSCON
 	help
 	  The Rockchip RK3568 is a ARM-based SoC with quad-core Cortex-A55,
 	  including NEON and GPU, 512K L3 cache, Mali-G52 based graphics,
diff --git a/arch/arm/mach-rockchip/rk3568/Kconfig b/arch/arm/mach-rockchip/rk3568/Kconfig
index 2730220a18e..893185291d8 100644
--- a/arch/arm/mach-rockchip/rk3568/Kconfig
+++ b/arch/arm/mach-rockchip/rk3568/Kconfig
@@ -61,6 +61,10 @@ config TARGET_ORANGEPI_3B_RK3566
 
 endchoice
 
+config SOC_SPECIFIC_OPTIONS # dummy
+	def_bool y
+	select HAS_CUSTOM_SYS_INIT_SP_ADDR
+
 config ROCKCHIP_BOOT_MODE_REG
 	default 0xfdc20200
 
@@ -70,6 +74,18 @@ config ROCKCHIP_STIMER_BASE
 config SYS_SOC
 	default "rk3568"
 
+config TPL_LDSCRIPT
+	default "arch/arm/mach-rockchip/u-boot-tpl-v8.lds"
+
+config TPL_STACK
+	default 0xfdcd8000
+
+config TPL_SYS_MALLOC_F_LEN
+	default 0x2000
+
+config TPL_TEXT_BASE
+	default 0xfdcc1000
+
 source "board/rockchip/evb_rk3568/Kconfig"
 source "board/anbernic/rgxx3_rk3566/Kconfig"
 source "board/hardkernel/odroid_m1/Kconfig"
diff --git a/common/spl/Kconfig.tpl b/common/spl/Kconfig.tpl
index a535b61ecd3..e64316b8eb3 100644
--- a/common/spl/Kconfig.tpl
+++ b/common/spl/Kconfig.tpl
@@ -127,6 +127,7 @@ config TPL_TEXT_BASE
 config TPL_MAX_SIZE
 	hex "Maximum size (in bytes) for the TPL stage"
 	default 0x2e000 if ROCKCHIP_RK3399
+	default 0xe800 if ROCKCHIP_RK3568
 	default 0x8000 if ROCKCHIP_RK3288 || ROCKCHIP_RV1126
 	default 0x7000 if ROCKCHIP_RK322X || ROCKCHIP_RK3328 || ROCKCHIP_RK3368
 	default 0x2800 if ROCKCHIP_PX30
diff --git a/configs/generic-rk3568_defconfig b/configs/generic-rk3568_defconfig
index a33c3af9255..4510fa94775 100644
--- a/configs/generic-rk3568_defconfig
+++ b/configs/generic-rk3568_defconfig
@@ -81,3 +81,4 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_USB_FUNCTION_ROCKUSB=y
 CONFIG_ERRNO_STR=y
+CONFIG_RAM_ROCKCHIP_LPDDR4=y

-- 
2.25.1



More information about the U-Boot mailing list