summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Zaidman <michael.zaidman@gmail.com>2010-03-01 11:47:36 +0200
committerWolfgang Denk <wd@denx.de>2010-03-21 22:44:58 +0100
commite070a56c777f1fd05950e1bc63483c19decd6f78 (patch)
tree509cdb35cf0046f5128082f9062d756beae95191
parent47ab5ad14575531798431f0d1e8f83ee9bb0a87e (diff)
downloadu-boot-e070a56c777f1fd05950e1bc63483c19decd6f78.tar.gz
u-boot-e070a56c777f1fd05950e1bc63483c19decd6f78.tar.xz
u-boot-e070a56c777f1fd05950e1bc63483c19decd6f78.zip
POST: add progress API
Add POST progress API implemented as weak calls before and after each call to the POST test callback in the post_run_single routine of the post.c file. Signed-off-by: Michael Zaidman <michael.zaidman@gmail.com> Acked-by: Detlev Zundel <dzu@denx.de>
-rw-r--r--include/post.h5
-rw-r--r--post/post.c17
2 files changed, 20 insertions, 2 deletions
diff --git a/include/post.h b/include/post.h
index 9fcd3cec2f..ff83bce6b4 100644
--- a/include/post.h
+++ b/include/post.h
@@ -53,6 +53,11 @@
#define POST_FAIL_SAVE 0x80
+#define POST_BEFORE 1
+#define POST_AFTER 0
+#define POST_PASSED 1
+#define POST_FAILED 0
+
#ifndef __ASSEMBLY__
struct post_test {
diff --git a/post/post.c b/post/post.c
index b29eb87fc2..00e835325c 100644
--- a/post/post.c
+++ b/post/post.c
@@ -231,6 +231,12 @@ static void post_get_flags (int *test_flags)
}
}
+void __show_post_progress (unsigned int test_num, int before, int result)
+{
+}
+void show_post_progress (unsigned int, int, int)
+ __attribute__((weak, alias("__show_post_progress")));
+
static int post_run_single (struct post_test *test,
int test_flags, int flags, unsigned int i)
{
@@ -248,13 +254,18 @@ static int post_run_single (struct post_test *test,
if (test_flags & POST_PREREL)
post_log_mark_start ( test->testid );
else
- post_log ("POST %s ", test->cmd);
+ post_log ("POST %s ", test->cmd);
}
+ show_post_progress(i, POST_BEFORE, POST_FAILED);
+
if (test_flags & POST_PREREL) {
- if ((*test->test) (flags) == 0)
+ if ((*test->test) (flags) == 0) {
post_log_mark_succ ( test->testid );
+ show_post_progress(i, POST_AFTER, POST_PASSED);
+ }
else {
+ show_post_progress(i, POST_AFTER, POST_FAILED);
if (test_flags & POST_CRITICAL)
gd->flags |= GD_FLG_POSTFAIL;
if (test_flags & POST_STOP)
@@ -264,6 +275,7 @@ static int post_run_single (struct post_test *test,
if ((*test->test) (flags) != 0) {
post_log ("FAILED\n");
show_boot_progress (-32);
+ show_post_progress(i, POST_AFTER, POST_FAILED);
if (test_flags & POST_CRITICAL)
gd->flags |= GD_FLG_POSTFAIL;
if (test_flags & POST_STOP)
@@ -271,6 +283,7 @@ static int post_run_single (struct post_test *test,
}
else
post_log ("PASSED\n");
+ show_post_progress(i, POST_AFTER, POST_PASSED);
}
if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL)) {