summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/rtc/rtc_mc13783.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/firmware/drivers/rtc/rtc_mc13783.c b/firmware/drivers/rtc/rtc_mc13783.c
index 9d2c50cf11..325a496646 100644
--- a/firmware/drivers/rtc/rtc_mc13783.c
+++ b/firmware/drivers/rtc/rtc_mc13783.c
@@ -67,11 +67,6 @@ enum rtc_registers_indexes
67/* was it an alarm that triggered power on ? */ 67/* was it an alarm that triggered power on ? */
68static bool alarm_start = false; 68static bool alarm_start = false;
69 69
70void mc13783_alarm_start(void)
71{
72 alarm_start = true;
73}
74
75static const unsigned char rtc_registers[RTC_NUM_REGS] = 70static const unsigned char rtc_registers[RTC_NUM_REGS] =
76{ 71{
77 [RTC_REG_TIME] = MC13783_RTC_TIME, 72 [RTC_REG_TIME] = MC13783_RTC_TIME,
@@ -122,7 +117,12 @@ static int is_leap_year(int y)
122/** Public APIs **/ 117/** Public APIs **/
123void rtc_init(void) 118void rtc_init(void)
124{ 119{
125 /* Nothing to do */ 120 /* only needs to be polled on startup */
121 if (mc13783_read(MC13783_INTERRUPT_STATUS1) & MC13783_TODAI)
122 {
123 alarm_start = true;
124 mc13783_write(MC13783_INTERRUPT_STATUS1, MC13783_TODAI);
125 }
126} 126}
127 127
128int rtc_read_datetime(unsigned char* buf) 128int rtc_read_datetime(unsigned char* buf)
@@ -264,7 +264,9 @@ bool rtc_enable_alarm(bool enable)
264bool rtc_check_alarm_started(bool release_alarm) 264bool rtc_check_alarm_started(bool release_alarm)
265{ 265{
266 bool rc = alarm_start; 266 bool rc = alarm_start;
267 alarm_start &= ~release_alarm; 267
268 if (release_alarm)
269 alarm_start = false;
268 270
269 return rc; 271 return rc;
270} 272}