diff options
-rw-r--r-- | 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 318cc40df92d..82f0c3d741f2 100644 --- a/drivers/hid/hid-magicmouse.c +++ b/drivers/hid/hid-magicmouse.c | |||
@@ -499,9 +499,17 @@ static int magicmouse_probe(struct hid_device *hdev, | |||
499 | } | 499 | } |
500 | report->size = 6; | 500 | report->size = 6; |
501 | 501 | ||
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 | */ | ||
502 | ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature), | 510 | ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature), |
503 | HID_FEATURE_REPORT); | 511 | HID_FEATURE_REPORT); |
504 | if (ret != sizeof(feature)) { | 512 | if (ret != -EIO) { |
505 | hid_err(hdev, "unable to request touch data (%d)\n", ret); | 513 | hid_err(hdev, "unable to request touch data (%d)\n", ret); |
506 | goto err_stop_hw; | 514 | goto err_stop_hw; |
507 | } | 515 | } |