This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: rc: mce_kbd decoder: low timeout values cause double keydowns
Author:  Sean Young <s...@mess.org>
Date:    Sun Mar 25 11:45:40 2018 -0400

The mce keyboard repeats pressed keys every 100ms. If the IR timeout
is set to less than that, we send key up events before the repeat
arrives, so we have key up/key down for each IR repeat.

The keyboard ends any sequence with a 0 scancode, in which case all keys
are cleared so there is no need to run the timeout timer: it only exists
for the case that the final 0 was not received.

Signed-off-by: Sean Young <s...@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 drivers/media/rc/ir-mce_kbd-decoder.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

---

diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c 
b/drivers/media/rc/ir-mce_kbd-decoder.c
index 05f2a36769c0..9d609dca6e2b 100644
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
@@ -322,11 +322,13 @@ again:
                        scancode = data->body & 0xffff;
                        dev_dbg(&dev->dev, "keyboard data 0x%08x\n",
                                data->body);
-                       if (dev->timeout)
-                               delay = usecs_to_jiffies(dev->timeout / 1000);
-                       else
-                               delay = msecs_to_jiffies(100);
-                       mod_timer(&data->rx_timeout, jiffies + delay);
+                       if (scancode) {
+                               delay = nsecs_to_jiffies(dev->timeout) +
+                                       msecs_to_jiffies(100);
+                               mod_timer(&data->rx_timeout, jiffies + delay);
+                       } else {
+                               del_timer(&data->rx_timeout);
+                       }
                        /* Pass data to keyboard buffer parser */
                        ir_mce_kbd_process_keyboard_data(dev, scancode);
                        lsc.rc_proto = RC_PROTO_MCIR2_KBD;

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to