Lines Matching refs:ir
55 struct bttv_ir *ir = btv->remote; in ir_handle_key() local
60 if (ir->polling) { in ir_handle_key()
61 if (ir->last_gpio == gpio) in ir_handle_key()
63 ir->last_gpio = gpio; in ir_handle_key()
67 data = ir_extract_bits(gpio, ir->mask_keycode); in ir_handle_key()
70 ir->polling ? "poll" : "irq", in ir_handle_key()
71 (gpio & ir->mask_keydown) ? " down" : "", in ir_handle_key()
72 (gpio & ir->mask_keyup) ? " up" : ""); in ir_handle_key()
74 if ((ir->mask_keydown && (gpio & ir->mask_keydown)) || in ir_handle_key()
75 (ir->mask_keyup && !(gpio & ir->mask_keyup))) { in ir_handle_key()
76 rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0); in ir_handle_key()
81 rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0); in ir_handle_key()
83 rc_keyup(ir->dev); in ir_handle_key()
89 struct bttv_ir *ir = btv->remote; in ir_enltv_handle_key() local
96 data = ir_extract_bits(gpio, ir->mask_keycode); in ir_enltv_handle_key()
99 keyup = (gpio & ir->mask_keyup) ? 1 << 31 : 0; in ir_enltv_handle_key()
101 if ((ir->last_gpio & 0x7f) != data) { in ir_enltv_handle_key()
104 (gpio & ir->mask_keyup) ? " up" : "up/down"); in ir_enltv_handle_key()
106 rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0); in ir_enltv_handle_key()
108 rc_keyup(ir->dev); in ir_enltv_handle_key()
110 if ((ir->last_gpio & 1 << 31) == keyup) in ir_enltv_handle_key()
115 (gpio & ir->mask_keyup) ? " up" : "down"); in ir_enltv_handle_key()
118 rc_keyup(ir->dev); in ir_enltv_handle_key()
120 rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0); in ir_enltv_handle_key()
123 ir->last_gpio = data | keyup; in ir_enltv_handle_key()
130 struct bttv_ir *ir = btv->remote; in bttv_input_irq() local
132 if (ir->rc5_gpio) in bttv_input_irq()
134 else if (!ir->polling) in bttv_input_irq()
141 struct bttv_ir *ir = btv->remote; in bttv_input_timer() local
147 mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling)); in bttv_input_timer()
196 struct bttv_ir *ir = (struct bttv_ir *)data; in bttv_rc5_timer_end() local
204 gap = ktime_to_us(ktime_sub(tv, ir->base_time)); in bttv_rc5_timer_end()
210 ir->active = false; in bttv_rc5_timer_end()
218 if (ir->last_bit < 20) { in bttv_rc5_timer_end()
220 dprintk("short code: %x\n", ir->code); in bttv_rc5_timer_end()
224 ir->code = (ir->code << ir->shift_by) | 1; in bttv_rc5_timer_end()
225 rc5 = bttv_rc5_decode(ir->code); in bttv_rc5_timer_end()
242 rc_keydown(ir->dev, RC_TYPE_RC5, scancode, toggle); in bttv_rc5_timer_end()
248 struct bttv_ir *ir = btv->remote; in bttv_rc5_irq() local
261 gap = ktime_to_us(ktime_sub(tv, ir->base_time)); in bttv_rc5_irq()
275 if (ir->active) { in bttv_rc5_irq()
278 if (ir->last_bit < 28) { in bttv_rc5_irq()
279 ir->last_bit = (gap - ir_rc5_remote_gap / 2) / in bttv_rc5_irq()
281 ir->code |= 1 << ir->last_bit; in bttv_rc5_irq()
285 ir->active = true; in bttv_rc5_irq()
286 ir->code = 0; in bttv_rc5_irq()
287 ir->base_time = tv; in bttv_rc5_irq()
288 ir->last_bit = 0; in bttv_rc5_irq()
290 mod_timer(&ir->timer, current_jiffies + msecs_to_jiffies(30)); in bttv_rc5_irq()
301 static void bttv_ir_start(struct bttv *btv, struct bttv_ir *ir) in bttv_ir_start() argument
303 if (ir->polling) { in bttv_ir_start()
304 setup_timer(&ir->timer, bttv_input_timer, (unsigned long)btv); in bttv_ir_start()
305 ir->timer.expires = jiffies + msecs_to_jiffies(1000); in bttv_ir_start()
306 add_timer(&ir->timer); in bttv_ir_start()
307 } else if (ir->rc5_gpio) { in bttv_ir_start()
309 setup_timer(&ir->timer, bttv_rc5_timer_end, (unsigned long)ir); in bttv_ir_start()
310 ir->shift_by = 1; in bttv_ir_start()
311 ir->rc5_remote_gap = ir_rc5_remote_gap; in bttv_ir_start()
334 static int get_key_pv951(struct IR_i2c *ir, enum rc_type *protocol, in get_key_pv951() argument
340 if (1 != i2c_master_recv(ir->c, &b, 1)) { in get_key_pv951()
418 struct bttv_ir *ir; in bttv_input_init() local
426 ir = kzalloc(sizeof(*ir),GFP_KERNEL); in bttv_input_init()
428 if (!ir || !rc) in bttv_input_init()
437 ir->mask_keycode = 0xf88000; in bttv_input_init()
438 ir->mask_keydown = 0x010000; in bttv_input_init()
439 ir->polling = 50; // ms in bttv_input_init()
445 ir->mask_keycode = 0x0f00c0; in bttv_input_init()
446 ir->mask_keydown = 0x000020; in bttv_input_init()
447 ir->polling = 50; // ms in bttv_input_init()
452 ir->mask_keycode = 0x003e00; in bttv_input_init()
453 ir->mask_keyup = 0x010000; in bttv_input_init()
454 ir->polling = 50; // ms in bttv_input_init()
460 ir->mask_keycode = 0x001f00; in bttv_input_init()
461 ir->mask_keyup = 0x008000; in bttv_input_init()
462 ir->polling = 50; // ms in bttv_input_init()
467 ir->mask_keycode = 0x1f8; in bttv_input_init()
472 ir->mask_keycode = 0x0008e000; in bttv_input_init()
473 ir->mask_keydown = 0x00200000; in bttv_input_init()
477 ir->mask_keycode = 0x001f00; in bttv_input_init()
478 ir->mask_keyup = 0x008000; in bttv_input_init()
479 ir->polling = 50; // ms in bttv_input_init()
486 ir->mask_keycode = 0x001F00; in bttv_input_init()
487 ir->mask_keyup = 0x006000; in bttv_input_init()
488 ir->polling = 50; // ms in bttv_input_init()
492 ir->rc5_gpio = true; in bttv_input_init()
496 ir->mask_keycode = 0x001F00; in bttv_input_init()
497 ir->mask_keyup = 0x004000; in bttv_input_init()
498 ir->polling = 50; /* ms */ in bttv_input_init()
502 ir->mask_keycode = 0x001f00; in bttv_input_init()
503 ir->mask_keyup = 0x006000; in bttv_input_init()
504 ir->polling = 50; /* ms */ in bttv_input_init()
508 ir->mask_keycode = 0x00fd00; in bttv_input_init()
509 ir->mask_keyup = 0x000080; in bttv_input_init()
510 ir->polling = 1; /* ms */ in bttv_input_init()
511 ir->last_gpio = ir_extract_bits(bttv_gpio_read(&btv->c), in bttv_input_init()
512 ir->mask_keycode); in bttv_input_init()
522 if (ir->rc5_gpio) { in bttv_input_init()
531 bttv_gpio_inout(&btv->c, ir->mask_keycode | ir->mask_keydown, 0); in bttv_input_init()
535 ir->dev = rc; in bttv_input_init()
537 snprintf(ir->name, sizeof(ir->name), "bttv IR (card=%d)", in bttv_input_init()
539 snprintf(ir->phys, sizeof(ir->phys), "pci-%s/ir0", in bttv_input_init()
542 rc->input_name = ir->name; in bttv_input_init()
543 rc->input_phys = ir->phys; in bttv_input_init()
557 btv->remote = ir; in bttv_input_init()
558 bttv_ir_start(btv, ir); in bttv_input_init()
572 kfree(ir); in bttv_input_init()