|
@@ -123,12 +123,18 @@ int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)
|
|
|
err = mutex_lock_interruptible(&rtc->ops_lock);
|
|
|
if (err)
|
|
|
return err;
|
|
|
- alarm->enabled = rtc->aie_timer.enabled;
|
|
|
- if (alarm->enabled)
|
|
|
+ if (rtc->ops == NULL)
|
|
|
+ err = -ENODEV;
|
|
|
+ else if (!rtc->ops->read_alarm)
|
|
|
+ err = -EINVAL;
|
|
|
+ else {
|
|
|
+ memset(alarm, 0, sizeof(struct rtc_wkalrm));
|
|
|
+ alarm->enabled = rtc->aie_timer.enabled;
|
|
|
alarm->time = rtc_ktime_to_tm(rtc->aie_timer.node.expires);
|
|
|
+ }
|
|
|
mutex_unlock(&rtc->ops_lock);
|
|
|
|
|
|
- return 0;
|
|
|
+ return err;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(rtc_read_alarm);
|
|
|
|