Hi On Wed, Jul 4, 2018 at 4:19 PM, Lothar Waßmann <l...@karo-electronics.de> wrote: > Hi, > > On Wed, 4 Jul 2018 15:53:36 +0200 Michael Trimarchi wrote: >> We need to address the redundat image case and undestand if the >> image is corrupted or not and fallback to the copy. The function >> used before was always return 0 without any evaluation of the >> error. We try to make it work properly >> >> Change-Id: Id6fc221c5cc08934b7324dd5d319b93c56e2e678 >> Signed-off-by: Michael Trimarchi <mich...@amarulasolutions.com> >> --- >> common/spl/spl_nand.c | 34 +++++++++++++++++++++++++--------- >> 1 file changed, 25 insertions(+), 9 deletions(-) >> >> diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c >> index 9a52500..b96fce2 100644 >> --- a/common/spl/spl_nand.c >> +++ b/common/spl/spl_nand.c >> @@ -44,9 +44,7 @@ static int spl_nand_load_element(struct spl_image_info >> *spl_image, >> { >> int err; >> >> - err = nand_spl_load_image(offset, sizeof(*header), (void *)header); >> - if (err) >> - return err; >> + nand_spl_load_image(offset, sizeof(*header), (void *)header); >> >> if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) && >> image_get_magic(header) == FDT_MAGIC) { >> @@ -59,13 +57,31 @@ static int spl_nand_load_element(struct spl_image_info >> *spl_image, >> load.bl_len = 1; >> load.read = spl_nand_fit_read; >> return spl_load_simple_fit(spl_image, &load, offset, header); >> - } else { >> - err = spl_parse_image_header(spl_image, header); >> - if (err) >> - return err; >> - return nand_spl_load_image(offset, spl_image->size, >> - (void >> *)(ulong)spl_image->load_addr); >> } >> + err = spl_parse_image_header(spl_image, header); >> + if (err) >> + return err; >> + >> + nand_spl_load_image(offset, spl_image->size, >> + (void *)(ulong)spl_image->load_addr); >> + >> + /* >> + * Logic of the error is inverted for image_check* functions. >> + * We want to verify that header is correct and the data are correct >> + * for LEGACY image type >> + */ >> + err = image_check_hcrc((const image_header_t *)spl_image->load_addr); >> + if (!err) { >> > Why not simply: > if (!image_check_hcrc(...) { >> + debug("Header checksum failed\n"); >> + return -EINVAL; >> + } >> + err = image_check_dcrc((const image_header_t *)spl_image->load_addr); >> + if (!err) { >> > dto.
Just because I want to be in the style of this file ;) Michael > >> + debug("Image checksum failed\n"); >> + return -EINVAL; >> + } >> + >> + return 0; >> } >> >> static int spl_nand_load_image(struct spl_image_info *spl_image, > > > Lothar Waßmann -- | Michael Nazzareno Trimarchi Amarula Solutions BV | | COO - Founder Cruquiuskade 47 | | +31(0)851119172 Amsterdam 1018 AM NL | | [`as] http://www.amarulasolutions.com | _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot