[PATCH v3 2/2] tools: mkimage: add new image type "fdt_legacy"

Sean Anderson seanga2 at gmail.com
Thu Nov 24 05:21:02 CET 2022


On 11/23/22 06:55, 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 "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 at pengutronix.de>
> ---
>   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 b33d1dfc6b36..958dbf853474 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_FDT_LEGACY, "fdt_legacy", "legacy Image with Flat Device Tree ", },
>   	{	-1,		    "",		  "",			},
>   };
>   
> diff --git a/include/image.h b/include/image.h
> index 65d0d4f4387d..601bf85e3dcc 100644
> --- a/include/image.h
> +++ b/include/image.h
> @@ -229,6 +229,7 @@ enum image_type_t {
>   	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_FDT_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..0ac3382003d5 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_FDT_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_FDT_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);

Reviewed-by: Sean Anderson <seanga2 at gmail.com>


More information about the U-Boot mailing list