diff options
Diffstat (limited to 'drivers/rtc/class.c')
| -rw-r--r-- | drivers/rtc/class.c | 7 | 
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);  | 
