* [PATCH] HID: multitouch: Release all touch slots on reset_resume
@ 2016-03-11 22:19 Dmitry Torokhov
2016-03-14 8:05 ` Benjamin Tissoires
2016-03-14 9:10 ` Jiri Kosina
0 siblings, 2 replies; 3+ messages in thread
From: Dmitry Torokhov @ 2016-03-11 22:19 UTC (permalink / raw)
To: Jiri Kosina; +Cc: Benjamin Tissoires, Benson Leung, linux-input, linux-kernel
From: Benson Leung <bleung@chromium.org>
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@chromium.org>
Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
---
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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] HID: multitouch: Release all touch slots on reset_resume
2016-03-11 22:19 [PATCH] HID: multitouch: Release all touch slots on reset_resume Dmitry Torokhov
@ 2016-03-14 8:05 ` Benjamin Tissoires
2016-03-14 9:10 ` Jiri Kosina
1 sibling, 0 replies; 3+ messages in thread
From: Benjamin Tissoires @ 2016-03-14 8:05 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Jiri Kosina, Benson Leung, linux-input, linux-kernel
On Mar 11 2016 or thereabouts, Dmitry Torokhov wrote:
> From: Benson Leung <bleung@chromium.org>
>
> 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@chromium.org>
> Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
> ---
Seems good to me:
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] HID: multitouch: Release all touch slots on reset_resume
2016-03-11 22:19 [PATCH] HID: multitouch: Release all touch slots on reset_resume Dmitry Torokhov
2016-03-14 8:05 ` Benjamin Tissoires
@ 2016-03-14 9:10 ` Jiri Kosina
1 sibling, 0 replies; 3+ messages in thread
From: Jiri Kosina @ 2016-03-14 9:10 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Benjamin Tissoires, Benson Leung, linux-input, linux-kernel
On Fri, 11 Mar 2016, Dmitry Torokhov wrote:
> From: Benson Leung <bleung@chromium.org>
>
> 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@chromium.org>
> Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Applied to for-4.6/multitouch.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-14 9:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-11 22:19 [PATCH] HID: multitouch: Release all touch slots on reset_resume Dmitry Torokhov
2016-03-14 8:05 ` Benjamin Tissoires
2016-03-14 9:10 ` Jiri Kosina
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).