---
boot/image.c | 1 +
include/image.h | 1 +
tools/default_image.c | 11 +++++++++--
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/boot/image.c b/boot/image.c
index 9f95b3260a80..9d7e57dee985 100644
--- a/boot/image.c
+++ b/boot/image.c
@@ -180,6 +180,7 @@ static const table_entry_t uimage_type[] = {
{ IH_TYPE_COPRO, "copro", "Coprocessor Image"},
{ IH_TYPE_SUNXI_EGON, "sunxi_egon", "Allwinner eGON Boot Image"
},
{ IH_TYPE_SUNXI_TOC0, "sunxi_toc0", "Allwinner TOC0 Boot Image"
},
+ { IH_TYPE_FLATDT_LEGACY, "flat_dt_legacy", "Flat Device Tree legacy
Image", },
{ -1, "", "", },
};
diff --git a/include/image.h b/include/image.h
index d7d6a3fe5b81..e578e2c5f1fd 100644
--- a/include/image.h
+++ b/include/image.h
@@ -229,6 +229,7 @@ enum {
IH_TYPE_COPRO, /* Coprocessor Image for remoteproc*/
IH_TYPE_SUNXI_EGON, /* Allwinner eGON Boot Image */
IH_TYPE_SUNXI_TOC0, /* Allwinner TOC0 Boot Image */
+ IH_TYPE_FLATDT_LEGACY, /* Binary Flat Device Tree Blob in a
legacy image */
IH_TYPE_COUNT, /* Number of image types */
};
diff --git a/tools/default_image.c b/tools/default_image.c
index 4a067e65862e..3b49f0d70e29 100644
--- a/tools/default_image.c
+++ b/tools/default_image.c
@@ -27,7 +27,8 @@ static struct legacy_img_hdr header;
static int image_check_image_types(uint8_t type)
{
if (((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) ||
- (type == IH_TYPE_KERNEL_NOLOAD) || (type == IH_TYPE_FIRMWARE_IVT))
+ (type == IH_TYPE_KERNEL_NOLOAD) || (type == IH_TYPE_FIRMWARE_IVT) ||
+ (type == IH_TYPE_FLATDT_LEGACY))
return EXIT_SUCCESS;
else
return EXIT_FAILURE;
@@ -94,6 +95,7 @@ static void image_set_header(void *ptr, struct stat *sbuf,
int ifd,
uint32_t imagesize;
uint32_t ep;
uint32_t addr;
+ int type;
struct legacy_img_hdr *hdr = (struct legacy_img_hdr *)ptr;
checksum = crc32(0,
@@ -113,6 +115,11 @@ static void image_set_header(void *ptr, struct stat *sbuf,
int ifd,
else
imagesize = sbuf->st_size - sizeof(struct legacy_img_hdr);
+ if (params->type == IH_TYPE_FLATDT_LEGACY)
+ type = IH_TYPE_FLATDT;
+ else
+ type = params->type;
+
if (params->os == IH_OS_TEE) {
addr = optee_image_get_load_addr(hdr);
ep = optee_image_get_entry_point(hdr);
@@ -127,7 +134,7 @@ static void image_set_header(void *ptr, struct stat *sbuf,
int ifd,
image_set_dcrc(hdr, checksum);
image_set_os(hdr, params->os);
image_set_arch(hdr, params->arch);
- image_set_type(hdr, params->type);
+ image_set_type(hdr, type);
image_set_comp(hdr, params->comp);
image_set_name(hdr, params->imagename);
--
2.35.1