summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2008-05-05 12:53:03 +0000
committerNils Wallménius <nils@rockbox.org>2008-05-05 12:53:03 +0000
commit680bf86fce3f717dbda0d5235f49fcb8aa7aebc7 (patch)
treedfe5a883bef17841ec0d316c35187055b30a72ee
parent90a4a434308aa4c4303c09ee36812dcf7c43df6a (diff)
downloadrockbox-680bf86fce3f717dbda0d5235f49fcb8aa7aebc7.tar.gz
rockbox-680bf86fce3f717dbda0d5235f49fcb8aa7aebc7.zip
Oops, forgot one file
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17377 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/drivers/rtc/rtc_mc13783.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/firmware/drivers/rtc/rtc_mc13783.c b/firmware/drivers/rtc/rtc_mc13783.c
index 2494e5ece5..3031e9971e 100644
--- a/firmware/drivers/rtc/rtc_mc13783.c
+++ b/firmware/drivers/rtc/rtc_mc13783.c
@@ -64,6 +64,14 @@ enum rtc_registers_indexes
64 RTC_NUM_REGS, 64 RTC_NUM_REGS,
65}; 65};
66 66
67/* was it an alarm that triggered power on ? */
68static bool alarm_start;
69
70void mc1378_alarm_start(void)
71{
72 alarm_start = true;
73}
74
67static const unsigned char rtc_registers[RTC_NUM_REGS] = 75static const unsigned char rtc_registers[RTC_NUM_REGS] =
68{ 76{
69 [RTC_REG_TIME] = MC13783_RTC_TIME, 77 [RTC_REG_TIME] = MC13783_RTC_TIME,
@@ -236,3 +244,47 @@ int rtc_write_datetime(unsigned char* buf)
236 244
237 return 0; 245 return 0;
238} 246}
247
248bool rtc_check_alarm_flag(void)
249{
250 /* We don't need to do anything special if it has already fired */
251 return false;
252}
253
254bool rtc_enable_alarm(bool enable)
255{
256 if (enable)
257 mc13783_clear(MC13783_INTERRUPT_MASK1, MC13783_TODA);
258 else
259 mc13783_set(MC13783_INTERRUPT_MASK1, MC13783_TODA);
260
261 return false;
262}
263
264bool rtc_check_alarm_started(bool release_alarm)
265{
266 bool rc = alarm_start;
267 alarm_start &= ~release_alarm;
268
269 return rc;
270}
271
272void rtc_set_alarm(int h, int m)
273{
274 int day = mc13783_read(MC13783_RTC_DAY);
275 int tod = mc13783_read(MC13783_RTC_TIME);
276
277 if (h*3600 + m*60 < tod)
278 day++;
279
280 mc13783_write(MC13783_RTC_DAY_ALARM, day);
281 mc13783_write(MC13783_RTC_ALARM, h*3600 + m*60);
282}
283
284void rtc_get_alarm(int *h, int *m)
285{
286 int tod = mc13783_read(MC13783_RTC_ALARM);
287 *h = tod / 3600;
288 *m = tod % 3600 / 60;
289}
290