summaryrefslogtreecommitdiff
path: root/drivers/rtc/class.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-15 18:59:21 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-15 18:59:21 -0700
commit21a32816b2e13eafb6d8a4589a84c6e629adc392 (patch)
tree8cfd2b8ffd355ef0954d6fef36aaffbc6fd53215 /drivers/rtc/class.c
parent420c1c572d4ceaa2f37b6311b7017ac6cf049fe2 (diff)
parentea04683f592e6200b52e191b7e2842aedcfd88b6 (diff)
Merge branch 'timers-rtc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-rtc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: RTC: Fix up rtc.txt documentation to reflect changes to generic rtc layer RTC: sa1100: Update the sa1100 RTC driver. RTC: Fix the cross interrupt issue on rtc-test. RTC: Remove UIE and PIE information from the sa1100 driver proc. RTC: Include information about UIE and PIE in RTC driver proc. RTC: Clean out UIE icotl implementations RTC: Cleanup rtc_class_ops->update_irq_enable() RTC: Cleanup rtc_class_ops->irq_set_freq() RTC: Cleanup rtc_class_ops->irq_set_state RTC: Initialize kernel state from RTC
Diffstat (limited to 'drivers/rtc/class.c')
-rw-r--r--drivers/rtc/class.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c
index c404b61386bf..09b4437b3e61 100644
--- a/drivers/rtc/class.c
+++ b/drivers/rtc/class.c
@@ -117,6 +117,7 @@ struct rtc_device *rtc_device_register(const char *name, struct device *dev,
struct module *owner)
{
struct rtc_device *rtc;
+ struct rtc_wkalrm alrm;
int id, err;
if (idr_pre_get(&rtc_idr, GFP_KERNEL) == 0) {
@@ -166,6 +167,12 @@ struct rtc_device *rtc_device_register(const char *name, struct device *dev,
rtc->pie_timer.function = rtc_pie_update_irq;
rtc->pie_enabled = 0;
+ /* Check to see if there is an ALARM already set in hw */
+ err = __rtc_read_alarm(rtc, &alrm);
+
+ if (!err && !rtc_valid_tm(&alrm.time))
+ rtc_set_alarm(rtc, &alrm);
+
strlcpy(rtc->name, name, RTC_DEVICE_NAME_SIZE);
dev_set_name(&rtc->dev, "rtc%d", id);