HID: add hid_type to general hid struct
authorJiri Slaby <jirislaby@gmail.com>
Wed, 22 Oct 2008 12:45:11 +0000 (14:45 +0200)
committerJiri Kosina <jkosina@suse.cz>
Wed, 22 Oct 2008 12:45:11 +0000 (14:45 +0200)
Add type to the hid structure to distinguish to which device type
(now only mouse) 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@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/usbhid/hid-core.c
include/linux/hid.h

index 1d3b8a394d468d28d8364941cf21a2b178532b59..1dc341a04d04199e3b3cfe596b9d0cd5f740db1d 100644 (file)
@@ -972,6 +972,9 @@ 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;
+       if (intf->cur_altsetting->desc.bInterfaceProtocol ==
+                       USB_INTERFACE_PROTOCOL_MOUSE)
+               hid->type = HID_TYPE_USBMOUSE;
 
        if (dev->manufacturer)
                strlcpy(hid->name, dev->manufacturer, sizeof(hid->name));
index f13bca2dd53b806303577cb298562a3a426b79b4..5355ca4b939e583b8483e19ab888d03a0643630f 100644 (file)
@@ -417,6 +417,11 @@ struct hid_input {
        struct input_dev *input;
 };
 
+enum hid_type {
+       HID_TYPE_OTHER = 0,
+       HID_TYPE_USBMOUSE
+};
+
 struct hid_driver;
 struct hid_ll_driver;
 
@@ -431,6 +436,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];