From 901d748d08f5c34b505541e6c104f17648dd3e7c Mon Sep 17 00:00:00 2001 From: Jiri Kosina Date: Thu, 25 Aug 2011 14:21:37 +0200 Subject: [PATCH] --- yaml --- r: 263677 b: refs/heads/master c: 35d851df23b093ee027f827fed2213ae5e88fc7a h: refs/heads/master i: 263675: c926da72f9dc20ce4f58cc1c7a2a9f7d2f241272 v: v3 --- [refs] | 2 +- trunk/drivers/hid/hid-magicmouse.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 3c2953e19b5d..c7f31d42c0e1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4f6fdf08681cecd9f38499de7a02eb4f05f399a7 +refs/heads/master: 35d851df23b093ee027f827fed2213ae5e88fc7a diff --git a/trunk/drivers/hid/hid-magicmouse.c b/trunk/drivers/hid/hid-magicmouse.c index b5bdab3299bc..f0fbd7bd239e 100644 --- a/trunk/drivers/hid/hid-magicmouse.c +++ b/trunk/drivers/hid/hid-magicmouse.c @@ -537,9 +537,17 @@ static int magicmouse_probe(struct hid_device *hdev, } report->size = 6; + /* + * Some devices repond with 'invalid report id' when feature + * report switching it into multitouch mode is sent to it. + * + * This results in -EIO from the _raw low-level transport callback, + * but there seems to be no other way of switching the mode. + * Thus the super-ugly hacky success check below. + */ ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature), HID_FEATURE_REPORT); - if (ret != sizeof(feature)) { + if (ret != -EIO && ret != sizeof(feature)) { hid_err(hdev, "unable to request touch data (%d)\n", ret); goto err_stop_hw; }