summaryrefslogtreecommitdiff
path: root/src/include/pc80/mc146818rtc.h
diff options
context:
space:
mode:
authorzbao <fishbaozi@gmail.com>2012-08-02 19:02:26 +0800
committerStefan Reinauer <stefan.reinauer@coreboot.org>2012-08-02 23:40:09 +0200
commita1e6a9c25a1d897fbb06f634bbee6e7983a95524 (patch)
tree0d8617a90978ddc546582ba1e98dc3131c6dd77f /src/include/pc80/mc146818rtc.h
parentd462736dfbedba7daec0c9812470a88a535b7c43 (diff)
downloadcoreboot-a1e6a9c25a1d897fbb06f634bbee6e7983a95524.tar.xz
RTC: Add a routine to check if the CMOS date is valid
If the CMOS is cleared or someone writes some random date/time on purpose, the CMOS date register has a invalid date. This will hurts some OS, like Windows 7, which hangs at MS logo forever. When we detect that, we need to write a reasonable date in CMOS. Alexandru Gagniuc: Hmm, it would be interesting to use the date the coreboot image was built and set that as the default date. At least until time travel is invented. Change-Id: Ic1c7a2d60e711265686441c77bdf7891a7efb42e Signed-off-by: Zheng Bao <zheng.bao@amd.com> Signed-off-by: zbao <fishbaozi@gmail.com> Reviewed-on: http://review.coreboot.org/1389 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
Diffstat (limited to 'src/include/pc80/mc146818rtc.h')
-rw-r--r--src/include/pc80/mc146818rtc.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/include/pc80/mc146818rtc.h b/src/include/pc80/mc146818rtc.h
index 9f18ba49e8..a916761222 100644
--- a/src/include/pc80/mc146818rtc.h
+++ b/src/include/pc80/mc146818rtc.h
@@ -87,6 +87,10 @@
#define RTC_CLK_DAYOFMONTH 7
#define RTC_CLK_MONTH 8
#define RTC_CLK_YEAR 9
+#define RTC_CLK_ALTCENTURY 0x32
+
+#define RTC_HAS_ALTCENTURY 1
+#define RTC_HAS_NO_ALTCENTURY 0
/* On PCs, the checksum is built only over bytes 16..45 */
#define PC_CKS_RANGE_START 16
@@ -136,6 +140,7 @@ static inline void cmos_write32(u8 offset, u32 value)
#if !defined(__ROMCC__)
void rtc_init(int invalid);
+void rtc_check_update_cmos_date(u8 has_century);
#if CONFIG_USE_OPTION_TABLE
int set_option(const char *name, void *val);
int get_option(void *dest, const char *name);