Skip to content

Commit 23746a6

Browse files
author
Jiri Kosina
committed
HID: magicmouse: ignore 'ivalid report id' while switching modes
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 0825411 ("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 Tested-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
1 parent 966922f commit 23746a6

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

drivers/hid/hid-magicmouse.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,9 +499,17 @@ static int magicmouse_probe(struct hid_device *hdev,
499499
}
500500
report->size = 6;
501501

502+
/*
503+
* The device reponds with 'invalid report id' when feature
504+
* report switching it into multitouch mode is sent to it.
505+
*
506+
* This results in -EIO from the _raw low-level transport callback,
507+
* but there seems to be no other way of switching the mode.
508+
* Thus the super-ugly hacky success check below.
509+
*/
502510
ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature),
503511
HID_FEATURE_REPORT);
504-
if (ret != sizeof(feature)) {
512+
if (ret != -EIO) {
505513
hid_err(hdev, "unable to request touch data (%d)\n", ret);
506514
goto err_stop_hw;
507515
}

0 commit comments

Comments
 (0)