diff options
author | Brandon Low <lostlogic@rockbox.org> | 2006-03-05 18:19:46 +0000 |
---|---|---|
committer | Brandon Low <lostlogic@rockbox.org> | 2006-03-05 18:19:46 +0000 |
commit | 6668b65ef22c5ad6dd13b4a63de22763ff6f93da (patch) | |
tree | ca03aa7e9219baf2aab8e08f3d5ecc2b715017f5 /firmware/drivers | |
parent | 63c0d1dd9c22658b12a48dfc2015bfb0bf1239a4 (diff) | |
download | rockbox-6668b65ef22c5ad6dd13b4a63de22763ff6f93da.tar.gz rockbox-6668b65ef22c5ad6dd13b4a63de22763ff6f93da.zip |
Move the RTC read throttling to a smarter place
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8912 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/rtc.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/firmware/drivers/rtc.c b/firmware/drivers/rtc.c index 6458092348..ecfd2ac6ba 100644 --- a/firmware/drivers/rtc.c +++ b/firmware/drivers/rtc.c | |||
@@ -61,24 +61,17 @@ int rtc_write_datetime(unsigned char* buf) | |||
61 | return 1; | 61 | return 1; |
62 | } | 62 | } |
63 | #elif CONFIG_RTC == RTC_PCF50606 | 63 | #elif CONFIG_RTC == RTC_PCF50606 |
64 | static int last_tick; | ||
65 | static char rtc_buf[7]; | ||
66 | void rtc_init(void) | 64 | void rtc_init(void) |
67 | { | 65 | { |
68 | last_tick = 0; | ||
69 | } | 66 | } |
70 | 67 | ||
71 | int rtc_read_datetime(unsigned char* buf) { | 68 | int rtc_read_datetime(unsigned char* buf) { |
72 | int rc; | 69 | int rc; |
73 | if (last_tick + HZ/2 < current_tick) { | 70 | int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); |
74 | int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); | 71 | |
75 | last_tick = current_tick; | 72 | rc = pcf50606_read_multiple(0x0a, buf, 7); |
76 | rc = pcf50606_read_multiple(0x0a, rtc_buf, 7); | 73 | |
77 | set_irq_level(oldlevel); | 74 | set_irq_level(oldlevel); |
78 | } else { | ||
79 | rc = 7; | ||
80 | } | ||
81 | memcpy(buf, rtc_buf, 7); | ||
82 | return rc; | 75 | return rc; |
83 | } | 76 | } |
84 | 77 | ||