summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/cmd_bootm.c44
-rw-r--r--common/image.c36
-rw-r--r--include/bootstage.h38
3 files changed, 80 insertions, 38 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index c727c787caf..86f1ffbddbd 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -222,21 +222,21 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
if (fit_image_get_type(images.fit_hdr_os,
images.fit_noffset_os, &images.os.type)) {
puts("Can't get image type!\n");
- show_boot_error(109);
+ show_boot_error(BOOTSTAGE_ID_FIT_TYPE);
return 1;
}
if (fit_image_get_comp(images.fit_hdr_os,
images.fit_noffset_os, &images.os.comp)) {
puts("Can't get image compression!\n");
- show_boot_error(110);
+ show_boot_error(BOOTSTAGE_ID_FIT_COMPRESSION);
return 1;
}
if (fit_image_get_os(images.fit_hdr_os,
images.fit_noffset_os, &images.os.os)) {
puts("Can't get image OS!\n");
- show_boot_error(111);
+ show_boot_error(BOOTSTAGE_ID_FIT_OS);
return 1;
}
@@ -245,7 +245,7 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
if (fit_image_get_load(images.fit_hdr_os, images.fit_noffset_os,
&images.os.load)) {
puts("Can't get image load address!\n");
- show_boot_error(112);
+ show_boot_error(BOOTSTAGE_ID_FIT_LOADADDR);
return 1;
}
break;
@@ -648,7 +648,7 @@ int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
} else {
puts("ERROR: new format image overwritten - "
"must RESET the board to recover\n");
- show_boot_error(113);
+ show_boot_error(BOOTSTAGE_ID_OVERWRITTEN);
do_reset(cmdtp, flag, argc, argv);
}
}
@@ -789,28 +789,28 @@ 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_error(104);
+ show_boot_error(BOOTSTAGE_ID_FIT_CHECK_HASH);
return 0;
}
puts("OK\n");
}
- show_boot_progress(105);
+ show_boot_progress(BOOTSTAGE_ID_FIT_CHECK_ARCH);
if (!fit_image_check_target_arch(fit, os_noffset)) {
puts("Unsupported Architecture\n");
- show_boot_error(105);
+ show_boot_error(BOOTSTAGE_ID_FIT_CHECK_ARCH);
return 0;
}
- show_boot_progress(106);
+ show_boot_progress(BOOTSTAGE_ID_FIT_CHECK_KERNEL);
if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL) &&
!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL_NOLOAD)) {
puts("Not a kernel image\n");
- show_boot_error(106);
+ show_boot_error(BOOTSTAGE_ID_FIT_CHECK_KERNEL);
return 0;
}
- show_boot_progress(107);
+ show_boot_progress(BOOTSTAGE_ID_FIT_CHECKED);
return 1;
}
#endif /* CONFIG_FIT */
@@ -921,10 +921,10 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
if (!fit_check_format(fit_hdr)) {
puts("Bad FIT kernel image format!\n");
- show_boot_error(100);
+ show_boot_error(BOOTSTAGE_ID_FIT_FORMAT);
return NULL;
}
- show_boot_progress(100);
+ show_boot_progress(BOOTSTAGE_ID_FIT_FORMAT);
if (!fit_uname_kernel) {
/*
@@ -933,11 +933,11 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
* fit_conf_get_node() will try to find default config
* node
*/
- show_boot_progress(101);
+ show_boot_progress(BOOTSTAGE_ID_FIT_NO_UNIT_NAME);
cfg_noffset = fit_conf_get_node(fit_hdr,
fit_uname_config);
if (cfg_noffset < 0) {
- show_boot_error(101);
+ show_boot_error(BOOTSTAGE_ID_FIT_NO_UNIT_NAME);
return NULL;
}
/* save configuration uname provided in the first
@@ -948,7 +948,7 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
NULL);
printf(" Using '%s' configuration\n",
images->fit_uname_cfg);
- show_boot_progress(103);
+ show_boot_progress(BOOTSTAGE_ID_FIT_CONFIG);
os_noffset = fit_conf_get_kernel_node(fit_hdr,
cfg_noffset);
@@ -956,28 +956,28 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
NULL);
} else {
/* get kernel component image node offset */
- show_boot_progress(102);
+ show_boot_progress(BOOTSTAGE_ID_FIT_UNIT_NAME);
os_noffset = fit_image_get_node(fit_hdr,
fit_uname_kernel);
}
if (os_noffset < 0) {
- show_boot_error(103);
+ show_boot_error(BOOTSTAGE_ID_FIT_CONFIG);
return NULL;
}
printf(" Trying '%s' kernel subimage\n", fit_uname_kernel);
- show_boot_progress(104);
+ show_boot_progress(BOOTSTAGE_ID_FIT_CHECK_SUBIMAGE);
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_error(107);
+ show_boot_error(BOOTSTAGE_ID_FIT_KERNEL_INFO_ERR);
return NULL;
}
- show_boot_progress(108);
+ show_boot_progress(BOOTSTAGE_ID_FIT_KERNEL_INFO);
*os_len = len;
*os_data = (ulong)data;
@@ -988,7 +988,7 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
#endif
default:
printf("Wrong Image Format for %s command\n", cmdtp->name);
- show_boot_error(108);
+ show_boot_error(BOOTSTAGE_ID_FIT_KERNEL_INFO);
return NULL;
}
diff --git a/common/image.c b/common/image.c
index 6186c45bd7d..133ebbcac71 100644
--- a/common/image.c
+++ b/common/image.c
@@ -912,13 +912,14 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
printf("## Loading init Ramdisk from FIT "
"Image at %08lx ...\n", rd_addr);
- show_boot_progress(120);
+ show_boot_progress(BOOTSTAGE_ID_FIT_RD_FORMAT);
if (!fit_check_format(fit_hdr)) {
puts("Bad FIT ramdisk image format!\n");
- show_boot_error(120);
+ show_boot_error(
+ BOOTSTAGE_ID_FIT_RD_FORMAT);
return 1;
}
- show_boot_progress(121);
+ show_boot_progress(BOOTSTAGE_ID_FIT_RD_FORMAT_OK);
if (!fit_uname_ramdisk) {
/*
@@ -926,13 +927,15 @@ int boot_get_ramdisk(int argc, char * const 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);
+ show_boot_progress(
+ BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME);
cfg_noffset = fit_conf_get_node(fit_hdr,
fit_uname_config);
if (cfg_noffset < 0) {
puts("Could not find configuration "
"node\n");
- show_boot_error(122);
+ show_boot_error(
+ BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME);
return 1;
}
fit_uname_config = fdt_get_name(fit_hdr,
@@ -946,20 +949,21 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
rd_noffset, NULL);
} else {
/* get ramdisk component image node offset */
- show_boot_progress(123);
+ show_boot_progress(
+ BOOTSTAGE_ID_FIT_RD_UNIT_NAME);
rd_noffset = fit_image_get_node(fit_hdr,
fit_uname_ramdisk);
}
if (rd_noffset < 0) {
puts("Could not find subimage node\n");
- show_boot_error(124);
+ show_boot_error(BOOTSTAGE_ID_FIT_RD_SUBNODE);
return 1;
}
printf(" Trying '%s' ramdisk subimage\n",
fit_uname_ramdisk);
- show_boot_progress(125);
+ show_boot_progress(BOOTSTAGE_ID_FIT_RD_CHECK);
if (!fit_check_ramdisk(fit_hdr, rd_noffset, arch,
images->verify))
return 1;
@@ -968,10 +972,10 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
if (fit_image_get_data(fit_hdr, rd_noffset, &data,
&size)) {
puts("Could not find ramdisk subimage data!\n");
- show_boot_error(127);
+ show_boot_error(BOOTSTAGE_ID_FIT_RD_GET_DATA);
return 1;
}
- show_boot_progress(128);
+ show_boot_progress(BOOTSTAGE_ID_FIT_RD_GET_DATA_OK);
rd_data = (ulong)data;
rd_len = size;
@@ -979,10 +983,10 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
if (fit_image_get_load(fit_hdr, rd_noffset, &rd_load)) {
puts("Can't get ramdisk subimage load "
"address!\n");
- show_boot_error(129);
+ show_boot_error(BOOTSTAGE_ID_FIT_RD_LOAD);
return 1;
}
- show_boot_progress(129);
+ show_boot_progress(BOOTSTAGE_ID_FIT_RD_LOAD);
images->fit_hdr_rd = fit_hdr;
images->fit_uname_rd = fit_uname_ramdisk;
@@ -3176,23 +3180,23 @@ static int fit_check_ramdisk(const void *fit, int rd_noffset, uint8_t arch,
puts(" Verifying Hash Integrity ... ");
if (!fit_image_check_hashes(fit, rd_noffset)) {
puts("Bad Data Hash\n");
- show_boot_error(125);
+ show_boot_error(BOOTSTAGE_ID_FIT_RD_HASH);
return 0;
}
puts("OK\n");
}
- show_boot_progress(126);
+ show_boot_progress(BOOTSTAGE_ID_FIT_RD_CHECK_ALL);
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_error(126);
+ show_boot_error(BOOTSTAGE_ID_FIT_RD_CHECK_ALL);
return 0;
}
- show_boot_progress(127);
+ show_boot_progress(BOOTSTAGE_ID_FIT_RD_CHECK_ALL_OK);
return 1;
}
#endif /* USE_HOSTCC */
diff --git a/include/bootstage.h b/include/bootstage.h
index 35e11b8dcc8..8f7fcd7d773 100644
--- a/include/bootstage.h
+++ b/include/bootstage.h
@@ -126,6 +126,44 @@ enum bootstage_id {
BOOTSTAGE_ID_NET_DONE_ERR,
BOOTSTAGE_ID_NET_DONE,
+ /*
+ * Boot stages related to loading a FIT image. Some of these are a
+ * bit wonky.
+ */
+ BOOTSTAGE_ID_FIT_FORMAT = 100,
+ BOOTSTAGE_ID_FIT_NO_UNIT_NAME,
+ BOOTSTAGE_ID_FIT_UNIT_NAME,
+ BOOTSTAGE_ID_FIT_CONFIG,
+ BOOTSTAGE_ID_FIT_CHECK_SUBIMAGE,
+ BOOTSTAGE_ID_FIT_CHECK_HASH = 104,
+
+ BOOTSTAGE_ID_FIT_CHECK_ARCH,
+ BOOTSTAGE_ID_FIT_CHECK_KERNEL,
+ BOOTSTAGE_ID_FIT_CHECKED,
+
+ BOOTSTAGE_ID_FIT_KERNEL_INFO_ERR = 107,
+ BOOTSTAGE_ID_FIT_KERNEL_INFO,
+ BOOTSTAGE_ID_FIT_TYPE,
+
+ BOOTSTAGE_ID_FIT_COMPRESSION,
+ BOOTSTAGE_ID_FIT_OS,
+ BOOTSTAGE_ID_FIT_LOADADDR,
+ BOOTSTAGE_ID_OVERWRITTEN,
+
+ BOOTSTAGE_ID_FIT_RD_FORMAT = 120,
+ BOOTSTAGE_ID_FIT_RD_FORMAT_OK,
+ BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME,
+ BOOTSTAGE_ID_FIT_RD_UNIT_NAME,
+ BOOTSTAGE_ID_FIT_RD_SUBNODE,
+
+ BOOTSTAGE_ID_FIT_RD_CHECK,
+ BOOTSTAGE_ID_FIT_RD_HASH = 125,
+ BOOTSTAGE_ID_FIT_RD_CHECK_ALL,
+ BOOTSTAGE_ID_FIT_RD_GET_DATA,
+ BOOTSTAGE_ID_FIT_RD_CHECK_ALL_OK = 127,
+ BOOTSTAGE_ID_FIT_RD_GET_DATA_OK,
+ BOOTSTAGE_ID_FIT_RD_LOAD,
+
BOOTSTAGE_ID_IDE_FIT_READ = 140,
BOOTSTAGE_ID_IDE_FIT_READ_OK,