From e18125eec2bc4d48cb8857313b52d458bc352075 Mon Sep 17 00:00:00 2001 From: Barry Wardell Date: Wed, 14 Nov 2007 16:13:39 +0000 Subject: FS#8155: Proper initialization of E8564 RTC (used in H10). Also fixes FS#8154 - Shutting down fails when RTC alarm is active. Thanks to Przemyslaw Holubowski for the bug report and fix. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15619 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/rtc/rtc_e8564.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'firmware/drivers') diff --git a/firmware/drivers/rtc/rtc_e8564.c b/firmware/drivers/rtc/rtc_e8564.c index c0209e9981..c3ae9349f4 100644 --- a/firmware/drivers/rtc/rtc_e8564.c +++ b/firmware/drivers/rtc/rtc_e8564.c @@ -24,8 +24,28 @@ #include "i2c-pp.h" #include +/* RTC registers */ +#define RTC_CTRL1 0x00 +#define RTC_CTRL2 0x01 + +/* Control 2 register flags */ +#define RTC_TF 0x04 +#define RTC_AF 0x08 + void rtc_init(void) { + unsigned char tmp; + int rv; + + /* initialize Control 1 register */ + tmp = 0; + pp_i2c_send(0x51, RTC_CTRL1,tmp); + + /* read value of the Control 2 register - we'll need it to preserve alarm and timer interrupt assertion flags */ + rv = i2c_readbytes(0x51,RTC_CTRL2,1,&tmp); + /* clear alarm and timer interrupts */ + tmp &= (RTC_TF | RTC_AF); + pp_i2c_send(0x51, RTC_CTRL2,tmp); } int rtc_read_datetime(unsigned char* buf) -- cgit v1.2.3