On Mar 11 2016 or thereabouts, Dmitry Torokhov wrote: > From: Benson Leung <bleung@xxxxxxxxxxxx> > > When resetting a device (especially after power loss) it is unlikely > that the firmware will keep the contact tracking data for the previous > touches and will be able to reconcile it with the new contacts, so > let's release all slots on reset resume as start anew. > > Signed-off-by: Benson Leung <bleung@xxxxxxxxxxxx> > Signed-off-by: Dmitry Torokhov <dtor@xxxxxxxxxxxx> > --- Seems good to me: Reviewed-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> Cheers, Benjamin > drivers/hid/hid-multitouch.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c > index 6adb788..e24e33c 100644 > --- a/drivers/hid/hid-multitouch.c > +++ b/drivers/hid/hid-multitouch.c > @@ -1148,8 +1148,30 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id) > } > > #ifdef CONFIG_PM > +static void mt_release_contacts(struct hid_device *hid) > +{ > + struct hid_input *hidinput; > + > + list_for_each_entry(hidinput, &hid->inputs, list) { > + struct input_dev *input_dev = hidinput->input; > + struct input_mt *mt = input_dev->mt; > + int i; > + > + if (mt) { > + for (i = 0; i < mt->num_slots; i++) { > + input_mt_slot(input_dev, i); > + input_mt_report_slot_state(input_dev, > + MT_TOOL_FINGER, > + false); > + } > + input_sync(input_dev); > + } > + } > +} > + > static int mt_reset_resume(struct hid_device *hdev) > { > + mt_release_contacts(hdev); > mt_set_maxcontacts(hdev); > mt_set_input_mode(hdev); > return 0; > -- > 2.7.0.rc3.207.g0ac5344 > > > -- > Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html