[kernel/f15] Fix breakage of Apple MagicMouse/Trackpad (rhbz #714381)
Chuck Ebbert
cebbert at fedoraproject.org
Mon Sep 26 13:38:25 UTC 2011
commit a2573a13a2c6a024d97577e062d2b89df2ec4d90
Author: Chuck Ebbert <cebbert at redhat.com>
Date: Mon Sep 26 09:39:04 2011 -0400
Fix breakage of Apple MagicMouse/Trackpad (rhbz #714381)
...ivalid-report-id-while-switching-modes-v2.patch | 62 ++++++++++++++++++++
1 files changed, 62 insertions(+), 0 deletions(-)
---
diff --git a/hid-magicmouse-ignore-ivalid-report-id-while-switching-modes-v2.patch b/hid-magicmouse-ignore-ivalid-report-id-while-switching-modes-v2.patch
new file mode 100644
index 0000000..cf87d2a
--- /dev/null
+++ b/hid-magicmouse-ignore-ivalid-report-id-while-switching-modes-v2.patch
@@ -0,0 +1,62 @@
+From 35d851df23b093ee027f827fed2213ae5e88fc7a Mon Sep 17 00:00:00 2001
+From: Jiri Kosina <jkosina at suse.cz>
+Date: Thu, 25 Aug 2011 14:21:37 +0200
+Subject: [PATCH] HID: magicmouse: ignore 'ivalid report id' while switching
+ modes, v2
+
+This is basically a more generic respin of 23746a6 ("HID: magicmouse: ignore
+'ivalid report id' while switching modes") which got reverted later by
+c3a492.
+
+It turns out that on some configurations, this is actually still the case
+and we are not able to detect in runtime.
+
+The device reponds with 'invalid report id' when feature report switching it
+into multitouch mode is sent to it.
+
+This has been silently ignored before 0825411ade ("HID: bt: Wait for ACK
+on Sent Reports"), but since this commit, it propagates -EIO from the _raw
+callback .
+
+So let the driver ignore -EIO as response to 0xd7,0x01 report, as that's
+how the device reacts in normal mode.
+
+Sad, but following reality.
+
+This fixes https://bugzilla.kernel.org/show_bug.cgi?id=35022
+
+Reported-by: Chase Douglas <chase.douglas at canonical.com>
+Reported-by: Jaikumar Ganesh <jaikumarg at android.com>
+Tested-by: Chase Douglas <chase.douglas at canonical.com>
+Tested-by: Jaikumar Ganesh <jaikumarg at android.com>
+Signed-off-by: Jiri Kosina <jkosina at suse.cz>
+---
+ drivers/hid/hid-magicmouse.c | 10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
+index b5bdab3..f0fbd7b 100644
+--- a/drivers/hid/hid-magicmouse.c
++++ b/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;
+ }
+--
+1.7.5.4
+
More information about the scm-commits
mailing list