aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/rc/ati_remote.c21
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);
652nosync:
653 ati_remote->old_data = data[2];
655} 654}
656 655
657/* 656/*