From 1372cce2b9040fb640e5032b84e3a033a22d6ff0 Mon Sep 17 00:00:00 2001 From: Marian Balakowicz Date: Wed, 12 Mar 2008 10:33:01 +0100 Subject: [new uImage] Use show_boot_progress() for new uImage format This patch allocates a set of show_boot_progress() IDs for new uImage format and adds show_boot_progress() calls in new uImage format handling code. Signed-off-by: Marian Balakowicz --- common/cmd_bootm.c | 30 ++++++++++++++++++++++++++---- common/cmd_doc.c | 2 ++ common/cmd_ide.c | 2 ++ common/cmd_nand.c | 4 ++++ common/image.c | 28 ++++++++++++++++++++++------ 5 files changed, 56 insertions(+), 10 deletions(-) (limited to 'common') diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index 11c476e..6591e61 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -155,8 +155,6 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) return 1; } - show_boot_progress (6); - /* get image parameters */ switch (genimg_get_format (os_hdr)) { 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, images.fit_noffset_os, &type)) { puts ("Can't get image type!\n"); + show_boot_progress (-109); return 1; } if (fit_image_get_comp (images.fit_hdr_os, images.fit_noffset_os, &comp)) { puts ("Can't get image compression!\n"); + show_boot_progress (-110); return 1; } if (fit_image_get_os (images.fit_hdr_os, images.fit_noffset_os, &os)) { puts ("Can't get image OS!\n"); + show_boot_progress (-111); 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, &load_start)) { puts ("Can't get image load address!\n"); + show_boot_progress (-112); return 1; } 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); puts ("ERROR: image overwritten - must RESET the board to recover.\n"); + show_boot_progress (-113); 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 ... "); if (!fit_image_check_hashes (fit, os_noffset)) { puts ("Bad Data Hash\n"); + show_boot_progress (-104); return 0; } puts ("OK\n"); } + show_boot_progress (105); if (!fit_image_check_target_arch (fit, os_noffset)) { puts ("Unsupported Architecture\n"); + show_boot_progress (-105); return 0; } + show_boot_progress (106); if (!fit_image_check_type (fit, os_noffset, IH_TYPE_KERNEL)) { puts ("Not a kernel image\n"); + show_boot_progress (-106); return 0; } + show_boot_progress (107); return 1; } #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_valid = 1; + show_boot_progress (6); break; #if defined(CONFIG_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)) { puts ("Bad FIT kernel image format!\n"); + show_boot_progress (-100); return NULL; } + show_boot_progress (100); 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 * 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); - if (conf_noffset < 0) + if (conf_noffset < 0) { + show_boot_progress (-101); return NULL; + } os_noffset = fit_conf_get_kernel_node (fit_hdr, conf_noffset); fit_uname_kernel = fit_get_name (fit_hdr, os_noffset, NULL); } else { /* get kernel component image node offset */ + show_boot_progress (102); 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; + } printf (" Trying '%s' kernel subimage\n", fit_uname_kernel); + show_boot_progress (104); if (!fit_check_kernel (fit_hdr, os_noffset, images->verify)) return NULL; /* get kernel image data address and length */ if (fit_image_get_data (fit_hdr, os_noffset, &data, &len)) { puts ("Could not find kernel subimage data!\n"); + show_boot_progress (-107); return NULL; } + show_boot_progress (108); *os_len = len; *os_data = (ulong)data; @@ -566,6 +587,7 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] #endif default: printf ("Wrong Image Format for %s command\n", cmdtp->name); + show_boot_progress (-108); return NULL; } diff --git a/common/cmd_doc.c b/common/cmd_doc.c index bf2f0a9..83aba37 100644 --- a/common/cmd_doc.c +++ b/common/cmd_doc.c @@ -276,9 +276,11 @@ int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) case IMAGE_FORMAT_FIT: fit_hdr = (const void *)addr; if (!fit_check_format (fit_hdr)) { + show_boot_progress (-130); puts ("** Bad FIT image format\n"); return 1; } + show_boot_progress (131); puts ("Fit image detected...\n"); cnt = fit_get_size (fit_hdr); diff --git a/common/cmd_ide.c b/common/cmd_ide.c index 6a67dd6..8ace970 100644 --- a/common/cmd_ide.c +++ b/common/cmd_ide.c @@ -470,9 +470,11 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) case IMAGE_FORMAT_FIT: fit_hdr = (const void *)addr; if (!fit_check_format (fit_hdr)) { + show_boot_progress (-140); puts ("** Bad FIT image format\n"); return 1; } + show_boot_progress (141); puts ("Fit image detected...\n"); cnt = fit_get_size (fit_hdr); diff --git a/common/cmd_nand.c b/common/cmd_nand.c index 9a168ea..7b1f830 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -528,9 +528,11 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand, case IMAGE_FORMAT_FIT: fit_hdr = (const void *)addr; if (!fit_check_format (fit_hdr)) { + show_boot_progress (-150); puts ("** Bad FIT image format\n"); return 1; } + show_boot_progress (151); puts ("Fit image detected...\n"); cnt = fit_get_size (fit_hdr); @@ -1020,9 +1022,11 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) case IMAGE_FORMAT_FIT: fit_hdr = (const void *)addr; if (!fit_check_format (fit_hdr)) { + show_boot_progress (-150); puts ("** Bad FIT image format\n"); return 1; } + show_boot_progress (151); puts ("Fit image detected...\n"); cnt = fit_get_size (fit_hdr); diff --git a/common/image.c b/common/image.c index e838f65..f29614b 100644 --- a/common/image.c +++ b/common/image.c @@ -397,10 +397,7 @@ inline void image_print_contents_noindent (image_header_t *hdr) static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch, int verify) { - image_header_t *rd_hdr; - - show_boot_progress (9); - rd_hdr = (image_header_t *)rd_addr; + image_header_t *rd_hdr = (image_header_t *)rd_addr; if (!image_check_magic (rd_hdr)) { puts ("Bad Magic Number\n"); @@ -830,6 +827,7 @@ int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images, printf ("## Loading init Ramdisk from Legacy " "Image at %08lx ...\n", rd_addr); + show_boot_progress (9); rd_hdr = image_get_ramdisk (rd_addr, arch, images->verify); @@ -846,10 +844,13 @@ int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images, printf ("## Loading init Ramdisk from FIT " "Image at %08lx ...\n", rd_addr); + show_boot_progress (120); if (!fit_check_format (fit_hdr)) { puts ("Bad FIT ramdisk image format!\n"); + show_boot_progress (-120); return 0; } + show_boot_progress (121); if (!fit_uname_ramdisk) { /* @@ -857,37 +858,48 @@ int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images, * node first. If config unit node name is NULL * fit_conf_get_node() will try to find default config node */ + show_boot_progress (122); conf_noffset = fit_conf_get_node (fit_hdr, fit_uname_config); - if (conf_noffset < 0) + if (conf_noffset < 0) { + show_boot_progress (-122); return 0; + } rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, conf_noffset); fit_uname_ramdisk = fit_get_name (fit_hdr, rd_noffset, NULL); } else { /* get ramdisk component image node offset */ + show_boot_progress (123); rd_noffset = fit_image_get_node (fit_hdr, fit_uname_ramdisk); } - if (rd_noffset < 0) + if (rd_noffset < 0) { + show_boot_progress (-124); return 0; + } printf (" Trying '%s' ramdisk subimage\n", fit_uname_ramdisk); + show_boot_progress (125); if (!fit_check_ramdisk (fit_hdr, rd_noffset, arch, images->verify)) return 0; /* get ramdisk image data address and length */ if (fit_image_get_data (fit_hdr, rd_noffset, &data, &size)) { puts ("Could not find ramdisk subimage data!\n"); + show_boot_progress (-127); return 0; } + show_boot_progress (128); rd_data = (ulong)data; rd_len = size; if (fit_image_get_load (fit_hdr, rd_noffset, &rd_load)) { puts ("Can't get ramdisk subimage load address!\n"); + show_boot_progress (-129); return 0; } + show_boot_progress (129); images->fit_hdr_rd = fit_hdr; images->fit_uname_rd = fit_uname_ramdisk; @@ -2445,19 +2457,23 @@ static int fit_check_ramdisk (const void *fit, int rd_noffset, uint8_t arch, int puts (" Verifying Hash Integrity ... "); if (!fit_image_check_hashes (fit, rd_noffset)) { puts ("Bad Data Hash\n"); + show_boot_progress (-125); return 0; } puts ("OK\n"); } + show_boot_progress (126); if (!fit_image_check_os (fit, rd_noffset, IH_OS_LINUX) || !fit_image_check_arch (fit, rd_noffset, arch) || !fit_image_check_type (fit, rd_noffset, IH_TYPE_RAMDISK)) { printf ("No Linux %s Ramdisk Image\n", genimg_get_arch_name(arch)); + show_boot_progress (-126); return 0; } + show_boot_progress (127); return 1; } #endif /* USE_HOSTCC */ -- cgit v1.1