summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-08-06 08:13:06 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-08-06 08:13:06 +0000
commit50f1ea16c5267ed866f0ed27a15a15f86af86c44 (patch)
tree869fa5b7c88565b9cc1145e1a4956d1c4c604184
parenta25d7ce1263b94c2f897032c74ffc0ae1ab8e5f9 (diff)
downloadrockbox-50f1ea16c5267ed866f0ed27a15a15f86af86c44.zip
rockbox-50f1ea16c5267ed866f0ed27a15a15f86af86c44.tar.gz
rockbox-50f1ea16c5267ed866f0ed27a15a15f86af86c44.tar.bz2
rockbox-50f1ea16c5267ed866f0ed27a15a15f86af86c44.tar.xz
rtc_init() takes care of both the ST and HT bits
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1541 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/drivers/rtc.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/firmware/drivers/rtc.c b/firmware/drivers/rtc.c
index 2882c97..c8e19aa 100644
--- a/firmware/drivers/rtc.c
+++ b/firmware/drivers/rtc.c
@@ -28,9 +28,21 @@
void rtc_init(void)
{
unsigned char data;
- data = (unsigned int)rtc_read(0x0c);
- data &= 0xbf;
- rtc_write(0x0c,data);
+ rtc_write(0x13, 0x10); /* 32 kHz square wave */
+
+ /* Clear the Stop bit if it is set */
+ data = rtc_read(0x01);
+ if(data & 0x80)
+ rtc_write(0x01, 0x00);
+
+ /* Clear the HT bit if it is set */
+ data = rtc_read(0x0c);
+
+ if(data & 0x40)
+ {
+ data &= ~0x40;
+ rtc_write(0x0c,data);
+ }
}
int rtc_write(unsigned char address, unsigned char value)