Commit 23d021167eebf0df5ccadf4f8de5ccb8d4ac2904
1 parent
94b849aaf6
Exists in
master
and in
39 other branches
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) { |