On 8/3/23 04:33, Xavier Drudis Ferran wrote: > El Mon, Jul 31, 2023 at 06:43:00PM -0400, Sean Anderson deia: >> This converts the nor load method to use spl_load. As a result it also >> adds support for LOAD_FIT_FULL. >> >> Signed-off-by: Sean Anderson <sean.ander...@seco.com> >> --- >> >> Changes in v5: >> - Rework to load header in spl_load >> >> common/spl/spl_nor.c | 41 +++++++---------------------------------- >> 1 file changed, 7 insertions(+), 34 deletions(-) >> >> diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c >> index 5b65b96a77..7328a87024 100644 >> --- a/common/spl/spl_nor.c >> +++ b/common/spl/spl_nor.c >> @@ -26,8 +26,10 @@ unsigned long __weak spl_nor_get_uboot_base(void) >> static int spl_nor_load_image(struct spl_image_info *spl_image, >> struct spl_boot_device *bootdev) >> { >> - __maybe_unused const struct legacy_img_hdr *header; >> - __maybe_unused struct spl_load_info load; >> + struct spl_load_info load = { >> + .bl_len = 1, >> + .read = spl_nor_load_read, >> + }; >> >> /* >> * Loading of the payload to SDRAM is done with skipping of >> @@ -41,7 +43,8 @@ static int spl_nor_load_image(struct spl_image_info >> *spl_image, >> * Load Linux from its location in NOR flash to its defined >> * location in SDRAM >> */ >> - header = (const struct legacy_img_hdr *)CONFIG_SYS_OS_BASE; >> + const struct legacy_img_hdr *header = >> + (const struct legacy_img_hdr *)CONFIG_SYS_OS_BASE; >> #ifdef CONFIG_SPL_LOAD_FIT >> if (image_get_magic(header) == FDT_MAGIC) { >> int ret; >> @@ -91,36 +94,6 @@ static int spl_nor_load_image(struct spl_image_info >> *spl_image, >> * Load real U-Boot from its location in NOR flash to its >> * defined location in SDRAM >> */ >> -#ifdef CONFIG_SPL_LOAD_FIT >> - header = (const struct legacy_img_hdr *)spl_nor_get_uboot_base(); >> - if (image_get_magic(header) == FDT_MAGIC) { >> - debug("Found FIT format U-Boot\n"); >> - load.bl_len = 1; >> - load.read = spl_nor_load_read; >> - return spl_load_simple_fit(spl_image, &load, >> - spl_nor_get_uboot_base(), >> - (void *)header); > > this loaded the simple fit from sector=CFG_SYS_UBOOT_BASE and now we'll > call spl_load with sector=0 ? > > But spl_nor_get_uboot_base() is overriden by calculations of > concatenated images in > > arch/arm/mach-imx/image-container.c > arch/mips/mach-mtmips/mt7621/spl/spl.c > arch/mips/mach-mtmips/spl.c > >> - } >> -#endif >> - if (IS_ENABLED(CONFIG_SPL_LOAD_IMX_CONTAINER)) { >> - load.bl_len = 1; >> - load.read = spl_nor_load_read; >> - return spl_load_imx_container(spl_image, &load, >> - spl_nor_get_uboot_base()); > > this loaded the imx image from sector=CFG_SYS_UBOOT_BASE or whatever > spl_nor_get_uboot_base() gave and now we'll call spl_load with > sector=0 ? > >> - } >> - >> - /* Legacy image handling */ >> - if (IS_ENABLED(CONFIG_SPL_LEGACY_IMAGE_FORMAT)) { >> - struct legacy_img_hdr hdr; >> - >> - load.bl_len = 1; >> - load.read = spl_nor_load_read; >> - spl_nor_load_read(&load, spl_nor_get_uboot_base(), sizeof(hdr), >> &hdr); >> - return spl_load_legacy_img(spl_image, bootdev, &load, >> - spl_nor_get_uboot_base(), >> - &hdr); > > This loaded legacy image with potential lzma decompression and now > compressed images are no longer supported ? > >> - } >> - >> - return -EINVAL; >> + return spl_load(spl_image, bootdev, &load, 0, 0); > > maybe better > > + return spl_load(spl_image, bootdev, &load, 0, spl_nor_get_uboot_base()); > > > and consider calling spl_load_legacy_img(spl_image, bootdev, &info, offset, > header) > from spl_load()?
Yeah, I noticed both of these issues when Tom sent the size difference. I'm going to address these in v6. Ideally, I will incorporate the LZMA code into spl_load. --Sean >> } >> SPL_LOAD_IMAGE_METHOD("NOR", 0, BOOT_DEVICE_NOR, spl_nor_load_image); >> -- >> 2.40.1 >>