summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drivers/pc80/mc146818rtc.c8
-rw-r--r--src/include/pc80/mc146818rtc.h2
2 files changed, 6 insertions, 4 deletions
diff --git a/src/drivers/pc80/mc146818rtc.c b/src/drivers/pc80/mc146818rtc.c
index d832544b17..52cfb63275 100644
--- a/src/drivers/pc80/mc146818rtc.c
+++ b/src/drivers/pc80/mc146818rtc.c
@@ -84,10 +84,10 @@ static void rtc_update_cmos_date(u8 has_century)
cmos_write(0, RTC_CLK_SECOND);
cmos_write(0, RTC_CLK_MINUTE);
cmos_write(1, RTC_CLK_HOUR);
- cmos_write(COREBOOT_BUILD_WEEKDAY, RTC_CLK_DAYOFWEEK);
- cmos_write(COREBOOT_BUILD_DAY, RTC_CLK_DAYOFMONTH);
- cmos_write(COREBOOT_BUILD_MONTH, RTC_CLK_MINUTE);
- cmos_write(COREBOOT_BUILD_YEAR, RTC_CLK_YEAR);
+ cmos_write(RTC_TO_BCD(COREBOOT_BUILD_WEEKDAY), RTC_CLK_DAYOFWEEK);
+ cmos_write(RTC_TO_BCD(COREBOOT_BUILD_DAY), RTC_CLK_DAYOFMONTH);
+ cmos_write(RTC_TO_BCD(COREBOOT_BUILD_MONTH), RTC_CLK_MINUTE);
+ cmos_write(RTC_TO_BCD(COREBOOT_BUILD_YEAR), RTC_CLK_YEAR);
if (has_century) cmos_write(0x20, RTC_CLK_ALTCENTURY);
}
diff --git a/src/include/pc80/mc146818rtc.h b/src/include/pc80/mc146818rtc.h
index a916761222..61b522ca74 100644
--- a/src/include/pc80/mc146818rtc.h
+++ b/src/include/pc80/mc146818rtc.h
@@ -63,6 +63,8 @@
# define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */
# define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */
+#define RTC_TO_BCD(value) (((value / 10) << 4) | (value % 10))
+
/**********************************************************************/
#define RTC_INTR_FLAGS RTC_REG_C
/* caution - cleared by read */