X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=post%2Fdrivers%2Frtc.c;h=8b0f463b8034fc657af77d040e07ef7f79f6a78d;hb=310ae55efe14aa7923b16c718cbdb22ec364b18b;hp=7d4f9b88ee62f46ccca552a0dae9a6fc7f02f28b;hpb=d8be57669b37d57625bbe37c4603dab05058cea7;p=u-boot diff --git a/post/drivers/rtc.c b/post/drivers/rtc.c index 7d4f9b88ee..8b0f463b80 100644 --- a/post/drivers/rtc.c +++ b/post/drivers/rtc.c @@ -28,6 +28,8 @@ * * The Real Time Clock (RTC) operation is verified by this test. * The following features are verified: + * o) RTC Power Fault + * This is verified by analyzing the rtc_get() return status. * o) Time uniformity * This is verified by reading RTC in polling within * a short period of time. @@ -38,12 +40,10 @@ * nonleap-years. */ -#ifdef CONFIG_POST - #include #include -#if CONFIG_POST & CFG_POST_RTC +#if CONFIG_POST & CONFIG_SYS_POST_RTC static int rtc_post_skip (ulong * diff) { @@ -96,6 +96,10 @@ int rtc_post_test (int flags) unsigned int ynl = 1999; unsigned int yl = 2000; unsigned int skipped = 0; + int reliable; + + /* Time reliability */ + reliable = rtc_get (&svtm); /* Time uniformity */ if (rtc_post_skip (&diff) != 0) { @@ -176,8 +180,16 @@ int rtc_post_test (int flags) } rtc_post_restore (&svtm, skipped); + /* If come here, then RTC operates correcty, check the correctness + * of the time it reports. + */ + if (reliable < 0) { + post_log ("RTC Time is not reliable! Power fault? \n"); + + return -1; + } + return 0; } -#endif /* CONFIG_POST & CFG_POST_RTC */ -#endif /* CONFIG_POST */ +#endif /* CONFIG_POST & CONFIG_SYS_POST_RTC */