[U-Boot] [PATCH] spl: ymodem: Add support for loading full fitImages

Lokesh Vutla lokeshvutla at ti.com
Thu Mar 7 04:59:25 UTC 2019



On 07/03/19 2:34 AM, Marek Vasut wrote:
> Add support for loading fully featured fitImages over YModem in SPL.
> This is useful when various advanced features of full fitImages are
> needed in SPL.
> 
> Signed-off-by: Marek Vasut <marex at denx.de>
> Cc: Tom Rini <trini at konsulko.com>
> ---
>  common/spl/spl_ymodem.c | 20 +++++++++++++++++++-
>  1 file changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/common/spl/spl_ymodem.c b/common/spl/spl_ymodem.c
> index 577fdc69af..4c2e84e07d 100644
> --- a/common/spl/spl_ymodem.c
> +++ b/common/spl/spl_ymodem.c
> @@ -89,7 +89,25 @@ static int spl_ymodem_load_image(struct spl_image_info *spl_image,
>  	if (res <= 0)
>  		goto end_stream;
>  
> -	if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
> +	if (IS_ENABLED(CONFIG_SPL_LOAD_FIT_FULL) &&
> +	    image_get_magic((struct image_header *)buf) == FDT_MAGIC) {
> +		addr = CONFIG_SYS_LOAD_ADDR;
> +		ih = (struct image_header *)addr;
> +
> +		memcpy((void *)addr, buf, res);
> +		size += res;
> +		addr += res;
> +
> +		while ((res = xyzModem_stream_read(buf, BUF_SIZE, &err)) > 0) {
> +			memcpy((void *)addr, buf, res);
> +			size += res;
> +			addr += res;
> +		}

okay, but you are not parsing the FIT image here. Is this even booting? or you
are doing some parsing after loading?

Also this code looks very much similar to the one available in the else part.
Can we re use it?

Thanks and regards,
Lokesh

> +
> +		ret = spl_parse_image_header(spl_image, ih);
> +		if (ret)
> +			return ret;
> +	} else if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
>  	    image_get_magic((struct image_header *)buf) == FDT_MAGIC) {
>  		struct spl_load_info load;
>  		struct ymodem_fit_info info;
> 


More information about the U-Boot mailing list