linux-usb:define new macro and add new match rules for Huawei USB storage devices
Subsystems (2)
PATCH 1/2 linux-usb:define new macro and add new match rules for Huawei USB storage devices
From: fangxiaozhi <[email protected]>
1. Define a new macro for USB storage match rules:
matching with Vendor ID and interface descriptors.
Signed-off-by fangxiaozhi <[email protected]>
--------------------------------------------------------------------
diff -uprN linux-3.8-rc4_orig/drivers/usb/storage/usb.c linux-3.8-rc4/drivers/usb/storage/usb.c
drivers/usb/storage/usb.c +12 -0
@@ -120,6 +120,17 @@ MODULE_PARM_DESC(quirks, "supplemental l .useTransport = use_transport, \ } +#define UNUSUAL_VENDOR_INTF (idVendor, cl, sc, pr, \ + vendor_name, product_name, use_protocol, use_transport, \ + init_function, Flags) \ +{ \ + .vendorName = vendor_name, \ + .productName = product_name, \ + .useProtocol = use_protocol, \ + .useTransport = use_transport, \ + .initFunction = init_function, \ +} +static struct us_unusual_dev us_unusual_dev_list[] = { # include "unusual_devs.h" { }/* Terminating entry */
@@ -131,6 +142,7 @@ static struct us_unusual_dev for_dynamic#undef UNUSUAL_DEV#undef COMPLIANT_DEV#undef USUAL_DEV +#undef UNUSUAL_VENDOR_INTF#ifdef CONFIG_LOCKDEP
drivers/usb/storage/usual-tables.c +14 -0
@@ -41,6 +41,19 @@#define USUAL_DEV (useProto, useTrans) \ { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, useProto, useTrans) } +/* Define the device is matched with Vendor ID and interface descriptors */ +#define UNUSUAL_VENDOR_INTF (id_vendor, cl, sc, pr, \ + vendorName, productName, useProtocol, useTransport, \ + initFunction, flags) \ +{ \ + .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ + | USB_DEVICE_ID_MATCH_VENDOR, \ + .idVendor = (id_vendor), \ + .bInterfaceClass = (cl), \ + .bInterfaceSubClass = (sc), \ + .bInterfaceProtocol = (pr), \ + .driver_info = (flags) } +struct usb_device_id usb_storage_usb_ids[] = { # include "unusual_devs.h" { }/* Terminating entry */
@@ -50,6 +63,7 @@ MODULE_DEVICE_TABLE(usb, usb_storage_usb#undef UNUSUAL_DEV#undef COMPLIANT_DEV#undef USUAL_DEV +#undef UNUSUAL_VENDOR_INTF/* * The table of devices to ignore