rockchip: Use an external TPL binary on RK3568
Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps back to BootRom to load next stage, U-Boot SPL, into DRAM. BootRom then jumps to U-Boot SPL to continue the normal boot flow. However, there is no support to initialize DRAM on RK35xx SoCs using U-Boot TPL and instead an external TPL binary must be used to generate a bootable u-boot-rockchip.bin image. Add CONFIG_ROCKCHIP_EXTERNAL_TPL to indicate that an external TPL should be used. Build U-Boot with ROCKCHIP_TPL=/path/to/ddr.bin to generate a bootable u-boot-rockchip.bin image for RK3568. Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Tested-by: Eugen Hristev <eugen.hristev@collabora.com>
This commit is contained in:
parent
05b978be5f
commit
4773e9d5ed
4 changed files with 28 additions and 2 deletions
1
Makefile
1
Makefile
|
@ -1336,6 +1336,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \
|
|||
-a opensbi-path=${OPENSBI} \
|
||||
-a default-dt=$(default_dt) \
|
||||
-a scp-path=$(SCP) \
|
||||
-a rockchip-tpl-path=$(ROCKCHIP_TPL) \
|
||||
-a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
|
||||
-a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
|
||||
-a spl-dtb=$(CONFIG_SPL_OF_REAL) \
|
||||
|
|
|
@ -20,9 +20,12 @@
|
|||
mkimage {
|
||||
filename = "idbloader.img";
|
||||
args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
|
||||
#ifdef CONFIG_TPL
|
||||
multiple-data-files;
|
||||
|
||||
#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
|
||||
rockchip-tpl {
|
||||
};
|
||||
#elif defined(CONFIG_TPL)
|
||||
u-boot-tpl {
|
||||
};
|
||||
#endif
|
||||
|
@ -134,9 +137,12 @@
|
|||
mkimage {
|
||||
filename = "idbloader-spi.img";
|
||||
args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
|
||||
#ifdef CONFIG_TPL
|
||||
multiple-data-files;
|
||||
|
||||
#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
|
||||
rockchip-tpl {
|
||||
};
|
||||
#elif defined(CONFIG_TPL)
|
||||
u-boot-tpl {
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -401,6 +401,14 @@ config TPL_ROCKCHIP_COMMON_BOARD
|
|||
common board is a basic TPL board init which can be shared for most
|
||||
of SoCs to avoid copy-paste for different SoCs.
|
||||
|
||||
config ROCKCHIP_EXTERNAL_TPL
|
||||
bool "Use external TPL binary"
|
||||
default y if ROCKCHIP_RK3568
|
||||
help
|
||||
Some Rockchip SoCs require an external TPL to initialize DRAM.
|
||||
Enable this option and build with ROCKCHIP_TPL=/path/to/ddr.bin to
|
||||
include the external TPL in the image built by binman.
|
||||
|
||||
config ROCKCHIP_BOOT_MODE_REG
|
||||
hex "Rockchip boot mode flag register address"
|
||||
help
|
||||
|
|
|
@ -86,6 +86,8 @@ List of mainline supported Rockchip boards:
|
|||
- Radxa ROCK Pi 4 (rock-pi-4-rk3399)
|
||||
- Rockchip Evb-RK3399 (evb_rk3399)
|
||||
- Theobroma Systems RK3399-Q7 SoM - Puma (puma_rk3399)
|
||||
* rk3568
|
||||
- Rockchip Evb-RK3568 (evb-rk3568)
|
||||
* rv1108
|
||||
- Rockchip Evb-rv1108 (evb-rv1108)
|
||||
- Elgin-R1 (elgin-rv1108)
|
||||
|
@ -167,6 +169,15 @@ To build rk3399 boards:
|
|||
make evb-rk3399_defconfig
|
||||
make CROSS_COMPILE=aarch64-linux-gnu-
|
||||
|
||||
To build rk3568 boards:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export BL31=../rkbin/bin/rk35/rk3568_bl31_v1.34.elf
|
||||
export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3568_ddr_1560MHz_v1.13.bin
|
||||
make evb-rk3568_defconfig
|
||||
make CROSS_COMPILE=aarch64-linux-gnu-
|
||||
|
||||
Flashing
|
||||
--------
|
||||
|
||||
|
|
Loading…
Reference in a new issue