summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorBrandon Low <lostlogic@rockbox.org>2006-03-05 18:19:46 +0000
committerBrandon Low <lostlogic@rockbox.org>2006-03-05 18:19:46 +0000
commit6668b65ef22c5ad6dd13b4a63de22763ff6f93da (patch)
treeca03aa7e9219baf2aab8e08f3d5ecc2b715017f5 /firmware/drivers
parent63c0d1dd9c22658b12a48dfc2015bfb0bf1239a4 (diff)
downloadrockbox-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.c17
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
64static int last_tick;
65static char rtc_buf[7];
66void rtc_init(void) 64void rtc_init(void)
67{ 65{
68 last_tick = 0;
69} 66}
70 67
71int rtc_read_datetime(unsigned char* buf) { 68int 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