Commit 23d021167eebf0df5ccadf4f8de5ccb8d4ac2904

Authored by Jiri Kosina
1 parent 94b849aaf6

HID: magicmouse: fix input registration

When HIDRAW is not set, hid_hw_start() returns ENODEV as no subsystem has
claimed the magicmouse device, and probe routine bails out. Which is not what we want.

This happens because magicmouse driver is instantiating the connection to
Input subsystem itself, and since commit 28918c211d86b ("HID: magicmouse: fix
oops after device removal") the HID core is not registering input device
itself.

Fix this by letting HID core register the input device (so that hid_hw_start()
succeeds, as the device is claimed by at least one subsystem) and de-register
it again later before proceeding with proper input setup.

Reported-by: Justin P. Mattock <justinmattock@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

Showing 1 changed file with 4 additions and 1 deletions Side-by-side Diff

drivers/hid/hid-magicmouse.c
... ... @@ -354,11 +354,14 @@
354 354 goto err_free;
355 355 }
356 356  
357   - ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT & ~HID_CONNECT_HIDINPUT);
  357 + ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
358 358 if (ret) {
359 359 dev_err(&hdev->dev, "magicmouse hw start failed\n");
360 360 goto err_free;
361 361 }
  362 +
  363 + /* we are handling the input ourselves */
  364 + hidinput_disconnect(hdev);
362 365  
363 366 report = hid_register_report(hdev, HID_INPUT_REPORT, TOUCH_REPORT_ID);
364 367 if (!report) {