[U-Boot] [PATCH 01/12] spl: separate SPL_FRAMEWORK config for spl and tpl
Kever Yang
kever.yang at rock-chips.com
Fri Oct 25 01:55:28 UTC 2019
Heiko,
On 2019/10/25 上午7:27, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
>
> 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 <heiko.stuebner at theobroma-systems.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 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
More information about the U-Boot
mailing list