@ -155,8 +155,6 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return 1 ;
return 1 ;
}
}
show_boot_progress ( 6 ) ;
/* get image parameters */
/* get image parameters */
switch ( genimg_get_format ( os_hdr ) ) {
switch ( genimg_get_format ( os_hdr ) ) {
case IMAGE_FORMAT_LEGACY :
case IMAGE_FORMAT_LEGACY :
@ -172,18 +170,21 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
if ( fit_image_get_type ( images . fit_hdr_os ,
if ( fit_image_get_type ( images . fit_hdr_os ,
images . fit_noffset_os , & type ) ) {
images . fit_noffset_os , & type ) ) {
puts ( " Can't get image type! \n " ) ;
puts ( " Can't get image type! \n " ) ;
show_boot_progress ( - 109 ) ;
return 1 ;
return 1 ;
}
}
if ( fit_image_get_comp ( images . fit_hdr_os ,
if ( fit_image_get_comp ( images . fit_hdr_os ,
images . fit_noffset_os , & comp ) ) {
images . fit_noffset_os , & comp ) ) {
puts ( " Can't get image compression! \n " ) ;
puts ( " Can't get image compression! \n " ) ;
show_boot_progress ( - 110 ) ;
return 1 ;
return 1 ;
}
}
if ( fit_image_get_os ( images . fit_hdr_os ,
if ( fit_image_get_os ( images . fit_hdr_os ,
images . fit_noffset_os , & os ) ) {
images . fit_noffset_os , & os ) ) {
puts ( " Can't get image OS! \n " ) ;
puts ( " Can't get image OS! \n " ) ;
show_boot_progress ( - 111 ) ;
return 1 ;
return 1 ;
}
}
@ -192,6 +193,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
if ( fit_image_get_load ( images . fit_hdr_os , images . fit_noffset_os ,
if ( fit_image_get_load ( images . fit_hdr_os , images . fit_noffset_os ,
& load_start ) ) {
& load_start ) ) {
puts ( " Can't get image load address! \n " ) ;
puts ( " Can't get image load address! \n " ) ;
show_boot_progress ( - 112 ) ;
return 1 ;
return 1 ;
}
}
break ;
break ;
@ -284,6 +286,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
debug ( " load_start = 0x%lx, load_end = 0x%lx \n " , load_start , load_end ) ;
debug ( " load_start = 0x%lx, load_end = 0x%lx \n " , load_start , load_end ) ;
puts ( " ERROR: image overwritten - must RESET the board to recover. \n " ) ;
puts ( " ERROR: image overwritten - must RESET the board to recover. \n " ) ;
show_boot_progress ( - 113 ) ;
do_reset ( cmdtp , flag , argc , argv ) ;
do_reset ( cmdtp , flag , argc , argv ) ;
}
}
@ -416,21 +419,27 @@ static int fit_check_kernel (const void *fit, int os_noffset, int verify)
puts ( " Verifying Hash Integrity ... " ) ;
puts ( " Verifying Hash Integrity ... " ) ;
if ( ! fit_image_check_hashes ( fit , os_noffset ) ) {
if ( ! fit_image_check_hashes ( fit , os_noffset ) ) {
puts ( " Bad Data Hash \n " ) ;
puts ( " Bad Data Hash \n " ) ;
show_boot_progress ( - 104 ) ;
return 0 ;
return 0 ;
}
}
puts ( " OK \n " ) ;
puts ( " OK \n " ) ;
}
}
show_boot_progress ( 105 ) ;
if ( ! fit_image_check_target_arch ( fit , os_noffset ) ) {
if ( ! fit_image_check_target_arch ( fit , os_noffset ) ) {
puts ( " Unsupported Architecture \n " ) ;
puts ( " Unsupported Architecture \n " ) ;
show_boot_progress ( - 105 ) ;
return 0 ;
return 0 ;
}
}
show_boot_progress ( 106 ) ;
if ( ! fit_image_check_type ( fit , os_noffset , IH_TYPE_KERNEL ) ) {
if ( ! fit_image_check_type ( fit , os_noffset , IH_TYPE_KERNEL ) ) {
puts ( " Not a kernel image \n " ) ;
puts ( " Not a kernel image \n " ) ;
show_boot_progress ( - 106 ) ;
return 0 ;
return 0 ;
}
}
show_boot_progress ( 107 ) ;
return 1 ;
return 1 ;
}
}
# endif /* CONFIG_FIT */
# endif /* CONFIG_FIT */
@ -515,6 +524,7 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]
images - > legacy_hdr_os = hdr ;
images - > legacy_hdr_os = hdr ;
images - > legacy_hdr_valid = 1 ;
images - > legacy_hdr_valid = 1 ;
show_boot_progress ( 6 ) ;
break ;
break ;
# if defined(CONFIG_FIT)
# if defined(CONFIG_FIT)
case IMAGE_FORMAT_FIT :
case IMAGE_FORMAT_FIT :
@ -524,8 +534,10 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]
if ( ! fit_check_format ( fit_hdr ) ) {
if ( ! fit_check_format ( fit_hdr ) ) {
puts ( " Bad FIT kernel image format! \n " ) ;
puts ( " Bad FIT kernel image format! \n " ) ;
show_boot_progress ( - 100 ) ;
return NULL ;
return NULL ;
}
}
show_boot_progress ( 100 ) ;
if ( ! fit_uname_kernel ) {
if ( ! fit_uname_kernel ) {
/*
/*
@ -533,29 +545,38 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]
* node first . If config unit node name is NULL
* node first . If config unit node name is NULL
* fit_conf_get_node ( ) will try to find default config node
* fit_conf_get_node ( ) will try to find default config node
*/
*/
show_boot_progress ( 101 ) ;
conf_noffset = fit_conf_get_node ( fit_hdr , fit_uname_config ) ;
conf_noffset = fit_conf_get_node ( fit_hdr , fit_uname_config ) ;
if ( conf_noffset < 0 )
if ( conf_noffset < 0 ) {
show_boot_progress ( - 101 ) ;
return NULL ;
return NULL ;
}
os_noffset = fit_conf_get_kernel_node ( fit_hdr , conf_noffset ) ;
os_noffset = fit_conf_get_kernel_node ( fit_hdr , conf_noffset ) ;
fit_uname_kernel = fit_get_name ( fit_hdr , os_noffset , NULL ) ;
fit_uname_kernel = fit_get_name ( fit_hdr , os_noffset , NULL ) ;
} else {
} else {
/* get kernel component image node offset */
/* get kernel component image node offset */
show_boot_progress ( 102 ) ;
os_noffset = fit_image_get_node ( fit_hdr , fit_uname_kernel ) ;
os_noffset = fit_image_get_node ( fit_hdr , fit_uname_kernel ) ;
}
}
if ( os_noffset < 0 )
if ( os_noffset < 0 ) {
show_boot_progress ( - 103 ) ;
return NULL ;
return NULL ;
}
printf ( " Trying '%s' kernel subimage \n " , fit_uname_kernel ) ;
printf ( " Trying '%s' kernel subimage \n " , fit_uname_kernel ) ;
show_boot_progress ( 104 ) ;
if ( ! fit_check_kernel ( fit_hdr , os_noffset , images - > verify ) )
if ( ! fit_check_kernel ( fit_hdr , os_noffset , images - > verify ) )
return NULL ;
return NULL ;
/* get kernel image data address and length */
/* get kernel image data address and length */
if ( fit_image_get_data ( fit_hdr , os_noffset , & data , & len ) ) {
if ( fit_image_get_data ( fit_hdr , os_noffset , & data , & len ) ) {
puts ( " Could not find kernel subimage data! \n " ) ;
puts ( " Could not find kernel subimage data! \n " ) ;
show_boot_progress ( - 107 ) ;
return NULL ;
return NULL ;
}
}
show_boot_progress ( 108 ) ;
* os_len = len ;
* os_len = len ;
* os_data = ( ulong ) data ;
* os_data = ( ulong ) data ;
@ -566,6 +587,7 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]
# endif
# endif
default :
default :
printf ( " Wrong Image Format for %s command \n " , cmdtp - > name ) ;
printf ( " Wrong Image Format for %s command \n " , cmdtp - > name ) ;
show_boot_progress ( - 108 ) ;
return NULL ;
return NULL ;
}
}