[RFC PATCH 2/7] spl: Convert ext to use spl_load

Stefan Roese sr at denx.de
Wed Apr 6 07:32:13 CEST 2022


On 4/1/22 21:04, Sean Anderson wrote:
> This converts the ext load method to use spl_load. As a consequence, it
> also adds support for FIT and IMX images.
> 
> Signed-off-by: Sean Anderson <sean.anderson at seco.com>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
> 
>   common/spl/spl_ext.c | 24 +++++++++++++++++-------
>   1 file changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/common/spl/spl_ext.c b/common/spl/spl_ext.c
> index ebd914c492..1384842776 100644
> --- a/common/spl/spl_ext.c
> +++ b/common/spl/spl_ext.c
> @@ -9,6 +9,18 @@
>   #include <errno.h>
>   #include <image.h>
>   
> +static ulong spl_fit_read(struct spl_load_info *load, ulong file_offset,
> +			  ulong size, void *buf)
> +{
> +	int ret;
> +	loff_t actlen;
> +
> +	ret = ext4fs_read(buf, file_offset, size, &actlen);
> +	if (ret)
> +		return ret;
> +	return actlen;
> +}
> +
>   int spl_load_image_ext(struct spl_image_info *spl_image,
>   		       struct spl_boot_device *bootdev,
>   		       struct blk_desc *block_dev, int partition,
> @@ -18,6 +30,10 @@ int spl_load_image_ext(struct spl_image_info *spl_image,
>   	struct image_header *header;
>   	loff_t filelen, actlen;
>   	struct disk_partition part_info = {};
> +	struct spl_load_info load = {
> +		.read = spl_fit_read,
> +		.bl_len = 1,
> +	};
>   
>   	header = spl_get_load_buffer(-sizeof(*header), sizeof(*header));
>   
> @@ -47,13 +63,7 @@ int spl_load_image_ext(struct spl_image_info *spl_image,
>   		goto end;
>   	}
>   
> -	err = spl_parse_image_header(spl_image, bootdev, header);
> -	if (err < 0) {
> -		puts("spl: ext: failed to parse image header\n");
> -		goto end;
> -	}
> -
> -	err = ext4fs_read((char *)spl_image->load_addr, 0, filelen, &actlen);
> +	err = spl_load(spl_image, bootdev, &load, header, filelen, 0);
>   
>   end:
>   #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list