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
205 if (tv.tv_sec - ir->base_time.tv_sec > 1) { in bttv_rc5_timer_end()
208 gap = 1000000 * (tv.tv_sec - ir->base_time.tv_sec) + in bttv_rc5_timer_end()
209 tv.tv_usec - ir->base_time.tv_usec; in bttv_rc5_timer_end()
213 ir->active = false; in bttv_rc5_timer_end()
221 if (ir->last_bit < 20) { in bttv_rc5_timer_end()
223 dprintk("short code: %x\n", ir->code); in bttv_rc5_timer_end()
227 ir->code = (ir->code << ir->shift_by) | 1; in bttv_rc5_timer_end()
228 rc5 = bttv_rc5_decode(ir->code); in bttv_rc5_timer_end()
245 rc_keydown(ir->dev, RC_TYPE_RC5, scancode, toggle); in bttv_rc5_timer_end()
251 struct bttv_ir *ir = btv->remote; in bttv_rc5_irq() local
265 if (tv.tv_sec - ir->base_time.tv_sec > 1) { in bttv_rc5_irq()
268 gap = 1000000 * (tv.tv_sec - ir->base_time.tv_sec) + in bttv_rc5_irq()
269 tv.tv_usec - ir->base_time.tv_usec; in bttv_rc5_irq()
280 if (ir->active) { in bttv_rc5_irq()
283 if (ir->last_bit < 28) { in bttv_rc5_irq()
284 ir->last_bit = (gap - ir_rc5_remote_gap / 2) / in bttv_rc5_irq()
286 ir->code |= 1 << ir->last_bit; in bttv_rc5_irq()
290 ir->active = true; in bttv_rc5_irq()
291 ir->code = 0; in bttv_rc5_irq()
292 ir->base_time = tv; in bttv_rc5_irq()
293 ir->last_bit = 0; in bttv_rc5_irq()
295 mod_timer(&ir->timer, current_jiffies + msecs_to_jiffies(30)); in bttv_rc5_irq()
306 static void bttv_ir_start(struct bttv *btv, struct bttv_ir *ir) in bttv_ir_start() argument
308 if (ir->polling) { in bttv_ir_start()
309 setup_timer(&ir->timer, bttv_input_timer, (unsigned long)btv); in bttv_ir_start()
310 ir->timer.expires = jiffies + msecs_to_jiffies(1000); in bttv_ir_start()
311 add_timer(&ir->timer); in bttv_ir_start()
312 } else if (ir->rc5_gpio) { in bttv_ir_start()
314 setup_timer(&ir->timer, bttv_rc5_timer_end, (unsigned long)ir); in bttv_ir_start()
315 ir->shift_by = 1; in bttv_ir_start()
316 ir->rc5_remote_gap = ir_rc5_remote_gap; in bttv_ir_start()
339 static int get_key_pv951(struct IR_i2c *ir, enum rc_type *protocol, in get_key_pv951() argument
345 if (1 != i2c_master_recv(ir->c, &b, 1)) { in get_key_pv951()
423 struct bttv_ir *ir; in bttv_input_init() local
431 ir = kzalloc(sizeof(*ir),GFP_KERNEL); in bttv_input_init()
433 if (!ir || !rc) in bttv_input_init()
442 ir->mask_keycode = 0xf88000; in bttv_input_init()
443 ir->mask_keydown = 0x010000; in bttv_input_init()
444 ir->polling = 50; // ms in bttv_input_init()
450 ir->mask_keycode = 0x0f00c0; in bttv_input_init()
451 ir->mask_keydown = 0x000020; in bttv_input_init()
452 ir->polling = 50; // ms in bttv_input_init()
457 ir->mask_keycode = 0x003e00; in bttv_input_init()
458 ir->mask_keyup = 0x010000; in bttv_input_init()
459 ir->polling = 50; // ms in bttv_input_init()
465 ir->mask_keycode = 0x001f00; in bttv_input_init()
466 ir->mask_keyup = 0x008000; in bttv_input_init()
467 ir->polling = 50; // ms in bttv_input_init()
472 ir->mask_keycode = 0x1f8; in bttv_input_init()
477 ir->mask_keycode = 0x0008e000; in bttv_input_init()
478 ir->mask_keydown = 0x00200000; in bttv_input_init()
482 ir->mask_keycode = 0x001f00; in bttv_input_init()
483 ir->mask_keyup = 0x008000; in bttv_input_init()
484 ir->polling = 50; // ms in bttv_input_init()
491 ir->mask_keycode = 0x001F00; in bttv_input_init()
492 ir->mask_keyup = 0x006000; in bttv_input_init()
493 ir->polling = 50; // ms in bttv_input_init()
497 ir->rc5_gpio = true; in bttv_input_init()
501 ir->mask_keycode = 0x001F00; in bttv_input_init()
502 ir->mask_keyup = 0x004000; in bttv_input_init()
503 ir->polling = 50; /* ms */ in bttv_input_init()
507 ir->mask_keycode = 0x001f00; in bttv_input_init()
508 ir->mask_keyup = 0x006000; in bttv_input_init()
509 ir->polling = 50; /* ms */ in bttv_input_init()
513 ir->mask_keycode = 0x00fd00; in bttv_input_init()
514 ir->mask_keyup = 0x000080; in bttv_input_init()
515 ir->polling = 1; /* ms */ in bttv_input_init()
516 ir->last_gpio = ir_extract_bits(bttv_gpio_read(&btv->c), in bttv_input_init()
517 ir->mask_keycode); in bttv_input_init()
527 if (ir->rc5_gpio) { in bttv_input_init()
536 bttv_gpio_inout(&btv->c, ir->mask_keycode | ir->mask_keydown, 0); in bttv_input_init()
540 ir->dev = rc; in bttv_input_init()
542 snprintf(ir->name, sizeof(ir->name), "bttv IR (card=%d)", in bttv_input_init()
544 snprintf(ir->phys, sizeof(ir->phys), "pci-%s/ir0", in bttv_input_init()
547 rc->input_name = ir->name; in bttv_input_init()
548 rc->input_phys = ir->phys; in bttv_input_init()
562 btv->remote = ir; in bttv_input_init()
563 bttv_ir_start(btv, ir); in bttv_input_init()
577 kfree(ir); in bttv_input_init()