Signed-off-by: Simon Glass <s...@chromium.org> --- arch/powerpc/lib/board.c | 2 +- arch/sparc/lib/board.c | 2 +- arch/x86/lib/board.c | 18 +++++++++--------- board/hermes/hermes.c | 4 +++- board/pcs440ep/pcs440ep.c | 3 ++- include/bootstage.h | 25 +++++++++++++++++++++++++ post/post.c | 4 ++-- 7 files changed, 43 insertions(+), 15 deletions(-)
diff --git a/arch/powerpc/lib/board.c b/arch/powerpc/lib/board.c index b11ec8c..837c82d 100644 --- a/arch/powerpc/lib/board.c +++ b/arch/powerpc/lib/board.c @@ -1065,7 +1065,7 @@ void board_init_r(gd_t *id, ulong dest_addr) void hang(void) { puts("### ERROR ### Please RESET the board ###\n"); - show_boot_error(30); + show_boot_error(BOOTSTAGE_ID_NEED_RESET); for (;;) ; } diff --git a/arch/sparc/lib/board.c b/arch/sparc/lib/board.c index fcbc666..770136b 100644 --- a/arch/sparc/lib/board.c +++ b/arch/sparc/lib/board.c @@ -426,7 +426,7 @@ void hang(void) { puts("### ERROR ### Please RESET the board ###\n"); #ifdef CONFIG_SHOW_BOOT_PROGRESS - show_boot_error(30); + show_boot_error(BOOTSTAGE_ID_NEED_RESET); #endif for (;;) ; } diff --git a/arch/x86/lib/board.c b/arch/x86/lib/board.c index d742fec..1f677cc 100644 --- a/arch/x86/lib/board.c +++ b/arch/x86/lib/board.c @@ -280,7 +280,7 @@ void board_init_r(gd_t *id, ulong dest_addr) static gd_t gd_data; init_fnc_t **init_fnc_ptr; - show_boot_progress(0x21); + show_boot_progress(BOOTSTAGE_ID_BOARD_INIT_R); /* Global data pointer is now writable */ gd = &gd_data; @@ -291,7 +291,7 @@ void board_init_r(gd_t *id, ulong dest_addr) gd->bd = &bd_data; memset(gd->bd, 0, sizeof(bd_t)); - show_boot_progress(0x22); + show_boot_progress(BOOTSTAGE_ID_BOARD_GLOBAL_DATA); gd->baudrate = CONFIG_BAUDRATE; @@ -302,7 +302,7 @@ void board_init_r(gd_t *id, ulong dest_addr) if ((*init_fnc_ptr)() != 0) hang(); } - show_boot_progress(0x23); + show_boot_progress(BOOTSTAGE_ID_BOARD_INIT_SEQ); #ifdef CONFIG_SERIAL_MULTI serial_initialize(); @@ -312,14 +312,14 @@ void board_init_r(gd_t *id, ulong dest_addr) /* configure available FLASH banks */ size = flash_init(); display_flash_config(size); - show_boot_progress(0x24); + show_boot_progress(BOOTSTAGE_ID_BOARD_FLASH); #endif - show_boot_progress(0x25); + show_boot_progress(BOOTSTAGE_ID_BOARD_FLASH_37); /* initialize environment */ env_relocate(); - show_boot_progress(0x26); + show_boot_progress(BOOTSTAGE_ID_BOARD_ENV); #ifdef CONFIG_CMD_NET @@ -334,7 +334,7 @@ void board_init_r(gd_t *id, ulong dest_addr) pci_init(); #endif - show_boot_progress(0x27); + show_boot_progress(BOOTSTAGE_ID_BOARD_PCI); stdio_init(); @@ -363,7 +363,7 @@ void board_init_r(gd_t *id, ulong dest_addr) /* enable exceptions */ enable_interrupts(); - show_boot_progress(0x28); + show_boot_progress(BOOTSTAGE_ID_BOARD_INTERRUPTS); #ifdef CONFIG_STATUS_LED status_led_set(STATUS_LED_BOOT, STATUS_LED_BLINKING); @@ -432,7 +432,7 @@ void board_init_r(gd_t *id, ulong dest_addr) post_run(NULL, POST_RAM | post_bootmode_get(0)); #endif - show_boot_progress(0x29); + show_boot_progress(BOOTSTAGE_ID_BOARD_DONE); /* main_loop() can return to retry autoboot, if so just run it again. */ for (;;) diff --git a/board/hermes/hermes.c b/board/hermes/hermes.c index 1b40ae8..38bab03 100644 --- a/board/hermes/hermes.c +++ b/board/hermes/hermes.c @@ -595,7 +595,9 @@ void show_boot_progress (int status) { volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR; - if (status < -32) status = -1; /* let things compatible */ + /* let things compatible */ + if (status < -BOOTSTAGE_ID_POST_FAIL_R) + status = -1; status ^= 0x0F; status = (status & 0x0F) << 14; immr->im_cpm.cp_pbdat = (immr->im_cpm.cp_pbdat & ~PB_LED_ALL) | status; diff --git a/board/pcs440ep/pcs440ep.c b/board/pcs440ep/pcs440ep.c index 118d81c..f67eedd 100644 --- a/board/pcs440ep/pcs440ep.c +++ b/board/pcs440ep/pcs440ep.c @@ -97,7 +97,8 @@ static void status_led_blink (void) void show_boot_progress (int val) { /* find all valid Codes for val in README */ - if (val == -30) return; + if (val == -BOOTSTAGE_ID_NEED_RESET) + return; if (val < 0) { /* smthing goes wrong */ status_led_blink (); diff --git a/include/bootstage.h b/include/bootstage.h index 8c5a92e..4b8d818 100644 --- a/include/bootstage.h +++ b/include/bootstage.h @@ -68,6 +68,31 @@ enum bootstage_id { BOOTSTAGE_ID_NO_RAMDISK, /* No ram disk found (not an error) */ BOOTSTAGE_ID_RUN_OS = 15, /* Exiting U-Boot, entering OS */ + + BOOTSTAGE_ID_NEED_RESET = 30, + BOOTSTAGE_ID_POST_FAIL, /* Post failure */ + BOOTSTAGE_ID_POST_FAIL_R, /* Post failure reported after reloc */ + + /* + * This set is reported ony by x86, and the meaning is different. In + * this case we are reporting completion of a particular stage. + * This should probably change in he x86 code (which doesn't report + * errors in any case), but discussion this can perhaps wait until we + * have a generic board implementation. + */ + BOOTSTAGE_ID_BOARD_INIT_R, /* We have relocated */ + BOOTSTAGE_ID_BOARD_GLOBAL_DATA, /* Global data is set up */ + + BOOTSTAGE_ID_BOARD_INIT_SEQ, /* We completed the init sequence */ + BOOTSTAGE_ID_BOARD_FLASH, /* We have configured flash banks */ + BOOTSTAGE_ID_BOARD_FLASH_37, /* In case you didn't hear... */ + BOOTSTAGE_ID_BOARD_ENV, /* Environment is relocated & ready */ + BOOTSTAGE_ID_BOARD_PCI, /* PCI is up */ + + BOOTSTAGE_ID_BOARD_INTERRUPTS, /* Exceptions / interrupts ready */ + BOOTSTAGE_ID_BOARD_DONE, /* Board init done, off to main loop */ + /* ^^^ here ends the x86 sequence */ + }; /* diff --git a/post/post.c b/post/post.c index 1cc3f09..3a91020 100644 --- a/post/post.c +++ b/post/post.c @@ -157,7 +157,7 @@ void post_output_backlog(void) post_log("PASSED\n"); else { post_log("FAILED\n"); - show_boot_error(31); + show_boot_error(BOOTSTAGE_ID_POST_FAIL_R); } } } @@ -294,7 +294,7 @@ static int post_run_single(struct post_test *test, } else { if ((*test->test)(flags) != 0) { post_log("FAILED\n"); - show_boot_error(32); + show_boot_error(BOOTSTAGE_ID_POST_FAIL_R); show_post_progress(i, POST_AFTER, POST_FAILED); if (test_flags & POST_CRITICAL) gd->flags |= GD_FLG_POSTFAIL; -- 1.7.3.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot