Lines Matching refs:raw
25 struct ir_raw_event_ctrl *raw = data; in ir_raw_event_thread() local
26 struct rc_dev *dev = raw->dev; in ir_raw_event_thread()
30 while (kfifo_out(&raw->kfifo, &ev, 1)) { in ir_raw_event_thread()
34 if (is_timing_event(raw->prev_ev) && in ir_raw_event_thread()
35 !is_transition(&ev, &raw->prev_ev)) in ir_raw_event_thread()
38 if (raw->prev_ev.reset && ev.pulse == 0) in ir_raw_event_thread()
46 raw->prev_ev = ev; in ir_raw_event_thread()
55 } else if (!kfifo_is_empty(&raw->kfifo)) in ir_raw_event_thread()
76 if (!dev->raw) in ir_raw_event_store()
82 if (!kfifo_put(&dev->raw->kfifo, *ev)) { in ir_raw_event_store()
107 if (!dev->raw) in ir_raw_event_store_edge()
111 ev.duration = ktime_to_us(ktime_sub(now, dev->raw->last_event)); in ir_raw_event_store_edge()
134 if (!dev->raw) in ir_raw_event_store_with_timeout()
139 spin_lock(&dev->raw->edge_spinlock); in ir_raw_event_store_with_timeout()
142 dev->raw->last_event = now; in ir_raw_event_store_with_timeout()
145 if (!timer_pending(&dev->raw->edge_handle) || in ir_raw_event_store_with_timeout()
146 time_after(dev->raw->edge_handle.expires, in ir_raw_event_store_with_timeout()
148 mod_timer(&dev->raw->edge_handle, in ir_raw_event_store_with_timeout()
151 spin_unlock(&dev->raw->edge_spinlock); in ir_raw_event_store_with_timeout()
171 if (!dev->raw) in ir_raw_event_store_with_filter()
180 if (!dev->raw->this_ev.duration) in ir_raw_event_store_with_filter()
181 dev->raw->this_ev = *ev; in ir_raw_event_store_with_filter()
182 else if (ev->pulse == dev->raw->this_ev.pulse) in ir_raw_event_store_with_filter()
183 dev->raw->this_ev.duration += ev->duration; in ir_raw_event_store_with_filter()
185 ir_raw_event_store(dev, &dev->raw->this_ev); in ir_raw_event_store_with_filter()
186 dev->raw->this_ev = *ev; in ir_raw_event_store_with_filter()
191 dev->raw->this_ev.duration >= dev->timeout) in ir_raw_event_store_with_filter()
205 if (!dev->raw) in ir_raw_event_set_idle()
211 dev->raw->this_ev.timeout = true; in ir_raw_event_set_idle()
212 ir_raw_event_store(dev, &dev->raw->this_ev); in ir_raw_event_set_idle()
213 dev->raw->this_ev = (struct ir_raw_event) {}; in ir_raw_event_set_idle()
231 if (!dev->raw || !dev->raw->thread) in ir_raw_event_handle()
234 wake_up_process(dev->raw->thread); in ir_raw_event_handle()
557 struct ir_raw_event_ctrl *raw = from_timer(raw, t, edge_handle); in ir_raw_edge_handle() local
558 struct rc_dev *dev = raw->dev; in ir_raw_edge_handle()
562 spin_lock_irqsave(&dev->raw->edge_spinlock, flags); in ir_raw_edge_handle()
563 interval = ktime_sub(ktime_get(), dev->raw->last_event); in ir_raw_edge_handle()
572 mod_timer(&dev->raw->edge_handle, in ir_raw_edge_handle()
576 spin_unlock_irqrestore(&dev->raw->edge_spinlock, flags); in ir_raw_edge_handle()
619 dev->raw = kzalloc(sizeof(*dev->raw), GFP_KERNEL); in ir_raw_event_prepare()
620 if (!dev->raw) in ir_raw_event_prepare()
623 dev->raw->dev = dev; in ir_raw_event_prepare()
626 spin_lock_init(&dev->raw->edge_spinlock); in ir_raw_event_prepare()
627 timer_setup(&dev->raw->edge_handle, ir_raw_edge_handle, 0); in ir_raw_event_prepare()
628 INIT_KFIFO(dev->raw->kfifo); in ir_raw_event_prepare()
637 thread = kthread_run(ir_raw_event_thread, dev->raw, "rc%u", dev->minor); in ir_raw_event_register()
641 dev->raw->thread = thread; in ir_raw_event_register()
644 list_add_tail(&dev->raw->list, &ir_raw_client_list); in ir_raw_event_register()
655 kfree(dev->raw); in ir_raw_event_free()
656 dev->raw = NULL; in ir_raw_event_free()
663 if (!dev || !dev->raw) in ir_raw_event_unregister()
666 kthread_stop(dev->raw->thread); in ir_raw_event_unregister()
667 del_timer_sync(&dev->raw->edge_handle); in ir_raw_event_unregister()
670 list_del(&dev->raw->list); in ir_raw_event_unregister()
705 struct ir_raw_event_ctrl *raw; in ir_raw_handler_unregister() local
710 list_for_each_entry(raw, &ir_raw_client_list, list) { in ir_raw_handler_unregister()
712 (raw->dev->enabled_protocols & protocols)) in ir_raw_handler_unregister()
713 ir_raw_handler->raw_unregister(raw->dev); in ir_raw_handler_unregister()
714 ir_raw_disable_protocols(raw->dev, protocols); in ir_raw_handler_unregister()