diff options
author | Nils Wallménius <nils@rockbox.org> | 2008-05-05 12:53:03 +0000 |
---|---|---|
committer | Nils Wallménius <nils@rockbox.org> | 2008-05-05 12:53:03 +0000 |
commit | 680bf86fce3f717dbda0d5235f49fcb8aa7aebc7 (patch) | |
tree | dfe5a883bef17841ec0d316c35187055b30a72ee /firmware/drivers/rtc | |
parent | 90a4a434308aa4c4303c09ee36812dcf7c43df6a (diff) | |
download | rockbox-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
Diffstat (limited to 'firmware/drivers/rtc')
-rw-r--r-- | firmware/drivers/rtc/rtc_mc13783.c | 52 |
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 ? */ | ||
68 | static bool alarm_start; | ||
69 | |||
70 | void mc1378_alarm_start(void) | ||
71 | { | ||
72 | alarm_start = true; | ||
73 | } | ||
74 | |||
67 | static const unsigned char rtc_registers[RTC_NUM_REGS] = | 75 | static 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 | |||
248 | bool 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 | |||
254 | bool 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 | |||
264 | bool rtc_check_alarm_started(bool release_alarm) | ||
265 | { | ||
266 | bool rc = alarm_start; | ||
267 | alarm_start &= ~release_alarm; | ||
268 | |||
269 | return rc; | ||
270 | } | ||
271 | |||
272 | void 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 | |||
284 | void 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 | |||