diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-02-23 21:16:27 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-02-23 21:16:27 -0500 |
commit | 7b0386921db20add25afd8678ed34a9253e512fc (patch) | |
tree | 8c6b888b76211e38e6c1c3006553dc4b2b24c75e /arch/arm/common | |
parent | c5580a7ecb859c6821dd761c95fa150ec7695ae1 (diff) | |
parent | 22fe472cb430ce45c4fb9b6d13060dd724d6dbc8 (diff) |
Merge branch 'upstream-fixes'
Diffstat (limited to 'arch/arm/common')
-rw-r--r-- | arch/arm/common/rtctime.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/arm/common/rtctime.c b/arch/arm/common/rtctime.c index 48b1e19b131..e851d86c212 100644 --- a/arch/arm/common/rtctime.c +++ b/arch/arm/common/rtctime.c @@ -128,19 +128,27 @@ EXPORT_SYMBOL(rtc_tm_to_time); /* * Calculate the next alarm time given the requested alarm time mask * and the current time. - * - * FIXME: for now, we just copy the alarm time because we're lazy (and - * is therefore buggy - setting a 10am alarm at 8pm will not result in - * the alarm triggering.) */ void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now, struct rtc_time *alrm) { + unsigned long next_time; + unsigned long now_time; + next->tm_year = now->tm_year; next->tm_mon = now->tm_mon; next->tm_mday = now->tm_mday; next->tm_hour = alrm->tm_hour; next->tm_min = alrm->tm_min; next->tm_sec = alrm->tm_sec; + + rtc_tm_to_time(now, &now_time); + rtc_tm_to_time(next, &next_time); + + if (next_time < now_time) { + /* Advance one day */ + next_time += 60 * 60 * 24; + rtc_time_to_tm(next_time, next); + } } static inline int rtc_read_time(struct rtc_ops *ops, struct rtc_time *tm) |