diff options
Diffstat (limited to 'drivers/rtc/class.c')
| -rw-r--r-- | drivers/rtc/class.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c index 9583cbcc6b7..09b4437b3e6 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, | |||
| 117 | struct module *owner) | 117 | struct module *owner) |
| 118 | { | 118 | { |
| 119 | struct rtc_device *rtc; | 119 | struct rtc_device *rtc; |
| 120 | struct rtc_wkalrm alrm; | ||
| 120 | int id, err; | 121 | int id, err; |
| 121 | 122 | ||
| 122 | if (idr_pre_get(&rtc_idr, GFP_KERNEL) == 0) { | 123 | if (idr_pre_get(&rtc_idr, GFP_KERNEL) == 0) { |
| @@ -143,6 +144,7 @@ struct rtc_device *rtc_device_register(const char *name, struct device *dev, | |||
| 143 | rtc->id = id; | 144 | rtc->id = id; |
| 144 | rtc->ops = ops; | 145 | rtc->ops = ops; |
| 145 | rtc->owner = owner; | 146 | rtc->owner = owner; |
| 147 | rtc->irq_freq = 1; | ||
| 146 | rtc->max_user_freq = 64; | 148 | rtc->max_user_freq = 64; |
| 147 | rtc->dev.parent = dev; | 149 | rtc->dev.parent = dev; |
| 148 | rtc->dev.class = rtc_class; | 150 | rtc->dev.class = rtc_class; |
| @@ -165,6 +167,12 @@ struct rtc_device *rtc_device_register(const char *name, struct device *dev, | |||
| 165 | rtc->pie_timer.function = rtc_pie_update_irq; | 167 | rtc->pie_timer.function = rtc_pie_update_irq; |
| 166 | rtc->pie_enabled = 0; | 168 | rtc->pie_enabled = 0; |
| 167 | 169 | ||
| 170 | /* Check to see if there is an ALARM already set in hw */ | ||
| 171 | err = __rtc_read_alarm(rtc, &alrm); | ||
| 172 | |||
| 173 | if (!err && !rtc_valid_tm(&alrm.time)) | ||
| 174 | rtc_set_alarm(rtc, &alrm); | ||
| 175 | |||
| 168 | strlcpy(rtc->name, name, RTC_DEVICE_NAME_SIZE); | 176 | strlcpy(rtc->name, name, RTC_DEVICE_NAME_SIZE); |
| 169 | dev_set_name(&rtc->dev, "rtc%d", id); | 177 | dev_set_name(&rtc->dev, "rtc%d", id); |
| 170 | 178 | ||
