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);
587 enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer) in rtc_pie_update_irq() argument
592 rtc = container_of(timer, struct rtc_device, pie_timer); in rtc_pie_update_irq()
595 count = hrtimer_forward_now(timer, period); in rtc_pie_update_irq()
794 static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer) in rtc_timer_enqueue() argument
796 timer->enabled = 1; in rtc_timer_enqueue()
797 timerqueue_add(&rtc->timerqueue, &timer->node); in rtc_timer_enqueue()
798 if (&timer->node == timerqueue_getnext(&rtc->timerqueue)) { in rtc_timer_enqueue()
801 alarm.time = rtc_ktime_to_tm(timer->node.expires); in rtc_timer_enqueue()
808 timerqueue_del(&rtc->timerqueue, &timer->node); in rtc_timer_enqueue()
809 timer->enabled = 0; in rtc_timer_enqueue()
836 static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer) in rtc_timer_remove() argument
839 timerqueue_del(&rtc->timerqueue, &timer->node); in rtc_timer_remove()
840 timer->enabled = 0; in rtc_timer_remove()
841 if (next == &timer->node) { in rtc_timer_remove()
871 struct rtc_timer *timer; in rtc_timer_do_work() local
888 timer = container_of(next, struct rtc_timer, node); in rtc_timer_do_work()
889 timerqueue_del(&rtc->timerqueue, &timer->node); in rtc_timer_do_work()
890 timer->enabled = 0; in rtc_timer_do_work()
891 if (timer->task.func) in rtc_timer_do_work()
892 timer->task.func(timer->task.private_data); in rtc_timer_do_work()
895 if (ktime_to_ns(timer->period)) { in rtc_timer_do_work()
896 timer->node.expires = ktime_add(timer->node.expires, in rtc_timer_do_work()
897 timer->period); in rtc_timer_do_work()
898 timer->enabled = 1; in rtc_timer_do_work()
899 timerqueue_add(&rtc->timerqueue, &timer->node); in rtc_timer_do_work()
919 timer = container_of(next, struct rtc_timer, node); in rtc_timer_do_work()
920 timerqueue_del(&rtc->timerqueue, &timer->node); in rtc_timer_do_work()
921 timer->enabled = 0; in rtc_timer_do_work()
940 void rtc_timer_init(struct rtc_timer *timer, void (*f)(void *p), void *data) in rtc_timer_init() argument
942 timerqueue_init(&timer->node); in rtc_timer_init()
943 timer->enabled = 0; in rtc_timer_init()
944 timer->task.func = f; in rtc_timer_init()
945 timer->task.private_data = data; in rtc_timer_init()
956 int rtc_timer_start(struct rtc_device *rtc, struct rtc_timer *timer, in rtc_timer_start() argument
961 if (timer->enabled) in rtc_timer_start()
962 rtc_timer_remove(rtc, timer); in rtc_timer_start()
964 timer->node.expires = expires; in rtc_timer_start()
965 timer->period = period; in rtc_timer_start()
967 ret = rtc_timer_enqueue(rtc, timer); in rtc_timer_start()
979 int rtc_timer_cancel(struct rtc_device *rtc, struct rtc_timer *timer) in rtc_timer_cancel() argument
983 if (timer->enabled) in rtc_timer_cancel()
984 rtc_timer_remove(rtc, timer); in rtc_timer_cancel()