mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
Input: Make hid-core issue a SET_IDLE request before GET_REPORT, like
Windows does. This should make life easier for devices that were tested with Windows only. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
8608471262
commit
854561b019
@ -1233,6 +1233,13 @@ int hid_wait_io(struct hid_device *hid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int hid_set_idle(struct usb_device *dev, int ifnum, int report, int idle)
|
||||
{
|
||||
usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
|
||||
HID_REQ_SET_IDLE, USB_TYPE_CLASS | USB_RECIP_INTERFACE, (idle << 8) | report,
|
||||
ifnum, NULL, 0, USB_CTRL_SET_TIMEOUT);
|
||||
}
|
||||
|
||||
static int hid_get_class_descriptor(struct usb_device *dev, int ifnum,
|
||||
unsigned char type, void *buf, int size)
|
||||
{
|
||||
@ -1301,10 +1308,6 @@ void hid_init_reports(struct hid_device *hid)
|
||||
|
||||
if (err)
|
||||
warn("timeout initializing reports\n");
|
||||
|
||||
usb_control_msg(hid->dev, usb_sndctrlpipe(hid->dev, 0),
|
||||
HID_REQ_SET_IDLE, USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0,
|
||||
hid->ifnum, NULL, 0, USB_CTRL_SET_TIMEOUT);
|
||||
}
|
||||
|
||||
#define USB_VENDOR_ID_WACOM 0x056a
|
||||
@ -1572,6 +1575,8 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
hid_set_idle(dev, interface->desc.bInterfaceNumber, 0, 0);
|
||||
|
||||
if ((n = hid_get_class_descriptor(dev, interface->desc.bInterfaceNumber, HID_DT_REPORT, rdesc, rsize)) < 0) {
|
||||
dbg("reading report descriptor failed");
|
||||
kfree(rdesc);
|
||||
|
Loading…
Reference in New Issue
Block a user