summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2022-02-08 11:49:48 -0700
committerSimon Glass <sjg@chromium.org>2022-02-22 10:05:44 -0700
commit38c04d8e065c42254dbaca760a9e6d200321c15b (patch)
tree039249ede0ed2e440d109dc1bb530e06ab2c5f3d /common
parent00959d871cc8264d9e06c8cd0ee23c324699ab9e (diff)
spl: Allow disabling binman symbols in SPL
When CONFIG_SPL_FIT is enabled we do not access U-Boot directly in the image, since it is embedded in a FIT which is parsed at runtime. Provide a CONFIG option to drop the symbols in this case. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/spl/Kconfig24
-rw-r--r--common/spl/spl.c4
2 files changed, 28 insertions, 0 deletions
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index e0d0a6f77b..9418d37b2e 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -101,6 +101,18 @@ config SPL_SHOW_ERRORS
This adds a small amount to SPL code size, perhaps 100 bytes.
+config SPL_BINMAN_SYMBOLS
+ bool "Declare binman symbols in SPL"
+ depends on SPL_FRAMEWORK && BINMAN
+ default y
+ help
+ This enables use of symbols in SPL which refer to U-Boot, enabling SPL
+ to obtain the location of U-Boot simply by calling spl_get_image_pos()
+ and spl_get_image_size().
+
+ For this to work, you must have a U-Boot image in the binman image, so
+ binman can update SPL with the location of it.
+
menu "PowerPC and LayerScape SPL Boot options"
config SPL_NAND_BOOT
@@ -1321,6 +1333,18 @@ config TPL_SIZE_LIMIT
Specifies the maximum length of the U-Boot TPL image.
If this value is zero, it is ignored.
+config TPL_BINMAN_SYMBOLS
+ bool "Declare binman symbols in SPL"
+ depends on SPL_FRAMEWORK && BINMAN
+ default y
+ help
+ This enables use of symbols in TPL which refer to U-Boot, enabling SPL
+ to obtain the location of U-Boot simply by calling spl_get_image_pos()
+ and spl_get_image_size().
+
+ For this to work, you must have a U-Boot image in the binman image, so
+ binman can update SPL with the location of it.
+
config TPL_FRAMEWORK
bool "Support TPL based upon the common SPL framework"
default y if SPL_FRAMEWORK
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 444907432c..b452d4feeb 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -49,9 +49,11 @@ DECLARE_GLOBAL_DATA_PTR;
u32 *boot_params_ptr = NULL;
+#if CONFIG_IS_ENABLED(BINMAN_SYMBOLS)
/* See spl.h for information about this */
binman_sym_declare(ulong, u_boot_any, image_pos);
binman_sym_declare(ulong, u_boot_any, size);
+#endif
#ifdef CONFIG_TPL
binman_sym_declare(ulong, u_boot_spl, image_pos);
@@ -140,6 +142,7 @@ void spl_fixup_fdt(void *fdt_blob)
#endif
}
+#if CONFIG_IS_ENABLED(BINMAN_SYMBOLS)
ulong spl_get_image_pos(void)
{
return spl_phase() == PHASE_TPL ?
@@ -153,6 +156,7 @@ ulong spl_get_image_size(void)
binman_sym(ulong, u_boot_spl, size) :
binman_sym(ulong, u_boot_any, size);
}
+#endif /* BINMAN_SYMBOLS */
ulong spl_get_image_text_base(void)
{