[PATCH 21/49] image: Drop IMAGE_ENABLE_FIT

Simon Glass
2021-05-03T23:11:08Z

Make use of the host Kconfig for FIT. With this we can use
CONFIG_IS_ENABLED(FIT) directly in the host build, so drop the unnecessary
indirection.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

arch/arm/mach-imx/hab.c | 2 +-
common/bootm.c | 10 +++++-----
common/image-board.c | 16 ++++++++--------
common/image.c | 2 +-
include/fdt_support.h | 2 +-
include/image.h | 22 +++++++++-------------
tools/Kconfig | 20 ++++++++++++++++++++
7 files changed, 45 insertions(+), 29 deletions(-)

diff --git a/arch/arm/mach-imx/hab.c b/arch/arm/mach-imx/hab.c
index 00bd157d0e0..cf522226f67 100644
--- a/arch/arm/mach-imx/hab.c
+++ b/arch/arm/mach-imx/hab.c
@@ -591,7 +591,7 @@ static ulong get_image_ivt_offset(ulong img_addr)
return (image_get_image_size((image_header_t *)img_addr)
+ 0x1000 - 1) & ~(0x1000 - 1);
#endif
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
case IMAGE_FORMAT_FIT:
return (fit_get_size(buf) + 0x1000 - 1) & ~(0x1000 - 1);
#endif
diff --git a/common/bootm.c b/common/bootm.c
index fe17d1da9e5..8d614fe140e 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -115,7 +115,7 @@ static int bootm_find_os(struct cmd_tbl *cmdtp, int flag, int argc,
images.os.arch = image_get_arch(os_hdr);
break;
#endif
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
case IMAGE_FORMAT_FIT:
if (fit_image_get_type(images.fit_hdr_os,
images.fit_noffset_os,
@@ -187,7 +187,7 @@ static int bootm_find_os(struct cmd_tbl *cmdtp, int flag, int argc,
/* Kernel entry point is the setup.bin */
} else if (images.legacy_hdr_valid) {
images.ep = image_get_ep(&images.legacy_hdr_os_copy);
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
} else if (images.fit_uname_os) {
int ret;

@@ -295,7 +295,7 @@ int bootm_find_images(int flag, int argc, char *const argv[], ulong start,
set_working_fdt_addr(map_to_sysmem(images.ft_addr));
#endif

-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
if (IS_ENABLED(CONFIG_FPGA)) {
/* find bitstreams */
ret = boot_get_fpga(argc, argv, &images, IH_ARCH_DEFAULT,
@@ -858,7 +858,7 @@ static const void *boot_get_kernel(struct cmd_tbl *cmdtp, int flag, int argc,
const void *buf;
const char *fit_uname_config = NULL;
const char *fit_uname_kernel = NULL;
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
int os_noffset;
#endif

@@ -916,7 +916,7 @@ static const void *boot_get_kernel(struct cmd_tbl *cmdtp, int flag, int argc,
bootstage_mark(BOOTSTAGE_ID_DECOMP_IMAGE);
break;
#endif
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
case IMAGE_FORMAT_FIT:
os_noffset = fit_image_load(images, img_addr,
&fit_uname_kernel, &fit_uname_config,
diff --git a/common/image-board.c b/common/image-board.c
index 0f41ede1e98..05eeaaac8b0 100644
--- a/common/image-board.c
+++ b/common/image-board.c
@@ -282,7 +282,7 @@ int genimg_get_format(const void *img_addr)
if (image_check_magic(hdr))
return IMAGE_FORMAT_LEGACY;
#endif
-#if IMAGE_ENABLE_FIT || IMAGE_ENABLE_OF_LIBFDT
+#if CONFIG_IS_ENABLED(FIT) || IMAGE_ENABLE_OF_LIBFDT
if (fdt_check_header(img_addr) == 0)
return IMAGE_FORMAT_FIT;
#endif
@@ -307,7 +307,7 @@ int genimg_get_format(const void *img_addr)
*/
int genimg_has_config(bootm_headers_t *images)
{
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
if (images->fit_uname_cfg)
return 1;
#endif
@@ -348,7 +348,7 @@ int boot_get_ramdisk(int argc, char *const argv[], bootm_headers_t *images,
#ifdef CONFIG_SUPPORT_RAW_INITRD
char *end;
#endif
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
const char *fit_uname_config = images->fit_uname_cfg;
const char *fit_uname_ramdisk = NULL;
ulong default_addr;
@@ -380,7 +380,7 @@ int boot_get_ramdisk(int argc, char *const argv[], bootm_headers_t *images,
rd_len = 0;
rd_data = 0;
} else if (select || genimg_has_config(images)) {
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
if (select) {
/*
* If the init ramdisk comes from the FIT image and
@@ -409,7 +409,7 @@ int boot_get_ramdisk(int argc, char *const argv[], bootm_headers_t *images,
debug("* ramdisk: cmdline image address = 0x%08lx\n",
rd_addr);
}
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
} else {
/* use FIT configuration provided in first bootm
* command argument. If the property is not defined,
@@ -450,7 +450,7 @@ int boot_get_ramdisk(int argc, char *const argv[], bootm_headers_t *images,
rd_load = image_get_load(rd_hdr);
break;
#endif
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
case IMAGE_FORMAT_FIT:
rd_noffset = fit_image_load(images,
rd_addr, &fit_uname_ramdisk,
@@ -623,14 +623,14 @@ error:
int boot_get_setup(bootm_headers_t *images, u8 arch,
ulong *setup_start, ulong *setup_len)
{
-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
return boot_get_setup_fit(images, arch, setup_start, setup_len);
#else
return -ENOENT;
#endif
}

-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
#if defined(CONFIG_FPGA)
int boot_get_fpga(int argc, char *const argv[], bootm_headers_t *images,
u8 arch, const ulong *ld_start, ulong * const ld_len)
diff --git a/common/image.c b/common/image.c
index 086ae609f29..f105b5e8857 100644
--- a/common/image.c
+++ b/common/image.c
@@ -18,7 +18,7 @@
#include <status_led.h>
#endif

-#if IMAGE_ENABLE_FIT || IMAGE_ENABLE_OF_LIBFDT
+#if CONFIG_IS_ENABLED(FIT) || IMAGE_ENABLE_OF_LIBFDT
#include <linux/libfdt.h>
#include <fdt_support.h>
#endif
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 46eb1dbbb24..9b2929a982e 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -7,7 +7,7 @@
#ifndef __FDT_SUPPORT_H
#define __FDT_SUPPORT_H

-#ifdef CONFIG_OF_LIBFDT
+#if !defined(USE_HOSTCC) && defined(CONFIG_OF_LIBFDT)

#include <asm/u-boot.h>
#include <linux/libfdt.h>
diff --git a/include/image.h b/include/image.h
index 61da0abace7..522e9dbff5f 100644
--- a/include/image.h
+++ b/include/image.h
@@ -25,15 +25,12 @@ struct fdt_region;

#ifdef USE_HOSTCC
#include <sys/types.h>
+#include <linux/kconfig.h>

/* new uImage format support enabled on host */
-#define IMAGE_ENABLE_FIT 1
#define IMAGE_ENABLE_OF_LIBFDT 1
#define CONFIG_FIT_VERBOSE 1 /* enable fit_format_{error,warning}() */
#define CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT 1
-#define CONFIG_FIT_SHA256
-#define CONFIG_FIT_SHA384
-#define CONFIG_FIT_SHA512

#define IMAGE_ENABLE_IGNORE 0
#define IMAGE_INDENT_STRING ""
@@ -48,12 +45,11 @@ struct fdt_region;
#define IMAGE_ENABLE_IGNORE 1
#define IMAGE_INDENT_STRING " "

-#define IMAGE_ENABLE_FIT CONFIG_IS_ENABLED(FIT)
#define IMAGE_ENABLE_OF_LIBFDT CONFIG_IS_ENABLED(OF_LIBFDT)

#endif /* USE_HOSTCC */

-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
#include <hash.h>
#include <linux/libfdt.h>
#include <fdt_support.h>
@@ -106,7 +102,7 @@ struct fdt_region;
#define IMAGE_ENABLE_SHA512 0
#endif

-#endif /* IMAGE_ENABLE_FIT */
+#endif /* FIT */

#ifdef CONFIG_SYS_BOOT_GET_CMDLINE
# define IMAGE_BOOT_GET_CMDLINE 1
@@ -379,7 +375,7 @@ typedef struct bootm_headers {
image_header_t legacy_hdr_os_copy; /* header copy */
ulong legacy_hdr_valid;

-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
const char *fit_uname_cfg; /* configuration node unit name */

void *fit_hdr_os; /* os FIT image header */
@@ -1034,7 +1030,7 @@ int booti_setup(ulong image, ulong *relocated_addr, ulong *size,

#define FIT_MAX_HASH_LEN HASH_MAX_DIGEST_SIZE

-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
/* cmdline argument format parsing */
int fit_parse_conf(const char *spec, ulong addr_curr,
ulong *addr, const char **conf_name);
@@ -1208,7 +1204,7 @@ int fit_conf_get_prop_node(const void *fit, int noffset,

int fit_check_ramdisk(const void *fit, int os_noffset,
uint8_t arch, int verify);
-#endif /* IMAGE_ENABLE_FIT */
+#endif /* FIT */

int calculate_hash(const void *data, int data_len, const char *algo,
uint8_t *value, int *value_len);
@@ -1237,7 +1233,7 @@ int calculate_hash(const void *data, int data_len, const char *algo,
# define FIT_IMAGE_ENABLE_VERIFY CONFIG_IS_ENABLED(FIT_SIGNATURE)
#endif

-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)
#ifdef USE_HOSTCC
void *image_get_host_blob(void);
void image_set_host_blob(void *host_blob);
@@ -1251,7 +1247,7 @@ void image_set_host_blob(void *host_blob);
#else
#define IMAGE_ENABLE_BEST_MATCH 0
#endif
-#endif /* IMAGE_ENABLE_FIT */
+#endif /* FIT */

/*
* Information passed to the signing routines
@@ -1389,7 +1385,7 @@ struct crypto_algo *image_get_crypto_algo(const char *full_name);
*/
struct padding_algo *image_get_padding_algo(const char *name);

-#if IMAGE_ENABLE_FIT
+#if CONFIG_IS_ENABLED(FIT)

/**
* fit_image_verify_required_sigs() - Verify signatures marked as 'required'
diff --git a/tools/Kconfig b/tools/Kconfig
index 5c3e485a298..8af66a51c09 100644
--- a/tools/Kconfig
+++ b/tools/Kconfig
@@ -24,6 +24,26 @@ config HOST_FIT_PRINT
help
Print the content of the FIT verbosely in the host build

+config HOST_FIT_SHA1
+ def_bool y
+ help
+ Support SHA256 checksum of FIT image contents in the host build
+
+config HOST_FIT_SHA256
+ def_bool y
+ help
+ Support SHA256 checksum of FIT image contents in the host build
+
+config HOST_FIT_SHA384
+ def_bool y
+ help
+ Support SHA384 checksum of FIT image contents in the host build
+
+config HOST_FIT_SHA512
+ def_bool y
+ help
+ Support SHA512 checksum of FIT image contents in the host build
+
config HOST_FIT_SIGNATURE
def_bool y
help
--
2.31.1.527.g47e6f16901-goog