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

Marek Vasut marex at denx.de
Thu Mar 7 08:16:03 UTC 2019


On 3/7/19 5:59 AM, Lokesh Vutla wrote:
> 
> 
> 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?

Yes, it's booting since I'm using it for that purpose. I am doing some
parsing after loading, see spl_parse_image_header(spl_image, ih); right
below.

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

No, that'd become a mess real quick, I don't want to mix those two use
cases.

> 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;
>>


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list