|
@@ -499,9 +499,17 @@ static int magicmouse_probe(struct hid_device *hdev,
|
|
|
}
|
|
|
report->size = 6;
|
|
|
|
|
|
+ /*
|
|
|
+ * The device reponds 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) {
|
|
|
hid_err(hdev, "unable to request touch data (%d)\n", ret);
|
|
|
goto err_stop_hw;
|
|
|
}
|