Protocols like NEC generate around 10 repeat events per second.

The input events are not very useful for userspace but still waste power
by waking up every listener. So let's remove them (MSC_SCAN events
are still generated for the initial keypress).

Signed-off-by: David Härdeman <da...@hardeman.nu>
---
 drivers/media/rc/rc-main.c |   13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
index 7387bd4d75b0..9f490aa11bc4 100644
--- a/drivers/media/rc/rc-main.c
+++ b/drivers/media/rc/rc-main.c
@@ -616,16 +616,11 @@ void rc_repeat(struct rc_dev *dev)
 
        spin_lock_irqsave(&dev->keylock, flags);
 
-       if (!dev->keypressed)
-               goto out;
-
-       input_event(dev->input_dev, EV_MSC, MSC_SCAN, dev->last_scancode);
-       input_sync(dev->input_dev);
-
-       dev->keyup_jiffies = jiffies + msecs_to_jiffies(IR_KEYPRESS_TIMEOUT);
-       mod_timer(&dev->timer_keyup, dev->keyup_jiffies);
+       if (dev->keypressed) {
+               dev->keyup_jiffies = jiffies + 
msecs_to_jiffies(IR_KEYPRESS_TIMEOUT);
+               mod_timer(&dev->timer_keyup, dev->keyup_jiffies);
+       }
 
-out:
        spin_unlock_irqrestore(&dev->keylock, flags);
 }
 EXPORT_SYMBOL_GPL(rc_repeat);

Reply via email to