On Wed, 12 May 2010, Justin P. Mattock wrote:with test I did different techniques,
I'd be glad if you could also double-check that device removal andworks good.. rebooted a few times mouse connects. suspended a few times--- a/drivers/hid/hid-magicmouse.cThis is not particularly right, as we'll end up having dangling input
+++ b/drivers/hid/hid-magicmouse.c
@@ -354,7 +354,7 @@ static int magicmouse_probe(struct hid_device *hdev,
goto err_free;
}
- ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT& ~HID_CONNECT_HIDINPUT);
+ ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
device.
The problem is, that when HIDRAW is not set, hid_hw_start() returns ENODEV
as no subsystem has claimed the device, and probe routine bails out. Which
is not what we want.
Does the testing patch below fix the problems you are seeing?
mouse reconnects.
re-connecting it works well as well with this patch.
alright buddy,No problem, once you confirm that device removal wasn't broken again anddiff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.clooks good over here.. If you'd like I can re-du this patch, add your
index 0d471fc..f10d56a 100644
--- a/drivers/hid/hid-magicmouse.c
+++ b/drivers/hid/hid-magicmouse.c
@@ -354,12 +354,15 @@ static int magicmouse_probe(struct hid_device *hdev,
goto err_free;
}
- ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT& ~HID_CONNECT_HIDINPUT);
+ ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
if (ret) {
dev_err(&hdev->dev, "magicmouse hw start failed\n");
goto err_free;
}
+ /* we are handling the input ourselves */
+ hidinput_disconnect(hdev);
+
report = hid_register_report(hdev, HID_INPUT_REPORT, TOUCH_REPORT_ID);
if (!report) {
dev_err(&hdev->dev, "unable to register touch report\n");
sign off etc.. and re-send, or not worry.. either way this little
quirk/problem is fixed.
if I don't hear any objections from Michael, I will queue the patch
myself.
Thanks,