[PATCH v2 29/32] tools: mtk_image: split gfh header verification into a new function

Daniel Golle daniel at makrotopia.org
Thu Sep 1 02:31:48 CEST 2022


On Wed, Aug 31, 2022 at 07:05:22PM +0800, Weijie Gao wrote:
> The verification code of gfh header for NAND and non-NAND are identical.
> It's better to define a individual function to reduce redundancy.

Tested ARM Trusted Firmware-A bl2 images generated for
Bananapi R64 (MT7622; eMMC, SDMMC, SPI-NAND),
UniFi 6 LR (MT7622; SPI-NOR) and
Bananapi BPi-R3 (MT7986A; eMMC, SDMMC, SPI-NAND, SPI-NOR).
Also tested MT7621 images still work fine on ZBT-WG3526 (MT7621; SPI-NOR).

Tested-by: Daniel Golle <daniel at makrotopia.org>

> 
> Reviewed-by: Simon Glass <sjg at chromium.org>
> Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
> ---
> v2 changes: none
> ---
>  tools/mtk_image.c | 51 +++++++++++++++++++----------------------------
>  1 file changed, 21 insertions(+), 30 deletions(-)
> 
> diff --git a/tools/mtk_image.c b/tools/mtk_image.c
> index de5ce4d964..dcd6525f32 100644
> --- a/tools/mtk_image.c
> +++ b/tools/mtk_image.c
> @@ -480,6 +480,25 @@ static int mtk_image_vrec_header(struct image_tool_params *params,
>  	return SHA256_SUM_LEN;
>  }
>  
> +static int mtk_image_verify_gfh(struct gfh_header *gfh, uint32_t type, int print)
> +{
> +	if (strcmp(gfh->file_info.name, GFH_FILE_INFO_NAME))
> +		return -1;
> +
> +	if (le32_to_cpu(gfh->file_info.flash_type) != type)
> +		return -1;
> +
> +	if (print)
> +		printf("Load Address: %08x\n",
> +		       le32_to_cpu(gfh->file_info.load_addr) +
> +		       le32_to_cpu(gfh->file_info.jump_offset));
> +
> +	if (print)
> +		printf("Architecture: %s\n", is_arm64_image ? "ARM64" : "ARM");
> +
> +	return 0;
> +}
> +
>  static int mtk_image_verify_gen_header(const uint8_t *ptr, int print)
>  {
>  	union gen_boot_header *gbh = (union gen_boot_header *)ptr;
> @@ -542,21 +561,7 @@ static int mtk_image_verify_gen_header(const uint8_t *ptr, int print)
>  
>  	gfh = (struct gfh_header *)(ptr + gfh_offset);
>  
> -	if (strcmp(gfh->file_info.name, GFH_FILE_INFO_NAME))
> -		return -1;
> -
> -	if (le32_to_cpu(gfh->file_info.flash_type) != GFH_FLASH_TYPE_GEN)
> -		return -1;
> -
> -	if (print)
> -		printf("Load Address: %08x\n",
> -		       le32_to_cpu(gfh->file_info.load_addr) +
> -		       le32_to_cpu(gfh->file_info.jump_offset));
> -
> -	if (print)
> -		printf("Architecture: %s\n", is_arm64_image ? "ARM64" : "ARM");
> -
> -	return 0;
> +	return mtk_image_verify_gfh(gfh, GFH_FLASH_TYPE_GEN, print);
>  }
>  
>  static int mtk_image_verify_nand_header(const uint8_t *ptr, int print)
> @@ -610,21 +615,7 @@ static int mtk_image_verify_nand_header(const uint8_t *ptr, int print)
>  
>  	gfh = (struct gfh_header *)(ptr + 2 * le16_to_cpu(nh->pagesize));
>  
> -	if (strcmp(gfh->file_info.name, GFH_FILE_INFO_NAME))
> -		return -1;
> -
> -	if (le32_to_cpu(gfh->file_info.flash_type) != GFH_FLASH_TYPE_NAND)
> -		return -1;
> -
> -	if (print)
> -		printf("Load Address: %08x\n",
> -		       le32_to_cpu(gfh->file_info.load_addr) +
> -		       le32_to_cpu(gfh->file_info.jump_offset));
> -
> -	if (print)
> -		printf("Architecture: %s\n", is_arm64_image ? "ARM64" : "ARM");
> -
> -	return 0;
> +	return mtk_image_verify_gfh(gfh, GFH_FLASH_TYPE_NAND, print);
>  }
>  
>  static uint32_t crc32be_cal(const void *data, size_t length)
> -- 
> 2.17.1
> 


More information about the U-Boot mailing list