From 8ade95063815d8ffca7cededa6c40cddec857d38 Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Sat, 10 Dec 2011 11:07:58 +0000
Subject: [PATCH] bootstage: Convert progress numbers 20-41 to enums

Signed-off-by: Simon Glass <sjg@chromium.org>
---
 arch/powerpc/lib/board.c  |  2 +-
 arch/sparc/lib/board.c    |  2 +-
 board/hermes/hermes.c     |  4 +++-
 board/pcs440ep/pcs440ep.c |  3 ++-
 include/bootstage.h       | 25 +++++++++++++++++++++++++
 post/post.c               |  4 ++--
 6 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/lib/board.c b/arch/powerpc/lib/board.c
index 36cfe7d832f..dca3fd7d5a6 100644
--- a/arch/powerpc/lib/board.c
+++ b/arch/powerpc/lib/board.c
@@ -1064,7 +1064,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 fcbc666b49a..770136b82a2 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/board/hermes/hermes.c b/board/hermes/hermes.c
index 1b40ae87085..38bab03e382 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 118d81c7f29..f67eeddeb7d 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 29082eb01e2..a828f5c83d4 100644
--- a/include/bootstage.h
+++ b/include/bootstage.h
@@ -66,6 +66,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 f3830be678e..9579a94b9b1 100644
--- a/post/post.c
+++ b/post/post.c
@@ -158,7 +158,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);
 			}
 		}
 	}
@@ -295,7 +295,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;
-- 
GitLab