Lines Matching refs:timer
20 static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer);
21 static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer);
661 enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer) in rtc_pie_update_irq() argument
667 rtc = container_of(timer, struct rtc_device, pie_timer); in rtc_pie_update_irq()
670 count = hrtimer_forward_now(timer, period); in rtc_pie_update_irq()
803 static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer) in rtc_timer_enqueue() argument
814 timer->enabled = 1; in rtc_timer_enqueue()
824 timerqueue_add(&rtc->timerqueue, &timer->node); in rtc_timer_enqueue()
825 trace_rtc_timer_enqueue(timer); in rtc_timer_enqueue()
826 if (!next || ktime_before(timer->node.expires, next->expires)) { in rtc_timer_enqueue()
829 alarm.time = rtc_ktime_to_tm(timer->node.expires); in rtc_timer_enqueue()
836 timerqueue_del(&rtc->timerqueue, &timer->node); in rtc_timer_enqueue()
837 trace_rtc_timer_dequeue(timer); in rtc_timer_enqueue()
838 timer->enabled = 0; in rtc_timer_enqueue()
866 static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer) in rtc_timer_remove() argument
870 timerqueue_del(&rtc->timerqueue, &timer->node); in rtc_timer_remove()
871 trace_rtc_timer_dequeue(timer); in rtc_timer_remove()
872 timer->enabled = 0; in rtc_timer_remove()
873 if (next == &timer->node) { in rtc_timer_remove()
903 struct rtc_timer *timer; in rtc_timer_do_work() local
925 timer = container_of(next, struct rtc_timer, node); in rtc_timer_do_work()
926 timerqueue_del(&rtc->timerqueue, &timer->node); in rtc_timer_do_work()
927 trace_rtc_timer_dequeue(timer); in rtc_timer_do_work()
928 timer->enabled = 0; in rtc_timer_do_work()
929 if (timer->func) in rtc_timer_do_work()
930 timer->func(timer->rtc); in rtc_timer_do_work()
932 trace_rtc_timer_fired(timer); in rtc_timer_do_work()
934 if (ktime_to_ns(timer->period)) { in rtc_timer_do_work()
935 timer->node.expires = ktime_add(timer->node.expires, in rtc_timer_do_work()
936 timer->period); in rtc_timer_do_work()
937 timer->enabled = 1; in rtc_timer_do_work()
938 timerqueue_add(&rtc->timerqueue, &timer->node); in rtc_timer_do_work()
939 trace_rtc_timer_enqueue(timer); in rtc_timer_do_work()
959 timer = container_of(next, struct rtc_timer, node); in rtc_timer_do_work()
960 timerqueue_del(&rtc->timerqueue, &timer->node); in rtc_timer_do_work()
961 trace_rtc_timer_dequeue(timer); in rtc_timer_do_work()
962 timer->enabled = 0; in rtc_timer_do_work()
981 void rtc_timer_init(struct rtc_timer *timer, void (*f)(struct rtc_device *r), in rtc_timer_init() argument
984 timerqueue_init(&timer->node); in rtc_timer_init()
985 timer->enabled = 0; in rtc_timer_init()
986 timer->func = f; in rtc_timer_init()
987 timer->rtc = rtc; in rtc_timer_init()
998 int rtc_timer_start(struct rtc_device *rtc, struct rtc_timer *timer, in rtc_timer_start() argument
1004 if (timer->enabled) in rtc_timer_start()
1005 rtc_timer_remove(rtc, timer); in rtc_timer_start()
1007 timer->node.expires = expires; in rtc_timer_start()
1008 timer->period = period; in rtc_timer_start()
1010 ret = rtc_timer_enqueue(rtc, timer); in rtc_timer_start()
1022 void rtc_timer_cancel(struct rtc_device *rtc, struct rtc_timer *timer) in rtc_timer_cancel() argument
1025 if (timer->enabled) in rtc_timer_cancel()
1026 rtc_timer_remove(rtc, timer); in rtc_timer_cancel()