summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2008-05-21 08:42:11 +0000
committerMichael Sevakis <jethead71@rockbox.org>2008-05-21 08:42:11 +0000
commita9c20f5789c13b486d217024a020f9d6163e2d51 (patch)
tree5da52ca9cc7a28ba21ced042cb739e6160d5f87b /firmware/drivers
parent5f796087b009fee1ae60904b0355cc7febe3330f (diff)
Gigabeat S:
1) Rework event handling and static registration mechanism. No target- specific code in mc13783 driver. GPIO event driver interfaces more cleanly. 2) Somewhat related - enable thread priority for bootloader which is desireable here (ffs is used for GPIO event enabling anyway and that goes along with priority). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17593 a1c6a512-1295-4272-9138-f99709370657
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
/* was it an alarm that triggered power on ? */
static bool alarm_start = false;
-void mc13783_alarm_start(void)
-{
- alarm_start = true;
-}
-
static const unsigned char rtc_registers[RTC_NUM_REGS] =
{
[RTC_REG_TIME] = MC13783_RTC_TIME,
@@ -122,7 +117,12 @@ static int is_leap_year(int y)
/** Public APIs **/
void rtc_init(void)
{
- /* Nothing to do */
+ /* only needs to be polled on startup */
+ if (mc13783_read(MC13783_INTERRUPT_STATUS1) & MC13783_TODAI)
+ {
+ alarm_start = true;
+ mc13783_write(MC13783_INTERRUPT_STATUS1, MC13783_TODAI);
+ }
}
int rtc_read_datetime(unsigned char* buf)
@@ -264,7 +264,9 @@ bool rtc_enable_alarm(bool enable)
bool rtc_check_alarm_started(bool release_alarm)
{
bool rc = alarm_start;
- alarm_start &= ~release_alarm;
+
+ if (release_alarm)
+ alarm_start = false;
return rc;
}