tools: mkimage: add new image type "fdt_legacy"
If the user select the image type "flat_dt" a FIT image will be build. This breaks the legacy use case of putting a Flat Device Tree into a legacy u-boot image. Add a new image type "fdt_legacy" to build a legacy u-boot image with a "flat_dt" type. Link: https://lore.kernel.org/all/20221028155205.ojw6tcso2fofgnhm@pengutronix.de Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Reviewed-by: Sean Anderson <seanga2@gmail.com>
This commit is contained in:
parent
72c3f5dbd9
commit
28f924f265
@ -180,6 +180,7 @@ static const table_entry_t uimage_type[] = {
|
|||||||
{ IH_TYPE_COPRO, "copro", "Coprocessor Image"},
|
{ IH_TYPE_COPRO, "copro", "Coprocessor Image"},
|
||||||
{ IH_TYPE_SUNXI_EGON, "sunxi_egon", "Allwinner eGON Boot Image" },
|
{ IH_TYPE_SUNXI_EGON, "sunxi_egon", "Allwinner eGON Boot Image" },
|
||||||
{ IH_TYPE_SUNXI_TOC0, "sunxi_toc0", "Allwinner TOC0 Boot Image" },
|
{ IH_TYPE_SUNXI_TOC0, "sunxi_toc0", "Allwinner TOC0 Boot Image" },
|
||||||
|
{ IH_TYPE_FDT_LEGACY, "fdt_legacy", "legacy Image with Flat Device Tree ", },
|
||||||
{ -1, "", "", },
|
{ -1, "", "", },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -229,6 +229,7 @@ enum image_type_t {
|
|||||||
IH_TYPE_COPRO, /* Coprocessor Image for remoteproc*/
|
IH_TYPE_COPRO, /* Coprocessor Image for remoteproc*/
|
||||||
IH_TYPE_SUNXI_EGON, /* Allwinner eGON Boot Image */
|
IH_TYPE_SUNXI_EGON, /* Allwinner eGON Boot Image */
|
||||||
IH_TYPE_SUNXI_TOC0, /* Allwinner TOC0 Boot Image */
|
IH_TYPE_SUNXI_TOC0, /* Allwinner TOC0 Boot Image */
|
||||||
|
IH_TYPE_FDT_LEGACY, /* Binary Flat Device Tree Blob in a Legacy Image */
|
||||||
|
|
||||||
IH_TYPE_COUNT, /* Number of image types */
|
IH_TYPE_COUNT, /* Number of image types */
|
||||||
};
|
};
|
||||||
|
@ -27,7 +27,8 @@ static struct legacy_img_hdr header;
|
|||||||
static int image_check_image_types(uint8_t type)
|
static int image_check_image_types(uint8_t type)
|
||||||
{
|
{
|
||||||
if (((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) ||
|
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_FDT_LEGACY))
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
else
|
else
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
@ -94,6 +95,7 @@ static void image_set_header(void *ptr, struct stat *sbuf, int ifd,
|
|||||||
uint32_t imagesize;
|
uint32_t imagesize;
|
||||||
uint32_t ep;
|
uint32_t ep;
|
||||||
uint32_t addr;
|
uint32_t addr;
|
||||||
|
int type;
|
||||||
struct legacy_img_hdr *hdr = (struct legacy_img_hdr *)ptr;
|
struct legacy_img_hdr *hdr = (struct legacy_img_hdr *)ptr;
|
||||||
|
|
||||||
checksum = crc32(0,
|
checksum = crc32(0,
|
||||||
@ -113,6 +115,11 @@ static void image_set_header(void *ptr, struct stat *sbuf, int ifd,
|
|||||||
else
|
else
|
||||||
imagesize = sbuf->st_size - sizeof(struct legacy_img_hdr);
|
imagesize = sbuf->st_size - sizeof(struct legacy_img_hdr);
|
||||||
|
|
||||||
|
if (params->type == IH_TYPE_FDT_LEGACY)
|
||||||
|
type = IH_TYPE_FLATDT;
|
||||||
|
else
|
||||||
|
type = params->type;
|
||||||
|
|
||||||
if (params->os == IH_OS_TEE) {
|
if (params->os == IH_OS_TEE) {
|
||||||
addr = optee_image_get_load_addr(hdr);
|
addr = optee_image_get_load_addr(hdr);
|
||||||
ep = optee_image_get_entry_point(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_dcrc(hdr, checksum);
|
||||||
image_set_os(hdr, params->os);
|
image_set_os(hdr, params->os);
|
||||||
image_set_arch(hdr, params->arch);
|
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_comp(hdr, params->comp);
|
||||||
|
|
||||||
image_set_name(hdr, params->imagename);
|
image_set_name(hdr, params->imagename);
|
||||||
|
Loading…
Reference in New Issue
Block a user