diff options
author | Michael Zaidman <michael.zaidman@gmail.com> | 2010-03-01 11:47:36 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2010-03-21 22:44:58 +0100 |
commit | e070a56c777f1fd05950e1bc63483c19decd6f78 (patch) | |
tree | 509cdb35cf0046f5128082f9062d756beae95191 | |
parent | 47ab5ad14575531798431f0d1e8f83ee9bb0a87e (diff) | |
download | u-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.h | 5 | ||||
-rw-r--r-- | post/post.c | 17 |
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)) { |