X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=post%2Fpost.c;h=b74e7623169d562c3e69ece9c99790ff7302df7f;hb=dd2c9e6a3b67c8ff56694e515e6e3c7baddd8f52;hp=c016c3ae4062b8575ee2194697e627168ea244f4;hpb=0a51e9248e2d27e0a02ef1e740c576ce90a39ee1;p=u-boot diff --git a/post/post.c b/post/post.c index c016c3ae40..b74e762316 100644 --- a/post/post.c +++ b/post/post.c @@ -22,7 +22,7 @@ */ #include -#include +#include #include #include @@ -238,14 +238,20 @@ static int post_run_single (struct post_test *test, if (test_flags & POST_PREREL) { if ((*test->test) (flags) == 0) post_log_mark_succ ( test->testid ); - else if (test_flags & POST_CRITICAL) - gd->flags |= GD_FLG_POSTFAIL; + else { + if (test_flags & POST_CRITICAL) + gd->flags |= GD_FLG_POSTFAIL; + if (test_flags & POST_STOP) + gd->flags |= GD_FLG_POSTSTOP; + } } else { if ((*test->test) (flags) != 0) { post_log ("FAILED\n"); show_boot_progress (-32); if (test_flags & POST_CRITICAL) gd->flags |= GD_FLG_POSTFAIL; + if (test_flags & POST_STOP) + gd->flags |= GD_FLG_POSTSTOP; } else post_log ("PASSED\n"); @@ -271,6 +277,9 @@ int post_run (char *name, int flags) if (name == NULL) { unsigned int last; + if (gd->flags & GD_FLG_POSTSTOP) + return 0; + if (post_bootmode_get (&last) & POST_POWERTEST) { if (last & POST_FAIL_SAVE) { last &= ~POST_FAIL_SAVE; @@ -285,6 +294,8 @@ int post_run (char *name, int flags) flags | POST_REBOOT, last); for (i = last + 1; i < post_list_size; i++) { + if (gd->flags & GD_FLG_POSTSTOP) + break; post_run_single (post_list + i, test_flags[i], flags, i); @@ -292,6 +303,8 @@ int post_run (char *name, int flags) } } else { for (i = 0; i < post_list_size; i++) { + if (gd->flags & GD_FLG_POSTSTOP) + break; post_run_single (post_list + i, test_flags[i], flags, i); @@ -306,6 +319,7 @@ int post_run (char *name, int flags) } if (i < post_list_size) { + WATCHDOG_RESET(); return post_run_single (post_list + i, test_flags[i], flags, i); @@ -358,7 +372,7 @@ int post_log (char *format, ...) { va_list args; uint i; - char printbuffer[CFG_PBSIZE]; + char printbuffer[CONFIG_SYS_PBSIZE]; va_start (args, format); @@ -379,6 +393,7 @@ int post_log (char *format, ...) return 0; } +#ifndef CONFIG_RELOC_FIXUP_WORKS void post_reloc (void) { unsigned int i; @@ -423,6 +438,7 @@ void post_reloc (void) } } } +#endif /* @@ -434,7 +450,7 @@ void post_reloc (void) unsigned long post_time_ms (unsigned long base) { #ifdef CONFIG_PPC - return (unsigned long)(get_ticks () / (get_tbclk () / CFG_HZ)) - base; + return (unsigned long)(get_ticks () / (get_tbclk () / CONFIG_SYS_HZ)) - base; #else #warning "Not implemented yet" return 0; /* Not implemented yet */