From 22b7b860051d3f18cfd3bb9750b907174b3eee2b Mon Sep 17 00:00:00 2001 From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> Date: Tue, 16 Jul 2019 10:12:02 +0200 Subject: [PATCH] spl: separate SPL_FRAMEWORK config for spl and tpl Right now enabling SPL_FRAMEWORK will also enable it for the TPL in all cases, making the TPL bigger. There may be cases where the TPL is really size constrained due to its underlying ram size. Therefore introduce a new TPL_FRAMEWORK option and make the relevant conditionals check for both. The default is set to "y if SPL_FRAMEWORK" to mimic the previous behaviour where the TPL would always get the SPL framework if it was enabled in SPL. Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com> --- arch/arm/lib/Makefile | 2 +- arch/arm/lib/crt0.S | 2 +- arch/arm/lib/crt0_64.S | 2 ++ arch/powerpc/lib/Makefile | 2 +- common/spl/Kconfig | 8 ++++++++ common/spl/Makefile | 2 +- scripts/Makefile.spl | 4 ++++ 7 files changed, 18 insertions(+), 4 deletions(-) diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index 48ee6c3c603..9de9a9acee7 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -35,7 +35,7 @@ obj-$(CONFIG_CMD_BOOTM) += bootm.o obj-$(CONFIG_CMD_BOOTZ) += bootm.o zimage.o obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o else -obj-$(CONFIG_SPL_FRAMEWORK) += spl.o +obj-$(CONFIG_$(SPL_TPL_)FRAMEWORK) += spl.o obj-$(CONFIG_SPL_FRAMEWORK) += zimage.o obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o endif diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S index c74641dcd9b..fb6c37cf519 100644 --- a/arch/arm/lib/crt0.S +++ b/arch/arm/lib/crt0.S @@ -149,7 +149,7 @@ here: bl c_runtime_cpu_setup /* we still call old routine here */ #endif -#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_FRAMEWORK) +#if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(FRAMEWORK) #if !defined(CONFIG_SPL_EARLY_BSS) SPL_CLEAR_BSS diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S index e76b25a03e8..04afa518acf 100644 --- a/arch/arm/lib/crt0_64.S +++ b/arch/arm/lib/crt0_64.S @@ -120,6 +120,7 @@ relocation_return: */ bl c_runtime_cpu_setup /* still call old routine */ #endif /* !CONFIG_SPL_BUILD */ +#if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(FRAMEWORK) #if defined(CONFIG_SPL_BUILD) bl spl_relocate_stack_gd /* may return NULL */ /* set up gd here, outside any C code, if new stack is returned */ @@ -152,5 +153,6 @@ clear_loop: b board_init_r /* PC relative jump */ /* NOTREACHED - board_init_r() does not return */ +#endif ENDPROC(_main) diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile index 8ac49bdd060..01c9dd51be8 100644 --- a/arch/powerpc/lib/Makefile +++ b/arch/powerpc/lib/Makefile @@ -41,5 +41,5 @@ obj-y += time.o endif # not minimal ifdef CONFIG_SPL_BUILD -obj-$(CONFIG_SPL_FRAMEWORK) += spl.o +obj-$(CONFIG_$(SPL_TPL)_FRAMEWORK) += spl.o endif diff --git a/common/spl/Kconfig b/common/spl/Kconfig index 8f0ba8ef831..1f122833a77 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -1241,6 +1241,14 @@ config TPL_SIZE_LIMIT Specifies the maximum length of the U-Boot TPL image. If this value is zero, it is ignored. +config TPL_FRAMEWORK + bool "Support TPL based upon the common SPL framework" + default y if SPL_FRAMEWORK + help + Enable the SPL framework under common/spl/ for TPL builds. + This framework supports MMC, NAND and YMODEM and other methods + loading of U-Boot's SPL stage. If unsure, say Y. + config TPL_HANDOFF bool "Pass hand-off information from TPL to SPL and U-Boot proper" depends on HANDOFF && TPL_BLOBLIST diff --git a/common/spl/Makefile b/common/spl/Makefile index 5ce6f4ae480..eaa57f5ce5e 100644 --- a/common/spl/Makefile +++ b/common/spl/Makefile @@ -7,7 +7,7 @@ # ifdef CONFIG_SPL_BUILD -obj-$(CONFIG_SPL_FRAMEWORK) += spl.o +obj-$(CONFIG_$(SPL_TPL_)FRAMEWORK) += spl.o obj-$(CONFIG_$(SPL_TPL_)BOOTROM_SUPPORT) += spl_bootrom.o obj-$(CONFIG_$(SPL_TPL_)LOAD_FIT) += spl_fit.o obj-$(CONFIG_$(SPL_TPL_)NOR_SUPPORT) += spl_nor.o diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index f8ce7da2d28..314b02ba07d 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -71,7 +71,11 @@ HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makef libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/) libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ +ifeq ($(CONFIG_TPL_BUILD),y) +libs-$(CONFIG_TPL_FRAMEWORK) += common/spl/ +else libs-$(CONFIG_SPL_FRAMEWORK) += common/spl/ +endif libs-y += common/init/ # Special handling for a few options which support SPL/TPL -- GitLab