Lines Matching refs:alarm
162 struct rtc_wkalrm *alarm) in rtc_read_alarm_internal() argument
175 alarm->enabled = 0; in rtc_read_alarm_internal()
176 alarm->pending = 0; in rtc_read_alarm_internal()
177 alarm->time.tm_sec = -1; in rtc_read_alarm_internal()
178 alarm->time.tm_min = -1; in rtc_read_alarm_internal()
179 alarm->time.tm_hour = -1; in rtc_read_alarm_internal()
180 alarm->time.tm_mday = -1; in rtc_read_alarm_internal()
181 alarm->time.tm_mon = -1; in rtc_read_alarm_internal()
182 alarm->time.tm_year = -1; in rtc_read_alarm_internal()
183 alarm->time.tm_wday = -1; in rtc_read_alarm_internal()
184 alarm->time.tm_yday = -1; in rtc_read_alarm_internal()
185 alarm->time.tm_isdst = -1; in rtc_read_alarm_internal()
186 err = rtc->ops->read_alarm(rtc->dev.parent, alarm); in rtc_read_alarm_internal()
191 trace_rtc_read_alarm(rtc_tm_to_time64(&alarm->time), err); in rtc_read_alarm_internal()
195 int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) in __rtc_read_alarm() argument
255 err = rtc_read_alarm_internal(rtc, alarm); in __rtc_read_alarm()
260 if (rtc_valid_tm(&alarm->time) == 0) { in __rtc_read_alarm()
261 rtc_add_offset(rtc, &alarm->time); in __rtc_read_alarm()
279 if (alarm->time.tm_sec == -1) in __rtc_read_alarm()
280 alarm->time.tm_sec = now.tm_sec; in __rtc_read_alarm()
281 if (alarm->time.tm_min == -1) in __rtc_read_alarm()
282 alarm->time.tm_min = now.tm_min; in __rtc_read_alarm()
283 if (alarm->time.tm_hour == -1) in __rtc_read_alarm()
284 alarm->time.tm_hour = now.tm_hour; in __rtc_read_alarm()
287 if (alarm->time.tm_mday < 1 || alarm->time.tm_mday > 31) { in __rtc_read_alarm()
288 alarm->time.tm_mday = now.tm_mday; in __rtc_read_alarm()
291 if ((unsigned int)alarm->time.tm_mon >= 12) { in __rtc_read_alarm()
292 alarm->time.tm_mon = now.tm_mon; in __rtc_read_alarm()
296 if (alarm->time.tm_year == -1) { in __rtc_read_alarm()
297 alarm->time.tm_year = now.tm_year; in __rtc_read_alarm()
305 err = rtc_valid_tm(&alarm->time); in __rtc_read_alarm()
311 t_alm = rtc_tm_to_time64(&alarm->time); in __rtc_read_alarm()
324 rtc_time64_to_tm(t_alm, &alarm->time); in __rtc_read_alarm()
335 if (alarm->time.tm_mon < 11) { in __rtc_read_alarm()
336 alarm->time.tm_mon++; in __rtc_read_alarm()
338 alarm->time.tm_mon = 0; in __rtc_read_alarm()
339 alarm->time.tm_year++; in __rtc_read_alarm()
341 days = rtc_month_days(alarm->time.tm_mon, in __rtc_read_alarm()
342 alarm->time.tm_year); in __rtc_read_alarm()
343 } while (days < alarm->time.tm_mday); in __rtc_read_alarm()
350 alarm->time.tm_year++; in __rtc_read_alarm()
351 } while (!is_leap_year(alarm->time.tm_year + 1900) && in __rtc_read_alarm()
352 rtc_valid_tm(&alarm->time) != 0); in __rtc_read_alarm()
359 err = rtc_valid_tm(&alarm->time); in __rtc_read_alarm()
364 &alarm->time); in __rtc_read_alarm()
369 int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) in rtc_read_alarm() argument
381 memset(alarm, 0, sizeof(struct rtc_wkalrm)); in rtc_read_alarm()
382 alarm->enabled = rtc->aie_timer.enabled; in rtc_read_alarm()
383 alarm->time = rtc_ktime_to_tm(rtc->aie_timer.node.expires); in rtc_read_alarm()
387 trace_rtc_read_alarm(rtc_tm_to_time64(&alarm->time), err); in rtc_read_alarm()
392 static int __rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) in __rtc_set_alarm() argument
398 err = rtc_valid_tm(&alarm->time); in __rtc_set_alarm()
402 scheduled = rtc_tm_to_time64(&alarm->time); in __rtc_set_alarm()
418 rtc_subtract_offset(rtc, &alarm->time); in __rtc_set_alarm()
425 err = rtc->ops->set_alarm(rtc->dev.parent, alarm); in __rtc_set_alarm()
427 trace_rtc_set_alarm(rtc_tm_to_time64(&alarm->time), err); in __rtc_set_alarm()
431 int rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) in rtc_set_alarm() argument
440 err = rtc_valid_tm(&alarm->time); in rtc_set_alarm()
444 err = rtc_valid_range(rtc, &alarm->time); in rtc_set_alarm()
454 rtc->aie_timer.node.expires = rtc_tm_to_ktime(alarm->time); in rtc_set_alarm()
456 if (alarm->enabled) in rtc_set_alarm()
466 int rtc_initialize_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) in rtc_initialize_alarm() argument
471 err = rtc_valid_tm(&alarm->time); in rtc_initialize_alarm()
483 rtc->aie_timer.node.expires = rtc_tm_to_ktime(alarm->time); in rtc_initialize_alarm()
487 if (alarm->enabled && (rtc_tm_to_ktime(now) < in rtc_initialize_alarm()
794 struct rtc_wkalrm alarm; in rtc_timer_enqueue() local
797 alarm.time = rtc_ktime_to_tm(timer->node.expires); in rtc_timer_enqueue()
798 alarm.enabled = 1; in rtc_timer_enqueue()
799 err = __rtc_set_alarm(rtc, &alarm); in rtc_timer_enqueue()
842 struct rtc_wkalrm alarm; in rtc_timer_remove() local
850 alarm.time = rtc_ktime_to_tm(next->expires); in rtc_timer_remove()
851 alarm.enabled = 1; in rtc_timer_remove()
852 err = __rtc_set_alarm(rtc, &alarm); in rtc_timer_remove()
909 struct rtc_wkalrm alarm; in rtc_timer_do_work() local
913 alarm.time = rtc_ktime_to_tm(next->expires); in rtc_timer_do_work()
914 alarm.enabled = 1; in rtc_timer_do_work()
916 err = __rtc_set_alarm(rtc, &alarm); in rtc_timer_do_work()