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 | ||
