image: Add CONFIG_FIT_SPL_PRINT to control FIT image printing in SPL
authorSimon Glass <sjg@chromium.org>
Wed, 8 May 2013 08:05:59 +0000 (08:05 +0000)
committerTom Rini <trini@ti.com>
Tue, 14 May 2013 19:37:25 +0000 (15:37 -0400)
This code is very large, and in SPL it isn't always useful to print
out image information (in fact there might not even be a console
active). So disable this feature unless this option is set.

Signed-off-by: Simon Glass <sjg@chromium.org>
README
common/image-fit.c
include/image.h

diff --git a/README b/README
index defdedbef1e90f6783957e8980dfcebba40be9ee..d832bcbb7c62e5bef5dbac9d36ebc6c4a6e60495 100644 (file)
--- a/README
+++ b/README
@@ -2997,6 +2997,12 @@ FIT uImage format:
                use an arch-specific makefile fragment instead, for
                example if more than one image needs to be produced.
 
+               CONFIG_FIT_SPL_PRINT
+               Printing information about a FIT image adds quite a bit of
+               code to SPL. So this is normally disabled in SPL. Use this
+               option to re-enable it. This will affect the output of the
+               bootm command when booting a FIT image.
+
 Modem Support:
 --------------
 
index ec7b038dbe4b362ca86c4162fcd5537e6a9dd7f9..254feecaad7cf807bf905aabfc49f806bc92f70c 100644 (file)
@@ -124,6 +124,7 @@ static void fit_get_debug(const void *fit, int noffset,
              fdt_strerror(err));
 }
 
+#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_FIT_SPL_PRINT)
 /**
  * fit_print_contents - prints out the contents of the FIT format image
  * @fit: pointer to the FIT format image header
@@ -402,6 +403,7 @@ void fit_image_print(const void *fit, int image_noffset, const char *p)
                }
        }
 }
+#endif
 
 /**
  * fit_get_desc - get node description property
@@ -852,16 +854,16 @@ int fit_set_timestamp(void *fit, int noffset, time_t timestamp)
 int calculate_hash(const void *data, int data_len, const char *algo,
                        uint8_t *value, int *value_len)
 {
-       if (strcmp(algo, "crc32") == 0) {
+       if (IMAGE_ENABLE_CRC32 && strcmp(algo, "crc32") == 0) {
                *((uint32_t *)value) = crc32_wd(0, data, data_len,
                                                        CHUNKSZ_CRC32);
                *((uint32_t *)value) = cpu_to_uimage(*((uint32_t *)value));
                *value_len = 4;
-       } else if (strcmp(algo, "sha1") == 0) {
+       } else if (IMAGE_ENABLE_SHA1 && strcmp(algo, "sha1") == 0) {
                sha1_csum_wd((unsigned char *)data, data_len,
                             (unsigned char *)value, CHUNKSZ_SHA1);
                *value_len = 20;
-       } else if (strcmp(algo, "md5") == 0) {
+       } else if (IMAGE_ENABLE_MD5 && strcmp(algo, "md5") == 0) {
                md5_wd((unsigned char *)data, data_len, value, CHUNKSZ_MD5);
                *value_len = 16;
        } else {
index 27c977e534780d0a2cfaf5bf24a17ae6993fa4a6..bfce86186e78bc4b9e5080f01f695419db38feae 100644 (file)
 #if defined(CONFIG_FIT)
 #include <libfdt.h>
 #include <fdt_support.h>
-#define CONFIG_MD5             /* FIT images need MD5 support */
-#define CONFIG_SHA1            /* and SHA1 */
+# ifdef CONFIG_SPL_BUILD
+#  ifdef CONFIG_SPL_CRC32_SUPPORT
+#   define IMAGE_ENABLE_CRC32  1
+#  endif
+#  ifdef CONFIG_SPL_MD5_SUPPORT
+#   define IMAGE_ENABLE_MD5    1
+#  endif
+#  ifdef CONFIG_SPL_SHA1_SUPPORT
+#   define IMAGE_ENABLE_SHA1   1
+#  endif
+# else
+#  define CONFIG_CRC32         /* FIT images need CRC32 support */
+#  define CONFIG_MD5           /* and MD5 */
+#  define CONFIG_SHA1          /* and SHA1 */
+#  define IMAGE_ENABLE_CRC32   1
+#  define IMAGE_ENABLE_MD5     1
+#  define IMAGE_ENABLE_SHA1    1
+# endif
+
+#ifndef IMAGE_ENABLE_CRC32
+#define IMAGE_ENABLE_CRC32     0
+#endif
+
+#ifndef IMAGE_ENABLE_MD5
+#define IMAGE_ENABLE_MD5       0
+#endif
+
+#ifndef IMAGE_ENABLE_SHA1
+#define IMAGE_ENABLE_SHA1      0
+#endif
+
 #endif
 
 /*