diff options
Diffstat (limited to 'common/cmd_ide.c')
| -rw-r--r-- | common/cmd_ide.c | 25 | 
1 files changed, 18 insertions, 7 deletions
| diff --git a/common/cmd_ide.c b/common/cmd_ide.c index 79b7dfb7f..6a67dd69f 100644 --- a/common/cmd_ide.c +++ b/common/cmd_ide.c @@ -370,6 +370,9 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	disk_partition_t info;  	image_header_t *hdr;  	int rcode = 0; +#if defined(CONFIG_FIT) +	const void *fit_hdr; +#endif  	show_boot_progress (41);  	switch (argc) { @@ -450,11 +453,6 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	case IMAGE_FORMAT_LEGACY:  		hdr = (image_header_t *)addr; -		if (!image_check_magic (hdr)) { -			printf("\n** Bad Magic Number **\n"); -			show_boot_progress (-49); -			return 1; -		}  		show_boot_progress (49);  		if (!image_check_hcrc (hdr)) { @@ -470,10 +468,18 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  		break;  #if defined(CONFIG_FIT)  	case IMAGE_FORMAT_FIT: -		fit_unsupported ("diskboot"); -		return 1; +		fit_hdr = (const void *)addr; +		if (!fit_check_format (fit_hdr)) { +			puts ("** Bad FIT image format\n"); +			return 1; +		} +		puts ("Fit image detected...\n"); + +		cnt = fit_get_size (fit_hdr); +		break;  #endif  	default: +		show_boot_progress (-49);  		puts ("** Unknown image type\n");  		return 1;  	} @@ -490,6 +496,11 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	}  	show_boot_progress (51); +#if defined(CONFIG_FIT) +	/* This cannot be done earlier, we need complete FIT image in RAM first */ +	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT) +		fit_print_contents ((const void *)addr); +#endif  	/* Loading ok, update default load address */ |