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()?

>  }
>  SPL_LOAD_IMAGE_METHOD("NOR", 0, BOOT_DEVICE_NOR, spl_nor_load_image);
> -- 
> 2.40.1
> 

Reply via email to