From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kever Yang Date: Fri, 25 Oct 2019 09:55:28 +0800 Subject: [U-Boot] [PATCH 01/12] spl: separate SPL_FRAMEWORK config for spl and tpl In-Reply-To: <20191024232803.10338-2-heiko@sntech.de> References: <20191024232803.10338-1-heiko@sntech.de> <20191024232803.10338-2-heiko@sntech.de> Message-ID: <9ab20055-343d-1dde-1444-5e3c22b6d757@rock-chips.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: u-boot@lists.denx.de Heiko, On 2019/10/25 上午7:27, Heiko Stuebner wrote: > From: Heiko Stuebner > > 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. New TPL_FRAMEWORK looks reasonable, after this patch, only the board_init_f() is available while board_init_r() is drop, right? > Signed-off-by: Heiko Stuebner > --- > 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 48ee6c3c60..9de9a9acee 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 c74641dcd9..fb6c37cf51 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 e76b25a03e..04afa518ac 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 8ac49bdd06..01c9dd51be 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 f467eca2be..4d5c4ddc46 100644 > --- a/common/spl/Kconfig > +++ b/common/spl/Kconfig > @@ -1183,6 +1183,14 @@ config TPL > > if TPL > > +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 > diff --git a/common/spl/Makefile b/common/spl/Makefile > index 5ce6f4ae48..eaa57f5ce5 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 7af6b120b6..090c831710 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 Is it able to use code like: libs-$(CONFIG_$(SPL_TPL_)FRAMEWORK) += Thanks, - Kever > libs-y += common/init/ > > # Special handling for a few options which support SPL/TPL