Lines Matching refs:ir

26 MODULE_PARM_DESC(enable_ir, "enable ir (default is enable)");
30 MODULE_PARM_DESC(ir_clock_mhz, "ir clock, in MHz");
39 printk(KERN_DEBUG "%s/ir: " fmt, ir->name , ## arg); \
66 struct tm6000_IR *ir = dev->ir;
68 if (!dev->ir)
71 dprintk(2, "%s: %i\n",__func__, ir->wait);
74 ir->wait = 1;
76 ir->wait = 0;
79 static int tm6000_ir_config(struct tm6000_IR *ir)
81 struct tm6000_core *dev = ir->dev;
98 switch (ir->rc_proto) {
112 if (ir->rc_proto == RC_PROTO_BIT_NEC)
117 (ir->rc_proto == RC_PROTO_BIT_NEC) ? "NEC" : "RC-5",
137 if (!ir->polling)
147 ir->pwled = 1;
152 static void tm6000_ir_keydown(struct tm6000_IR *ir,
164 switch (ir->rc_proto) {
181 rc_keydown(ir->rc, protocol, scancode, 0);
187 struct tm6000_IR *ir = dev->ir;
194 ir->submit_urb = 1;
195 schedule_delayed_work(&ir->work, msecs_to_jiffies(URB_SUBMIT_DELAY));
205 tm6000_ir_keydown(ir, urb->transfer_buffer, urb->actual_length);
212 ir->pwled = 2;
213 schedule_delayed_work(&ir->work, msecs_to_jiffies(10));
218 struct tm6000_IR *ir = container_of(work, struct tm6000_IR, work.work);
219 struct tm6000_core *dev = ir->dev;
223 if (ir->wait)
236 if (!ir->pwled) {
238 ir->pwled = 1;
243 tm6000_ir_keydown(ir, buf, rc);
245 ir->pwled = 0;
248 schedule_delayed_work(&ir->work, msecs_to_jiffies(ir->polling));
253 struct tm6000_IR *ir = container_of(work, struct tm6000_IR, work.work);
254 struct tm6000_core *dev = ir->dev;
257 dprintk(3, "%s, submit_urb = %d, pwled = %d\n",__func__, ir->submit_urb,
258 ir->pwled);
260 if (ir->submit_urb) {
264 rc = usb_submit_urb(ir->int_urb, GFP_ATOMIC);
269 schedule_delayed_work(&ir->work, msecs_to_jiffies(URB_SUBMIT_DELAY));
272 ir->submit_urb = 0;
276 if (ir->pwled == 2) {
278 ir->pwled = 0;
279 schedule_delayed_work(&ir->work, msecs_to_jiffies(URB_INT_LED_DELAY));
280 } else if (!ir->pwled) {
282 ir->pwled = 1;
288 struct tm6000_IR *ir = rc->priv;
292 schedule_delayed_work(&ir->work, 0);
299 struct tm6000_IR *ir = rc->priv;
303 cancel_delayed_work_sync(&ir->work);
308 struct tm6000_IR *ir = rc->priv;
310 if (!ir)
315 ir->rc_proto = *rc_proto;
317 tm6000_ir_config(ir);
324 struct tm6000_IR *ir = rc->priv;
329 if (!ir)
331 dev = ir->dev;
335 ir->int_urb = usb_alloc_urb(0, GFP_ATOMIC);
336 if (!ir->int_urb)
346 ir->int_urb->transfer_buffer = kzalloc(size, GFP_ATOMIC);
347 if (!ir->int_urb->transfer_buffer) {
348 usb_free_urb(ir->int_urb);
353 usb_fill_int_urb(ir->int_urb, dev->udev, pipe,
354 ir->int_urb->transfer_buffer, size,
358 ir->submit_urb = 1;
359 schedule_delayed_work(&ir->work, msecs_to_jiffies(URB_SUBMIT_DELAY));
366 struct tm6000_IR *ir = rc->priv;
368 if (!ir || !ir->int_urb)
373 usb_kill_urb(ir->int_urb);
374 kfree(ir->int_urb->transfer_buffer);
375 usb_free_urb(ir->int_urb);
376 ir->int_urb = NULL;
381 struct tm6000_IR *ir = dev->ir;
383 if (!ir)
386 return __tm6000_ir_int_start(ir->rc);
391 struct tm6000_IR *ir = dev->ir;
393 if (!ir || !ir->rc)
396 __tm6000_ir_int_stop(ir->rc);
401 struct tm6000_IR *ir;
415 ir = kzalloc(sizeof(*ir), GFP_ATOMIC);
417 if (!ir || !rc)
423 ir->dev = dev;
424 dev->ir = ir;
425 ir->rc = rc;
431 rc->priv = ir;
436 INIT_DELAYED_WORK(&ir->work, tm6000_ir_int_work);
440 ir->polling = 50;
441 INIT_DELAYED_WORK(&ir->work, tm6000_ir_handle_key);
444 snprintf(ir->name, sizeof(ir->name), "tm5600/60x0 IR (%s)",
447 usb_make_path(dev->udev, ir->phys, sizeof(ir->phys));
448 strlcat(ir->phys, "/input0", sizeof(ir->phys));
453 rc->device_name = ir->name;
454 rc->input_phys = ir->phys;
463 /* ir register */
471 dev->ir = NULL;
473 kfree(ir);
479 struct tm6000_IR *ir = dev->ir;
483 if (!ir)
488 if (!ir->polling)
489 __tm6000_ir_int_stop(ir->rc);
491 tm6000_ir_stop(ir->rc);
495 ir->pwled = 0;
497 rc_unregister_device(ir->rc);
499 kfree(ir);
500 dev->ir = NULL;