diff options
-rw-r--r-- | drivers/hid/hid-multitouch.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c index 3687f797b731..3d2e6bbb0046 100644 --- a/drivers/hid/hid-multitouch.c +++ b/drivers/hid/hid-multitouch.c | |||
@@ -576,12 +576,15 @@ static int mt_event(struct hid_device *hid, struct hid_field *field, | |||
576 | return 0; | 576 | return 0; |
577 | } | 577 | } |
578 | 578 | ||
579 | if (usage->hid == td->last_slot_field) | 579 | if (usage->usage_index + 1 == field->report_count) { |
580 | mt_complete_slot(td, field->hidinput->input); | 580 | /* we only take into account the last report. */ |
581 | 581 | if (usage->hid == td->last_slot_field) | |
582 | if (field->index == td->last_field_index | 582 | mt_complete_slot(td, field->hidinput->input); |
583 | && td->num_received >= td->num_expected) | 583 | |
584 | mt_sync_frame(td, field->hidinput->input); | 584 | if (field->index == td->last_field_index |
585 | && td->num_received >= td->num_expected) | ||
586 | mt_sync_frame(td, field->hidinput->input); | ||
587 | } | ||
585 | 588 | ||
586 | } | 589 | } |
587 | 590 | ||