Add type to the hid structure to distinguish to which device type (mouse/kbd) we are talking to. Needed for per device type ignore list support. Note: this patch leaves the type as unknown for bluetooth devices, there is not support for this in the hidp code. Signed-off-by: Jiri Slaby <jirislaby@xxxxxxxxx> --- drivers/hid/usbhid/hid-core.c | 8 ++++++++ include/linux/hid.h | 7 +++++++ 2 files changed, 15 insertions(+), 0 deletions(-) diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index 1d3b8a3..20617d8 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -972,6 +972,14 @@ static int hid_probe(struct usb_interface *intf, const struct usb_device_id *id) hid->vendor = le16_to_cpu(dev->descriptor.idVendor); hid->product = le16_to_cpu(dev->descriptor.idProduct); hid->name[0] = 0; + switch (intf->cur_altsetting->desc.bInterfaceProtocol) { + case USB_INTERFACE_PROTOCOL_KEYBOARD: + hid->type = HID_TYPE_KEYBOARD; + break; + case USB_INTERFACE_PROTOCOL_MOUSE: + hid->type = HID_TYPE_MOUSE; + break; + } if (dev->manufacturer) strlcpy(hid->name, dev->manufacturer, sizeof(hid->name)); diff --git a/include/linux/hid.h b/include/linux/hid.h index f13bca2..36a3953 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -417,6 +417,12 @@ struct hid_input { struct input_dev *input; }; +enum hid_type { + HID_TYPE_UNKNOWN = 0, + HID_TYPE_MOUSE, + HID_TYPE_KEYBOARD +}; + struct hid_driver; struct hid_ll_driver; @@ -431,6 +437,7 @@ struct hid_device { /* device report descriptor */ __u32 vendor; /* Vendor ID */ __u32 product; /* Product ID */ __u32 version; /* HID version */ + enum hid_type type; /* device type (mouse, kbd, ...) */ unsigned country; /* HID country */ struct hid_report_enum report_enum[HID_REPORT_TYPES]; -- 1.6.0.2 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html