@ -140,6 +140,14 @@ static int get_aligned_image_size(struct spl_load_info *info, int data_size,
return ( data_size + info - > bl_len - 1 ) / info - > bl_len ;
return ( data_size + info - > bl_len - 1 ) / info - > bl_len ;
}
}
# ifdef CONFIG_SPL_FPGA_SUPPORT
__weak int spl_load_fpga_image ( struct spl_load_info * info , size_t length ,
int nr_sectors , int sector_offset )
{
return 0 ;
}
# endif
/**
/**
* spl_load_fit_image ( ) : load the image described in a certain FIT node
* spl_load_fit_image ( ) : load the image described in a certain FIT node
* @ info : points to information about the device to load data from
* @ info : points to information about the device to load data from
@ -161,7 +169,7 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector,
void * fit , ulong base_offset , int node ,
void * fit , ulong base_offset , int node ,
struct spl_image_info * image_info )
struct spl_image_info * image_info )
{
{
int offset ;
int offset , sector_offset ;
size_t length ;
size_t length ;
int len ;
int len ;
ulong size ;
ulong size ;
@ -209,9 +217,16 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector,
overhead = get_aligned_image_overhead ( info , offset ) ;
overhead = get_aligned_image_overhead ( info , offset ) ;
nr_sectors = get_aligned_image_size ( info , length , offset ) ;
nr_sectors = get_aligned_image_size ( info , length , offset ) ;
sector_offset = sector + get_aligned_image_offset ( info , offset ) ;
if ( info - > read ( info ,
# ifdef CONFIG_SPL_FPGA_SUPPORT
sector + get_aligned_image_offset ( info , offset ) ,
if ( type = = IH_TYPE_FPGA ) {
return spl_load_fpga_image ( info , length , nr_sectors ,
sector_offset ) ;
}
# endif
if ( info - > read ( info , sector_offset ,
nr_sectors , ( void * ) load_ptr ) ! = nr_sectors )
nr_sectors , ( void * ) load_ptr ) ! = nr_sectors )
return - EIO ;
return - EIO ;
@ -387,6 +402,20 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
return - 1 ;
return - 1 ;
}
}
# ifdef CONFIG_SPL_FPGA_SUPPORT
node = spl_fit_get_image_node ( fit , images , " fpga " , 0 ) ;
if ( node > = 0 ) {
/* Load the image and set up the spl_image structure */
ret = spl_load_fit_image ( info , sector , fit , base_offset , node ,
spl_image ) ;
if ( ret ) {
printf ( " %s: Cannot load the FPGA: %i \n " , __func__ , ret ) ;
return ret ;
}
node = - 1 ;
}
# endif
/*
/*
* Find the U - Boot image using the following search order :
* Find the U - Boot image using the following search order :
* - start at ' firmware ' ( e . g . an ARM Trusted Firmware )
* - start at ' firmware ' ( e . g . an ARM Trusted Firmware )