@ -1389,6 +1389,23 @@ int boot_get_fpga(int argc, char * const argv[], bootm_headers_t *images,
}
}
# endif
# endif
static void fit_loadable_process ( uint8_t img_type ,
ulong img_data ,
ulong img_len )
{
int i ;
const unsigned int count =
ll_entry_count ( struct fit_loadable_tbl , fit_loadable ) ;
struct fit_loadable_tbl * fit_loadable_handler =
ll_entry_start ( struct fit_loadable_tbl , fit_loadable ) ;
/* For each loadable handler */
for ( i = 0 ; i < count ; i + + , fit_loadable_handler + + )
/* matching this type */
if ( fit_loadable_handler - > type = = img_type )
/* call that handler with this image data */
fit_loadable_handler - > handler ( img_data , img_len ) ;
}
int boot_get_loadable ( int argc , char * const argv [ ] , bootm_headers_t * images ,
int boot_get_loadable ( int argc , char * const argv [ ] , bootm_headers_t * images ,
uint8_t arch , const ulong * ld_start , ulong * const ld_len )
uint8_t arch , const ulong * ld_start , ulong * const ld_len )
{
{
@ -1407,6 +1424,7 @@ int boot_get_loadable(int argc, char * const argv[], bootm_headers_t *images,
int conf_noffset ;
int conf_noffset ;
int fit_img_result ;
int fit_img_result ;
const char * uname ;
const char * uname ;
uint8_t img_type ;
/* Check to see if the images struct has a FIT configuration */
/* Check to see if the images struct has a FIT configuration */
if ( ! genimg_has_config ( images ) ) {
if ( ! genimg_has_config ( images ) ) {
@ -1447,6 +1465,21 @@ int boot_get_loadable(int argc, char * const argv[], bootm_headers_t *images,
/* Something went wrong! */
/* Something went wrong! */
return fit_img_result ;
return fit_img_result ;
}
}
fit_img_result = fit_image_get_node ( buf , uname ) ;
if ( fit_img_result < 0 ) {
/* Something went wrong! */
return fit_img_result ;
}
fit_img_result = fit_image_get_type ( buf ,
fit_img_result ,
& img_type ) ;
if ( fit_img_result < 0 ) {
/* Something went wrong! */
return fit_img_result ;
}
fit_loadable_process ( img_type , img_data , img_len ) ;
}
}
break ;
break ;
default :
default :