diff options
| -rw-r--r-- | common/cmd_doc.c | 34 | ||||
| -rw-r--r-- | common/cmd_fdc.c | 27 | ||||
| -rw-r--r-- | common/cmd_ide.c | 25 | ||||
| -rw-r--r-- | common/cmd_nand.c | 65 | ||||
| -rw-r--r-- | common/cmd_scsi.c | 26 | ||||
| -rw-r--r-- | common/cmd_usb.c | 27 | 
6 files changed, 140 insertions, 64 deletions
| diff --git a/common/cmd_doc.c b/common/cmd_doc.c index 293b1aa67..bf2f0a95f 100644 --- a/common/cmd_doc.c +++ b/common/cmd_doc.c @@ -205,6 +205,9 @@ int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	ulong offset = 0;  	image_header_t *hdr;  	int rcode = 0; +#if defined(CONFIG_FIT) +	const void *fit_hdr; +#endif  	show_boot_progress (34);  	switch (argc) { @@ -265,29 +268,30 @@ int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	case IMAGE_FORMAT_LEGACY:  		hdr = (image_header_t *)addr; -		if (image_check_magic (hdr)) { +		image_print_contents (hdr); -			image_print_contents (hdr); - -			cnt = image_get_image_size (hdr); -			cnt -= SECTORSIZE; -		} else { -			puts ("\n** Bad Magic Number **\n"); -			show_boot_progress (-39); -			return 1; -		} +		cnt = image_get_image_size (hdr);  		break;  #if defined(CONFIG_FIT)  	case IMAGE_FORMAT_FIT: -		fit_unsupported ("docboot"); -		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 (-39);  		puts ("** Unknown image type\n");  		return 1;  	}  	show_boot_progress (39); +	cnt -= SECTORSIZE;  	if (doc_rw (doc_dev_desc + dev, 1, offset + SECTORSIZE, cnt,  		    NULL, (u_char *)(addr+SECTORSIZE))) {  		printf ("** Read error on %d\n", dev); @@ -296,6 +300,12 @@ int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	}  	show_boot_progress (40); +#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 */  	load_addr = addr; diff --git a/common/cmd_fdc.c b/common/cmd_fdc.c index 80301b9d5..bf283702d 100644 --- a/common/cmd_fdc.c +++ b/common/cmd_fdc.c @@ -788,6 +788,9 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	int i,nrofblk;  	char *ep;  	int rcode = 0; +#if defined(CONFIG_FIT) +	const void *fit_hdr; +#endif  	switch (argc) {  	case 1: @@ -839,18 +842,21 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	switch (genimg_get_format ((void *)addr)) {  	case IMAGE_FORMAT_LEGACY:  		hdr = (image_header_t *)addr; -		if (!image_check_magic (hdr)) { -			printf ("Bad Magic Number\n"); -			return 1; -		}  		image_print_contents (hdr);  		imsize = image_get_image_size (hdr);  		break;  #if defined(CONFIG_FIT)  	case IMAGE_FORMAT_FIT: -		fit_unsupported ("fdcboot"); -		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"); + +		imsize = fit_get_size (fit_hdr); +		break;  #endif  	default:  		puts ("** Unknown image type\n"); @@ -872,9 +878,16 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	printf("OK %ld Bytes loaded.\n",imsize);  	flush_cache (addr, imsize); -	/* Loading ok, update default load address */ +#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 */  	load_addr = addr; +  	/* Check if we should attempt an auto-start */  	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {  		char *local_args[2]; 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 */ diff --git a/common/cmd_nand.c b/common/cmd_nand.c index 86959dc2c..9a168eab2 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -484,6 +484,9 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,  	ulong cnt;  	image_header_t *hdr;  	int jffs2 = 0; +#if defined(CONFIG_FIT) +	const void *fit_hdr; +#endif  	s = strchr(cmd, '.');  	if (s != NULL && @@ -516,24 +519,25 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,  	case IMAGE_FORMAT_LEGACY:  		hdr = (image_header_t *)addr; -		if (!image_check_magic (hdr)) { -			printf("\n** Bad Magic Number 0x%x **\n", -					image_get_magic (hdr)); -			show_boot_progress (-57); -			return 1; -		}  		show_boot_progress (57); -  		image_print_contents (hdr);  		cnt = image_get_image_size (hdr);  		break;  #if defined(CONFIG_FIT)  	case IMAGE_FORMAT_FIT: -		fit_unsupported ("nand_load_image"); -		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 (-57);  		puts ("** Unknown image type\n");  		return 1;  	} @@ -557,6 +561,12 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,  	}  	show_boot_progress (58); +#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 */  	load_addr = addr; @@ -939,6 +949,10 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	ulong offset = 0;  	image_header_t *hdr;  	int rcode = 0; +#if defined(CONFIG_FIT) +	const void *fit_hdr; +#endif +  	show_boot_progress (52);  	switch (argc) {  	case 1: @@ -997,26 +1011,25 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	switch (genimg_get_format ((void *)addr)) {  	case IMAGE_FORMAT_LEGACY:  		hdr = (image_header_t *)addr; +		image_print_contents (hdr); -		if (image_check_magic (hdr)) { - -			image_print_contents (hdr); - -			cnt = image_get_image_size (hdr); -			cnt -= SECTORSIZE; -		} else { -			printf ("\n** Bad Magic Number 0x%x **\n", -					image_get_magic (hdr)); -			show_boot_progress (-57); -			return 1; -		} +		cnt = image_get_image_size (hdr); +		cnt -= SECTORSIZE;  		break;  #if defined(CONFIG_FIT)  	case IMAGE_FORMAT_FIT: -		fit_unsupported ("nboot"); -		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 (-57);  		puts ("** Unknown image type\n");  		return 1;  	} @@ -1031,6 +1044,12 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	}  	show_boot_progress (58); +#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 */  	load_addr = addr; diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c index 786880521..f49531e96 100644 --- a/common/cmd_scsi.c +++ b/common/cmd_scsi.c @@ -211,6 +211,9 @@ int do_scsiboot (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  	switch (argc) {  	case 1: @@ -277,11 +280,6 @@ int do_scsiboot (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"); -			return 1; -		} -  		if (!image_check_hcrc (hdr)) {  			puts ("\n** Bad Header Checksum **\n");  			return 1; @@ -292,8 +290,15 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  		break;  #if defined(CONFIG_FIT)  	case IMAGE_FORMAT_FIT: -		fit_unsupported ("scsi"); -		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:  		puts ("** Unknown image type\n"); @@ -309,6 +314,13 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  		printf ("** Read error on %d:%d\n", dev, part);  		return 1;  	} + +#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 */  	load_addr = addr; diff --git a/common/cmd_usb.c b/common/cmd_usb.c index 8ee7d2767..bf56c6ac1 100644 --- a/common/cmd_usb.c +++ b/common/cmd_usb.c @@ -315,7 +315,9 @@ int do_usbboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	disk_partition_t info;  	image_header_t *hdr;  	block_dev_desc_t *stor_dev; - +#if defined(CONFIG_FIT) +	const void *fit_hdr; +#endif  	switch (argc) {  	case 1: @@ -390,11 +392,6 @@ int do_usbboot (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"); -			return 1; -		} -  		if (!image_check_hcrc (hdr)) {  			puts ("\n** Bad Header Checksum **\n");  			return 1; @@ -406,8 +403,15 @@ int do_usbboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  		break;  #if defined(CONFIG_FIT)  	case IMAGE_FORMAT_FIT: -		fit_unsupported ("usbboot"); -		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:  		puts ("** Unknown image type\n"); @@ -423,6 +427,13 @@ int do_usbboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  		printf ("\n** Read error on %d:%d\n", dev, part);  		return 1;  	} + +#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 */  	load_addr = addr; |