diff options
-rw-r--r-- | drivers/media/rc/ati_remote.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/drivers/media/rc/ati_remote.c b/drivers/media/rc/ati_remote.c index a41986ca1310..8a15ee5e728b 100644 --- a/drivers/media/rc/ati_remote.c +++ b/drivers/media/rc/ati_remote.c | |||
@@ -568,7 +568,6 @@ static void ati_remote_input_report(struct urb *urb) | |||
568 | */ | 568 | */ |
569 | input_event(dev, EV_KEY, ati_remote_tbl[index].code, | 569 | input_event(dev, EV_KEY, ati_remote_tbl[index].code, |
570 | !(data[2] & 1)); | 570 | !(data[2] & 1)); |
571 | input_sync(dev); | ||
572 | 571 | ||
573 | ati_remote->old_jiffies = jiffies; | 572 | ati_remote->old_jiffies = jiffies; |
574 | 573 | ||
@@ -585,7 +584,6 @@ static void ati_remote_input_report(struct urb *urb) | |||
585 | ati_remote->first_jiffies = now; | 584 | ati_remote->first_jiffies = now; |
586 | } | 585 | } |
587 | 586 | ||
588 | ati_remote->old_data = data[2]; | ||
589 | ati_remote->old_jiffies = now; | 587 | ati_remote->old_jiffies = now; |
590 | 588 | ||
591 | /* Ensure we skip at least the 4 first duplicate events | 589 | /* Ensure we skip at least the 4 first duplicate events |
@@ -598,7 +596,10 @@ static void ati_remote_input_report(struct urb *urb) | |||
598 | msecs_to_jiffies(repeat_delay)))) | 596 | msecs_to_jiffies(repeat_delay)))) |
599 | return; | 597 | return; |
600 | 598 | ||
601 | if (index < 0) { | 599 | if (index >= 0) { |
600 | input_event(dev, EV_KEY, ati_remote_tbl[index].code, 1); | ||
601 | input_event(dev, EV_KEY, ati_remote_tbl[index].code, 0); | ||
602 | } else { | ||
602 | /* Not a mouse event, hand it to rc-core. */ | 603 | /* Not a mouse event, hand it to rc-core. */ |
603 | int count = 1; | 604 | int count = 1; |
604 | 605 | ||
@@ -623,13 +624,9 @@ static void ati_remote_input_report(struct urb *urb) | |||
623 | scancode, data[2]); | 624 | scancode, data[2]); |
624 | rc_keyup(ati_remote->rdev); | 625 | rc_keyup(ati_remote->rdev); |
625 | } | 626 | } |
626 | return; | 627 | goto nosync; |
627 | } | 628 | } |
628 | 629 | ||
629 | input_event(dev, EV_KEY, ati_remote_tbl[index].code, 1); | ||
630 | input_event(dev, EV_KEY, ati_remote_tbl[index].code, 0); | ||
631 | input_sync(dev); | ||
632 | |||
633 | } else if (ati_remote_tbl[index].kind == KIND_ACCEL) { | 630 | } else if (ati_remote_tbl[index].kind == KIND_ACCEL) { |
634 | signed char dx = ati_remote_tbl[index].code >> 8; | 631 | signed char dx = ati_remote_tbl[index].code >> 8; |
635 | signed char dy = ati_remote_tbl[index].code & 255; | 632 | signed char dy = ati_remote_tbl[index].code & 255; |
@@ -644,14 +641,16 @@ static void ati_remote_input_report(struct urb *urb) | |||
644 | input_report_rel(dev, REL_X, dx * acc); | 641 | input_report_rel(dev, REL_X, dx * acc); |
645 | if (dy) | 642 | if (dy) |
646 | input_report_rel(dev, REL_Y, dy * acc); | 643 | input_report_rel(dev, REL_Y, dy * acc); |
647 | input_sync(dev); | ||
648 | |||
649 | ati_remote->old_jiffies = jiffies; | 644 | ati_remote->old_jiffies = jiffies; |
650 | ati_remote->old_data = data[2]; | 645 | |
651 | } else { | 646 | } else { |
652 | dev_dbg(&ati_remote->interface->dev, "ati_remote kind=%d\n", | 647 | dev_dbg(&ati_remote->interface->dev, "ati_remote kind=%d\n", |
653 | ati_remote_tbl[index].kind); | 648 | ati_remote_tbl[index].kind); |
649 | return; | ||
654 | } | 650 | } |
651 | input_sync(dev); | ||
652 | nosync: | ||
653 | ati_remote->old_data = data[2]; | ||
655 | } | 654 | } |
656 | 655 | ||
657 | /* | 656 | /* |