spl: Allow disabling binman symbols in SPL
authorSimon Glass <sjg@chromium.org>
Tue, 8 Feb 2022 18:49:48 +0000 (11:49 -0700)
committerSimon Glass <sjg@chromium.org>
Tue, 22 Feb 2022 17:05:44 +0000 (10:05 -0700)
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>
common/spl/Kconfig
common/spl/spl.c

index e0d0a6f..9418d37 100644 (file)
@@ -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
index 4449074..b452d4f 100644 (file)
@@ -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)
 {