|
|
|
[PATCH] USB: Add optional match for interface class to dynamic ID facility | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] |
|
Example:
$ echo "1234 2a2a ff" >/sys/bus/usb-serial/drivers/generic/new_id
will bind only vendor-specific interfaces to usbserial.
Signed-off-by: Josua Dietze <digidietze@xxxxxxxxxxxxxxx>
-------
--- linux-3.0.4/drivers/usb/core/driver.c.orig 2011-07-22 04:17:23.000000000 +0200
+++ linux-3.0.4/drivers/usb/core/driver.c 2011-10-21 22:34:00.000000000 +0200
@@ -44,10 +44,11 @@ ssize_t usb_store_new_id(struct usb_dyni
struct usb_dynid *dynid;
u32 idVendor = 0;
u32 idProduct = 0;
+ unsigned int bInterfaceClass = 0;
int fields = 0;
int retval = 0;
- fields = sscanf(buf, "%x %x", &idVendor, &idProduct);
+ fields = sscanf(buf, "%x %x %x", &idVendor, &idProduct, &bInterfaceClass);
if (fields < 2)
return -EINVAL;
@@ -58,7 +59,11 @@ ssize_t usb_store_new_id(struct usb_dyni
INIT_LIST_HEAD(&dynid->node);
dynid->id.idVendor = idVendor;
dynid->id.idProduct = idProduct;
- dynid->id.match_flags = USB_DEVICE_ID_MATCH_DEVICE;
+ if (fields == 3) {
+ dynid->id.bInterfaceClass = (u8)bInterfaceClass;
+ dynid->id.match_flags = USB_DEVICE_ID_MATCH_DEVICE |
USB_DEVICE_ID_MATCH_INT_CLASS;
+ } else + dynid->id.match_flags = USB_DEVICE_ID_MATCH_DEVICE; spin_lock(&dynids->lock); list_add_tail(&dynid->node, &dynids->list); -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html

[Linux Media] [Video for Linux] [Linux Input] [Linux Audio Users] [Photo] [Yosemite News] [Yosemite Photos] [Free Online Dating] [Linux Kernel] [Linux SCSI] [Old Linux USB Devel Archive] [More Archives]
![]() |
![]() |