Lines Matching refs:ir

69 	printk(KERN_DEBUG "%s IR: " fmt , ir->core->name , ##arg)
76 static void cx88_ir_handle_key(struct cx88_IR *ir) in cx88_ir_handle_key() argument
78 struct cx88_core *core = ir->core; in cx88_ir_handle_key()
82 gpio = cx_read(ir->gpio_addr); in cx88_ir_handle_key()
114 if (ir->polling) { in cx88_ir_handle_key()
115 if (ir->last_gpio == auxgpio) in cx88_ir_handle_key()
117 ir->last_gpio = auxgpio; in cx88_ir_handle_key()
121 data = ir_extract_bits(gpio, ir->mask_keycode); in cx88_ir_handle_key()
124 ir->polling ? "poll" : "irq", in cx88_ir_handle_key()
125 (gpio & ir->mask_keydown) ? " down" : "", in cx88_ir_handle_key()
126 (gpio & ir->mask_keyup) ? " up" : ""); in cx88_ir_handle_key()
128 if (ir->core->boardnr == CX88_BOARD_NORWOOD_MICRO) { in cx88_ir_handle_key()
133 rc_keydown(ir->dev, RC_TYPE_UNKNOWN, data, 0); in cx88_ir_handle_key()
135 } else if (ir->core->boardnr == CX88_BOARD_PROLINK_PLAYTVPVR || in cx88_ir_handle_key()
136 ir->core->boardnr == CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO) { in cx88_ir_handle_key()
146 if (0 == (gpio & ir->mask_keyup)) in cx88_ir_handle_key()
147 rc_keydown_notimeout(ir->dev, RC_TYPE_NEC, scancode, 0); in cx88_ir_handle_key()
149 rc_keyup(ir->dev); in cx88_ir_handle_key()
151 } else if (ir->mask_keydown) { in cx88_ir_handle_key()
153 if (gpio & ir->mask_keydown) in cx88_ir_handle_key()
154 rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0); in cx88_ir_handle_key()
156 rc_keyup(ir->dev); in cx88_ir_handle_key()
158 } else if (ir->mask_keyup) { in cx88_ir_handle_key()
160 if (0 == (gpio & ir->mask_keyup)) in cx88_ir_handle_key()
161 rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0); in cx88_ir_handle_key()
163 rc_keyup(ir->dev); in cx88_ir_handle_key()
167 rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0); in cx88_ir_handle_key()
168 rc_keyup(ir->dev); in cx88_ir_handle_key()
175 struct cx88_IR *ir = container_of(timer, struct cx88_IR, timer); in cx88_ir_work() local
177 cx88_ir_handle_key(ir); in cx88_ir_work()
178 missed = hrtimer_forward_now(&ir->timer, in cx88_ir_work()
179 ktime_set(0, ir->polling * 1000000)); in cx88_ir_work()
189 struct cx88_IR *ir; in __cx88_ir_start() local
191 if (!core || !core->ir) in __cx88_ir_start()
194 ir = core->ir; in __cx88_ir_start()
196 if (ir->polling) { in __cx88_ir_start()
197 hrtimer_init(&ir->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in __cx88_ir_start()
198 ir->timer.function = cx88_ir_work; in __cx88_ir_start()
199 hrtimer_start(&ir->timer, in __cx88_ir_start()
200 ktime_set(0, ir->polling * 1000000), in __cx88_ir_start()
203 if (ir->sampling) { in __cx88_ir_start()
214 struct cx88_IR *ir; in __cx88_ir_stop() local
216 if (!core || !core->ir) in __cx88_ir_stop()
219 ir = core->ir; in __cx88_ir_stop()
220 if (ir->sampling) { in __cx88_ir_stop()
225 if (ir->polling) in __cx88_ir_stop()
226 hrtimer_cancel(&ir->timer); in __cx88_ir_stop()
231 if (core->ir->users) in cx88_ir_start()
239 if (core->ir->users) in cx88_ir_stop()
247 core->ir->users++; in cx88_ir_open()
255 core->ir->users--; in cx88_ir_close()
256 if (!core->ir->users) in cx88_ir_close()
264 struct cx88_IR *ir; in cx88_ir_init() local
273 ir = kzalloc(sizeof(*ir), GFP_KERNEL); in cx88_ir_init()
275 if (!ir || !dev) in cx88_ir_init()
278 ir->dev = dev; in cx88_ir_init()
286 ir->gpio_addr = MO_GP1_IO; in cx88_ir_init()
287 ir->mask_keycode = 0x1f; in cx88_ir_init()
288 ir->mask_keyup = 0x60; in cx88_ir_init()
289 ir->polling = 50; /* ms */ in cx88_ir_init()
293 ir->sampling = 0xeb04; /* address */ in cx88_ir_init()
307 ir->sampling = 1; in cx88_ir_init()
315 ir->gpio_addr = MO_GP0_IO; in cx88_ir_init()
316 ir->mask_keycode = 0x8f8; in cx88_ir_init()
317 ir->mask_keyup = 0x100; in cx88_ir_init()
318 ir->polling = 50; /* ms */ in cx88_ir_init()
326 ir->gpio_addr = MO_GP0_IO; in cx88_ir_init()
327 ir->mask_keycode = 0x8f8; in cx88_ir_init()
328 ir->mask_keyup = 0x100; in cx88_ir_init()
329 ir->polling = 1; /* ms */ in cx88_ir_init()
333 ir->gpio_addr = MO_GP0_IO; in cx88_ir_init()
334 ir->mask_keycode = 0xfd; in cx88_ir_init()
335 ir->mask_keydown = 0x02; in cx88_ir_init()
336 ir->polling = 5; /* ms */ in cx88_ir_init()
349 ir->gpio_addr = MO_GP1_IO; in cx88_ir_init()
350 ir->mask_keyup = 0x80; in cx88_ir_init()
351 ir->polling = 10; /* ms */ in cx88_ir_init()
357 ir->gpio_addr = MO_GP1_IO; in cx88_ir_init()
358 ir->mask_keycode = 0x3f; in cx88_ir_init()
359 ir->mask_keyup = 0x80; in cx88_ir_init()
360 ir->polling = 1; /* ms */ in cx88_ir_init()
364 ir->gpio_addr = MO_GP1_IO; in cx88_ir_init()
365 ir->mask_keycode = 0x1f; in cx88_ir_init()
366 ir->mask_keyup = 0x60; in cx88_ir_init()
367 ir->polling = 1; /* ms */ in cx88_ir_init()
371 ir->gpio_addr = MO_GP1_IO; in cx88_ir_init()
372 ir->mask_keycode = 0xbf; in cx88_ir_init()
373 ir->mask_keyup = 0x40; in cx88_ir_init()
374 ir->polling = 50; /* ms */ in cx88_ir_init()
378 ir->gpio_addr = MO_GP1_IO; in cx88_ir_init()
379 ir->mask_keycode = 0x1f; in cx88_ir_init()
380 ir->mask_keyup = 0x40; in cx88_ir_init()
381 ir->polling = 1; /* ms */ in cx88_ir_init()
386 ir->gpio_addr = MO_GP2_IO; in cx88_ir_init()
387 ir->mask_keycode = 0xfb; in cx88_ir_init()
388 ir->mask_keydown = 0x02; in cx88_ir_init()
389 ir->polling = 50; /* ms */ in cx88_ir_init()
399 ir->sampling = 0xff00; /* address */ in cx88_ir_init()
405 ir->sampling = 0xff00; /* address */ in cx88_ir_init()
409 ir->sampling = 0xff00; /* address */ in cx88_ir_init()
413 ir->gpio_addr = MO_GP1_IO; in cx88_ir_init()
414 ir->mask_keycode = 0x0e; in cx88_ir_init()
415 ir->mask_keyup = 0x80; in cx88_ir_init()
416 ir->polling = 50; /* ms */ in cx88_ir_init()
420 ir->gpio_addr = MO_GP0_IO; in cx88_ir_init()
421 ir->mask_keycode = 0xfa; in cx88_ir_init()
422 ir->polling = 50; /* ms */ in cx88_ir_init()
426 ir->sampling = 1; in cx88_ir_init()
430 ir->gpio_addr = MO_GP2_IO; in cx88_ir_init()
431 ir->mask_keycode = 0x7e; in cx88_ir_init()
432 ir->polling = 100; /* ms */ in cx88_ir_init()
436 ir->sampling = 0xff00; /* address */ in cx88_ir_init()
457 if (hardware_mask && !ir->mask_keycode) in cx88_ir_init()
458 ir->mask_keycode = hardware_mask; in cx88_ir_init()
461 snprintf(ir->name, sizeof(ir->name), "cx88 IR (%s)", core->board.name); in cx88_ir_init()
462 snprintf(ir->phys, sizeof(ir->phys), "pci-%s/ir0", pci_name(pci)); in cx88_ir_init()
464 dev->input_name = ir->name; in cx88_ir_init()
465 dev->input_phys = ir->phys; in cx88_ir_init()
483 if (ir->sampling) { in cx88_ir_init()
491 ir->core = core; in cx88_ir_init()
492 core->ir = ir; in cx88_ir_init()
503 core->ir = NULL; in cx88_ir_init()
504 kfree(ir); in cx88_ir_init()
510 struct cx88_IR *ir = core->ir; in cx88_ir_fini() local
513 if (NULL == ir) in cx88_ir_fini()
517 rc_unregister_device(ir->dev); in cx88_ir_fini()
518 kfree(ir); in cx88_ir_fini()
521 core->ir = NULL; in cx88_ir_fini()
529 struct cx88_IR *ir = core->ir; in cx88_ir_irq() local
534 if (!ir || !ir->sampling) in cx88_ir_irq()
544 if (samples == 0xff && ir->dev->idle) in cx88_ir_irq()
552 ir_raw_event_store_with_filter(ir->dev, &ev); in cx88_ir_irq()
555 ir_raw_event_handle(ir->dev); in cx88_ir_irq()
558 static int get_key_pvr2000(struct IR_i2c *ir, enum rc_type *protocol, in get_key_pvr2000() argument
564 flags = i2c_smbus_read_byte_data(ir->c, 0x10); in get_key_pvr2000()
574 code = i2c_smbus_read_byte_data(ir->c, 0x00); in get_key_pvr2000()