diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index aac0051a2cf6..2dbd6528bb9e 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -47,7 +47,7 @@ * Module parameters. */ -static unsigned int hid_mousepoll_interval; +static unsigned int hid_mousepoll_interval = ~0; module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644); MODULE_PARM_DESC(mousepoll, "Polling interval of mice"); @@ -1117,7 +1117,9 @@ static int usbhid_start(struct hid_device *hid) */ switch (hid->collection->usage) { case HID_GD_MOUSE: - if (hid_mousepoll_interval > 0) + if (hid_mousepoll_interval == ~0 && interval < 16) + interval = 16; + else if (hid_mousepoll_interval != ~0 && hid_mousepoll_interval != 0) interval = hid_mousepoll_interval; break; case HID_GD_JOYSTICK: @@ -1129,6 +1131,7 @@ static int usbhid_start(struct hid_device *hid) interval = hid_kbpoll_interval; break; } + usb_fixup_endpoint(dev, endpoint->bEndpointAddress, interval); ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) {