diff options
| author | Henrik Rydberg <rydberg@euromail.se> | 2012-04-23 06:07:02 -0400 |
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2012-05-01 06:54:54 -0400 |
| commit | 4d53b8012f1f01ddb3f24db2031b042bb4cbd0d0 (patch) | |
| tree | 4536bb9fefb51c212f28dee84e810ab0d6854a6e /include | |
| parent | a7197c2e4120ce40e7e3f5580336b9a1dc791220 (diff) | |
HID: Add device group to modalias
HID devices are only partially presented to userland. Hotplugged
devices emit events containing a modalias based on the basic bus,
vendor and product entities. However, in practise a hid device can
depend on details such as a single usb interface or a particular item
in a report descriptor.
This patch adds a device group to the hid device id, and broadcasts it
using uevent and the device modalias. The module alias generation is
modified to match. As a consequence, a device with a non-zero group
will be processed by the corresponding group driver instead of by the
generic hid driver.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Acked-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/hid.h | 1 | ||||
| -rw-r--r-- | include/linux/mod_devicetable.h | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/hid.h b/include/linux/hid.h index d8e7cc7f894f..a0e27ddb887d 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h | |||
| @@ -476,6 +476,7 @@ struct hid_device { /* device report descriptor */ | |||
| 476 | unsigned maxcollection; /* Number of parsed collections */ | 476 | unsigned maxcollection; /* Number of parsed collections */ |
| 477 | unsigned maxapplication; /* Number of applications */ | 477 | unsigned maxapplication; /* Number of applications */ |
| 478 | __u16 bus; /* BUS ID */ | 478 | __u16 bus; /* BUS ID */ |
| 479 | __u16 group; /* Report group */ | ||
| 479 | __u32 vendor; /* Vendor ID */ | 480 | __u32 vendor; /* Vendor ID */ |
| 480 | __u32 product; /* Product ID */ | 481 | __u32 product; /* Product ID */ |
| 481 | __u32 version; /* HID version */ | 482 | __u32 version; /* HID version */ |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 501da4cb8a6d..55ed0b0dc610 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
| @@ -132,10 +132,11 @@ struct usb_device_id { | |||
| 132 | #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 | 132 | #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 |
| 133 | 133 | ||
| 134 | #define HID_ANY_ID (~0) | 134 | #define HID_ANY_ID (~0) |
| 135 | #define HID_GROUP_ANY 0x0000 | ||
| 135 | 136 | ||
| 136 | struct hid_device_id { | 137 | struct hid_device_id { |
| 137 | __u16 bus; | 138 | __u16 bus; |
| 138 | __u16 pad1; | 139 | __u16 group; |
| 139 | __u32 vendor; | 140 | __u32 vendor; |
| 140 | __u32 product; | 141 | __u32 product; |
| 141 | kernel_ulong_t driver_data | 142 | kernel_ulong_t driver_data |
