[PATCH v2 2/2] tools: mkimage: add new image type "flat_dt_legacy"
Sean Anderson
seanga2 at gmail.com
Thu Nov 17 06:01:19 CET 2022
On 11/16/22 05:49, Marc Kleine-Budde wrote:
> On 31.10.2022 15:51:21, Marc Kleine-Budde wrote:
>> 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 "flat_dt_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 at pengutronix.de>
>
> Sean, what about this approach compared to adding the new command line
> parameter?
>
This is good. Maybe we should just name it fdt?
--Sean
>> ---
>> 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
>>
>>
>>
>
More information about the U-Boot
mailing list