Heiko,

On 2019/10/25 上午7:27, Heiko Stuebner wrote:
From: Heiko Stuebner <heiko.stueb...@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.stueb...@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


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to