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.ojw6tcso2fofg...@pengutronix.de
> Signed-off-by: Marc Kleine-Budde <m...@pengutronix.de>

Sean, what about this approach compared to adding the new command line
parameter?

Marc

> ---
>  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
> 
> 
> 

-- 
Pengutronix e.K.                 | Marc Kleine-Budde           |
Embedded Linux                   | https://www.pengutronix.de  |
Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |

Attachment: signature.asc
Description: PGP signature

Reply via email to