Message ID | ecc7a5ae5cdecb9b77eb19d18a2588ef9bc2ed0d.1661941661.git.weijie.gao@mediatek.com |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
Series | Add support for MediaTek MT7981/MT7986 SoCs - v2 | expand |
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@makrotopia.org> > > Reviewed-by: Simon Glass <sjg@chromium.org> > Signed-off-by: Weijie Gao <weijie.gao@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 >
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)