Lines Matching refs:dev

62 			handler->decode(raw->dev, ev);  in ir_raw_event_thread()
80 int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev) in ir_raw_event_store() argument
82 if (!dev->raw) in ir_raw_event_store()
88 if (kfifo_in(&dev->raw->kfifo, ev, sizeof(*ev)) != sizeof(*ev)) in ir_raw_event_store()
106 int ir_raw_event_store_edge(struct rc_dev *dev, enum raw_event_type type) in ir_raw_event_store_edge() argument
114 if (!dev->raw) in ir_raw_event_store_edge()
118 delta = ktime_to_ns(ktime_sub(now, dev->raw->last_event)); in ir_raw_event_store_edge()
119 delay = MS_TO_NS(dev->input_dev->rep[REP_DELAY]); in ir_raw_event_store_edge()
125 if (delta > delay || !dev->raw->last_type) in ir_raw_event_store_edge()
131 ir_raw_event_reset(dev); in ir_raw_event_store_edge()
132 else if (dev->raw->last_type & IR_SPACE) { in ir_raw_event_store_edge()
134 rc = ir_raw_event_store(dev, &ev); in ir_raw_event_store_edge()
135 } else if (dev->raw->last_type & IR_PULSE) { in ir_raw_event_store_edge()
137 rc = ir_raw_event_store(dev, &ev); in ir_raw_event_store_edge()
141 dev->raw->last_event = now; in ir_raw_event_store_edge()
142 dev->raw->last_type = type; in ir_raw_event_store_edge()
159 int ir_raw_event_store_with_filter(struct rc_dev *dev, struct ir_raw_event *ev) in ir_raw_event_store_with_filter() argument
161 if (!dev->raw) in ir_raw_event_store_with_filter()
165 if (dev->idle && !ev->pulse) in ir_raw_event_store_with_filter()
167 else if (dev->idle) in ir_raw_event_store_with_filter()
168 ir_raw_event_set_idle(dev, false); in ir_raw_event_store_with_filter()
170 if (!dev->raw->this_ev.duration) in ir_raw_event_store_with_filter()
171 dev->raw->this_ev = *ev; in ir_raw_event_store_with_filter()
172 else if (ev->pulse == dev->raw->this_ev.pulse) in ir_raw_event_store_with_filter()
173 dev->raw->this_ev.duration += ev->duration; in ir_raw_event_store_with_filter()
175 ir_raw_event_store(dev, &dev->raw->this_ev); in ir_raw_event_store_with_filter()
176 dev->raw->this_ev = *ev; in ir_raw_event_store_with_filter()
180 if (!ev->pulse && dev->timeout && in ir_raw_event_store_with_filter()
181 dev->raw->this_ev.duration >= dev->timeout) in ir_raw_event_store_with_filter()
182 ir_raw_event_set_idle(dev, true); in ir_raw_event_store_with_filter()
193 void ir_raw_event_set_idle(struct rc_dev *dev, bool idle) in ir_raw_event_set_idle() argument
195 if (!dev->raw) in ir_raw_event_set_idle()
201 dev->raw->this_ev.timeout = true; in ir_raw_event_set_idle()
202 ir_raw_event_store(dev, &dev->raw->this_ev); in ir_raw_event_set_idle()
203 init_ir_raw_event(&dev->raw->this_ev); in ir_raw_event_set_idle()
206 if (dev->s_idle) in ir_raw_event_set_idle()
207 dev->s_idle(dev, idle); in ir_raw_event_set_idle()
209 dev->idle = idle; in ir_raw_event_set_idle()
219 void ir_raw_event_handle(struct rc_dev *dev) in ir_raw_event_handle() argument
223 if (!dev->raw) in ir_raw_event_handle()
226 spin_lock_irqsave(&dev->raw->lock, flags); in ir_raw_event_handle()
227 wake_up_process(dev->raw->thread); in ir_raw_event_handle()
228 spin_unlock_irqrestore(&dev->raw->lock, flags); in ir_raw_event_handle()
243 static int change_protocol(struct rc_dev *dev, u64 *rc_type) in change_protocol() argument
252 int ir_raw_event_register(struct rc_dev *dev) in ir_raw_event_register() argument
257 if (!dev) in ir_raw_event_register()
260 dev->raw = kzalloc(sizeof(*dev->raw), GFP_KERNEL); in ir_raw_event_register()
261 if (!dev->raw) in ir_raw_event_register()
264 dev->raw->dev = dev; in ir_raw_event_register()
265 dev->change_protocol = change_protocol; in ir_raw_event_register()
266 rc = kfifo_alloc(&dev->raw->kfifo, in ir_raw_event_register()
272 spin_lock_init(&dev->raw->lock); in ir_raw_event_register()
273 dev->raw->thread = kthread_run(ir_raw_event_thread, dev->raw, in ir_raw_event_register()
274 "rc%u", dev->minor); in ir_raw_event_register()
276 if (IS_ERR(dev->raw->thread)) { in ir_raw_event_register()
277 rc = PTR_ERR(dev->raw->thread); in ir_raw_event_register()
282 list_add_tail(&dev->raw->list, &ir_raw_client_list); in ir_raw_event_register()
285 handler->raw_register(dev); in ir_raw_event_register()
291 kfree(dev->raw); in ir_raw_event_register()
292 dev->raw = NULL; in ir_raw_event_register()
296 void ir_raw_event_unregister(struct rc_dev *dev) in ir_raw_event_unregister() argument
300 if (!dev || !dev->raw) in ir_raw_event_unregister()
303 kthread_stop(dev->raw->thread); in ir_raw_event_unregister()
306 list_del(&dev->raw->list); in ir_raw_event_unregister()
309 handler->raw_unregister(dev); in ir_raw_event_unregister()
312 kfifo_free(&dev->raw->kfifo); in ir_raw_event_unregister()
313 kfree(dev->raw); in ir_raw_event_unregister()
314 dev->raw = NULL; in ir_raw_event_unregister()
329 ir_raw_handler->raw_register(raw->dev); in ir_raw_handler_register()
345 ir_raw_handler->raw_unregister(raw->dev); in ir_raw_handler_unregister()