diff options
author | Barry Wardell <rockbox@barrywardell.net> | 2007-11-14 16:13:39 +0000 |
---|---|---|
committer | Barry Wardell <rockbox@barrywardell.net> | 2007-11-14 16:13:39 +0000 |
commit | e18125eec2bc4d48cb8857313b52d458bc352075 (patch) | |
tree | 4da7d448d68109cca4d63d3dd9b9dc10f1dc15da | |
parent | 2bb48eb8edc62072e3ac026e0c26f7dd38a91a9a (diff) | |
download | rockbox-e18125eec2bc4d48cb8857313b52d458bc352075.tar.gz rockbox-e18125eec2bc4d48cb8857313b52d458bc352075.zip |
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
-rw-r--r-- | firmware/drivers/rtc/rtc_e8564.c | 20 |
1 files changed, 20 insertions, 0 deletions
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 @@ | |||
24 | #include "i2c-pp.h" | 24 | #include "i2c-pp.h" |
25 | #include <stdbool.h> | 25 | #include <stdbool.h> |
26 | 26 | ||
27 | /* RTC registers */ | ||
28 | #define RTC_CTRL1 0x00 | ||
29 | #define RTC_CTRL2 0x01 | ||
30 | |||
31 | /* Control 2 register flags */ | ||
32 | #define RTC_TF 0x04 | ||
33 | #define RTC_AF 0x08 | ||
34 | |||
27 | void rtc_init(void) | 35 | void rtc_init(void) |
28 | { | 36 | { |
37 | unsigned char tmp; | ||
38 | int rv; | ||
39 | |||
40 | /* initialize Control 1 register */ | ||
41 | tmp = 0; | ||
42 | pp_i2c_send(0x51, RTC_CTRL1,tmp); | ||
43 | |||
44 | /* read value of the Control 2 register - we'll need it to preserve alarm and timer interrupt assertion flags */ | ||
45 | rv = i2c_readbytes(0x51,RTC_CTRL2,1,&tmp); | ||
46 | /* clear alarm and timer interrupts */ | ||
47 | tmp &= (RTC_TF | RTC_AF); | ||
48 | pp_i2c_send(0x51, RTC_CTRL2,tmp); | ||
29 | } | 49 | } |
30 | 50 | ||
31 | int rtc_read_datetime(unsigned char* buf) | 51 | int rtc_read_datetime(unsigned char* buf) |