diff options
Diffstat (limited to 'linux/drivers/media')
-rw-r--r-- | linux/drivers/media/dvb/ttpci/av7110_ir.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/linux/drivers/media/dvb/ttpci/av7110_ir.c b/linux/drivers/media/dvb/ttpci/av7110_ir.c index edec95884..de1efcd24 100644 --- a/linux/drivers/media/dvb/ttpci/av7110_ir.c +++ b/linux/drivers/media/dvb/ttpci/av7110_ir.c @@ -12,7 +12,7 @@ #endif -#define UP_TIMEOUT (HZ/7) +#define UP_TIMEOUT (HZ/4) static int av7110_ir_debug = 0; @@ -105,11 +105,14 @@ void av7110_emit_key (u32 ircom) if (timer_pending (&keyup_timer)) { del_timer (&keyup_timer); - if (keyup_timer.data != keycode || new_toggle != old_toggle) + if (keyup_timer.data != keycode || new_toggle != old_toggle) { input_event (&input_dev, EV_KEY, keyup_timer.data, !!0); - } + input_event (&input_dev, EV_KEY, keycode, !0); + } else + input_event (&input_dev, EV_KEY, keycode, 2); - input_event (&input_dev, EV_KEY, keycode, !0); + } else + input_event (&input_dev, EV_KEY, keycode, !0); keyup_timer.expires = jiffies + UP_TIMEOUT; keyup_timer.data = keycode; @@ -135,6 +138,12 @@ void input_register_keys (void) } +static void input_repeat_key(unsigned long data) +{ + /* dummy routine to disable autorepeat in the input driver */ +} + + static int av7110_ir_write_proc (struct file *file, const char *buffer, unsigned long count, void *data) @@ -171,6 +180,7 @@ int __init av7110_ir_init (void) input_register_keys (); input_register_device(&input_dev); + input_dev.timer.function = input_repeat_key; av7110_setup_irc_config (NULL, 0x0001); av7110_register_irc_handler (av7110_emit_key); |