|
@@ -576,12 +576,15 @@ static int mt_event(struct hid_device *hid, struct hid_field *field,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- if (usage->hid == td->last_slot_field)
|
|
|
- mt_complete_slot(td, field->hidinput->input);
|
|
|
-
|
|
|
- if (field->index == td->last_field_index
|
|
|
- && td->num_received >= td->num_expected)
|
|
|
- mt_sync_frame(td, field->hidinput->input);
|
|
|
+ if (usage->usage_index + 1 == field->report_count) {
|
|
|
+ /* we only take into account the last report. */
|
|
|
+ if (usage->hid == td->last_slot_field)
|
|
|
+ mt_complete_slot(td, field->hidinput->input);
|
|
|
+
|
|
|
+ if (field->index == td->last_field_index
|
|
|
+ && td->num_received >= td->num_expected)
|
|
|
+ mt_sync_frame(td, field->hidinput->input);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|