aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/keyboard/atkbd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/keyboard/atkbd.c')
-rw-r--r--drivers/input/keyboard/atkbd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 6f5d79569136..e27a25892db4 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -456,8 +456,9 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
456 456
457 keycode = atkbd->keycode[code]; 457 keycode = atkbd->keycode[code];
458 458
459 if (keycode != ATKBD_KEY_NULL) 459 if (!(atkbd->release && test_bit(code, atkbd->force_release_mask)))
460 input_event(dev, EV_MSC, MSC_SCAN, code); 460 if (keycode != ATKBD_KEY_NULL)
461 input_event(dev, EV_MSC, MSC_SCAN, code);
461 462
462 switch (keycode) { 463 switch (keycode) {
463 case ATKBD_KEY_NULL: 464 case ATKBD_KEY_NULL:
@@ -511,6 +512,7 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
511 input_sync(dev); 512 input_sync(dev);
512 513
513 if (value && test_bit(code, atkbd->force_release_mask)) { 514 if (value && test_bit(code, atkbd->force_release_mask)) {
515 input_event(dev, EV_MSC, MSC_SCAN, code);
514 input_report_key(dev, keycode, 0); 516 input_report_key(dev, keycode, 0);
515 input_sync(dev); 517 input_sync(dev);
516 } 518 }