diff options
Diffstat (limited to 'media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-4.15-fix-autorepeat.patch')
-rw-r--r-- | media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-4.15-fix-autorepeat.patch | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-4.15-fix-autorepeat.patch b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-4.15-fix-autorepeat.patch deleted file mode 100644 index e3a3a737663f..000000000000 --- a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-4.15-fix-autorepeat.patch +++ /dev/null @@ -1,107 +0,0 @@ -# Source: https://github.com/s-moch/linux-saa716x/commit/0b2276ee2e6383ad577fce5c694f8c4062d5334b.patch - -From 0b2276ee2e6383ad577fce5c694f8c4062d5334b Mon Sep 17 00:00:00 2001 -From: Soeren Moch <smoch@web.de> -Date: Sat, 2 Dec 2017 20:51:10 +0100 -Subject: [PATCH] saa716x_ff: Remove autorepeat handling - -Let the input layer handle autorepeat for the IR remote. -So no repeat_key timer is required anymore. - -Signed-off-by: Soeren Moch <smoch@web.de> ---- - drivers/media/common/saa716x/saa716x_ff_ir.c | 45 ++++++++-------------------- - 1 file changed, 12 insertions(+), 33 deletions(-) - -diff --git a/drivers/media/common/saa716x/saa716x_ff_ir.c b/drivers/media/common/saa716x/saa716x_ff_ir.c -index 35624789aa862..ad6f38611026c 100644 ---- a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c -+++ b/linux/drivers/media/common/saa716x/saa716x_ff_ir.c -@@ -40,7 +40,7 @@ struct infrared { - u8 protocol; - u16 last_key; - u16 last_toggle; -- bool delay_timer_finished; -+ bool key_pressed; - }; - - #define IR_RC5 0 -@@ -52,11 +52,12 @@ static void ir_emit_keyup(unsigned long parm) - { - struct infrared *ir = (struct infrared *) parm; - -- if (!ir || !test_bit(ir->last_key, ir->input_dev->key)) -+ if (!ir || !ir->key_pressed) - return; - - input_report_key(ir->input_dev, ir->last_key, 0); - input_sync(ir->input_dev); -+ ir->key_pressed = false; - } - - -@@ -114,28 +115,18 @@ static void ir_emit_key(unsigned long parm) - return; - } - -- if (timer_pending(&ir->keyup_timer)) { -- del_timer(&ir->keyup_timer); -- if (ir->last_key != keycode || toggle != ir->last_toggle) { -- ir->delay_timer_finished = false; -- input_event(ir->input_dev, EV_KEY, ir->last_key, 0); -- input_event(ir->input_dev, EV_KEY, keycode, 1); -- input_sync(ir->input_dev); -- } else if (ir->delay_timer_finished) { -- input_event(ir->input_dev, EV_KEY, keycode, 2); -- input_sync(ir->input_dev); -- } -- } else { -- ir->delay_timer_finished = false; -- input_event(ir->input_dev, EV_KEY, keycode, 1); -- input_sync(ir->input_dev); -- } -+ if (ir->key_pressed && -+ (ir->last_key != keycode || toggle != ir->last_toggle)) -+ input_event(ir->input_dev, EV_KEY, ir->last_key, 0); - -+ input_event(ir->input_dev, EV_KEY, keycode, 1); -+ input_sync(ir->input_dev); -+ -+ ir->key_pressed = true; - ir->last_key = keycode; - ir->last_toggle = toggle; - -- ir->keyup_timer.expires = jiffies + UP_TIMEOUT; -- add_timer(&ir->keyup_timer); -+ mod_timer(&ir->keyup_timer, jiffies + UP_TIMEOUT); - - } - -@@ -166,16 +157,6 @@ static void ir_register_keys(struct infrared *ir) - ir->input_dev->keycodemax = ARRAY_SIZE(ir->key_map); - } - -- --/* called by the input driver after rep[REP_DELAY] ms */ --static void ir_repeat_key(unsigned long parm) --{ -- struct infrared *ir = (struct infrared *) parm; -- -- ir->delay_timer_finished = true; --} -- -- - /* interrupt handler */ - void saa716x_ir_handler(struct saa716x_dev *saa716x, u32 ir_cmd) - { -@@ -236,9 +217,7 @@ int saa716x_ir_init(struct saa716x_dev *saa716x) - ir->key_map[i] = i+1; - ir_register_keys(ir); - -- /* override repeat timer */ -- input_dev->timer.function = ir_repeat_key; -- input_dev->timer.data = (unsigned long) ir; -+ input_enable_softrepeat(input_dev, 800, 200); - - tasklet_init(&ir->tasklet, ir_emit_key, (unsigned long) saa716x); - saa716x->ir_priv = ir; |