diff options
-rw-r--r-- | drivers/usb/core/message.c | 3 | ||||
-rw-r--r-- | drivers/usb/core/quirks.c | 4 | ||||
-rw-r--r-- | drivers/usb/core/sysfs.c | 4 | ||||
-rw-r--r-- | include/linux/usb/quirks.h | 3 |
4 files changed, 12 insertions, 2 deletions
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 49e7f56e0d7f..3922fa915ed2 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c | |||
@@ -1719,7 +1719,8 @@ free_interfaces: | |||
1719 | } | 1719 | } |
1720 | kfree(new_interfaces); | 1720 | kfree(new_interfaces); |
1721 | 1721 | ||
1722 | if (cp->string == NULL) | 1722 | if (cp->string == NULL && |
1723 | !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) | ||
1723 | cp->string = usb_cache_string(dev, cp->desc.iConfiguration); | 1724 | cp->string = usb_cache_string(dev, cp->desc.iConfiguration); |
1724 | 1725 | ||
1725 | /* Now that all the interfaces are set up, register them | 1726 | /* Now that all the interfaces are set up, register them |
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index c070b34b669d..ab93918d9207 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c | |||
@@ -54,6 +54,10 @@ static const struct usb_device_id usb_quirk_list[] = { | |||
54 | { USB_DEVICE(0x0638, 0x0a13), .driver_info = | 54 | { USB_DEVICE(0x0638, 0x0a13), .driver_info = |
55 | USB_QUIRK_STRING_FETCH_255 }, | 55 | USB_QUIRK_STRING_FETCH_255 }, |
56 | 56 | ||
57 | /* Saitek Cyborg Gold Joystick */ | ||
58 | { USB_DEVICE(0x06a3, 0x0006), .driver_info = | ||
59 | USB_QUIRK_CONFIG_INTF_STRINGS }, | ||
60 | |||
57 | /* M-Systems Flash Disk Pioneers */ | 61 | /* M-Systems Flash Disk Pioneers */ |
58 | { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, | 62 | { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, |
59 | 63 | ||
diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c index 4cc2456ef3be..c66789197927 100644 --- a/drivers/usb/core/sysfs.c +++ b/drivers/usb/core/sysfs.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/string.h> | 14 | #include <linux/string.h> |
15 | #include <linux/usb.h> | 15 | #include <linux/usb.h> |
16 | #include <linux/usb/quirks.h> | ||
16 | #include "usb.h" | 17 | #include "usb.h" |
17 | 18 | ||
18 | /* Active configuration fields */ | 19 | /* Active configuration fields */ |
@@ -813,7 +814,8 @@ int usb_create_sysfs_intf_files(struct usb_interface *intf) | |||
813 | if (intf->sysfs_files_created || intf->unregistering) | 814 | if (intf->sysfs_files_created || intf->unregistering) |
814 | return 0; | 815 | return 0; |
815 | 816 | ||
816 | if (alt->string == NULL) | 817 | if (alt->string == NULL && |
818 | !(udev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) | ||
817 | alt->string = usb_cache_string(udev, alt->desc.iInterface); | 819 | alt->string = usb_cache_string(udev, alt->desc.iInterface); |
818 | if (alt->string) | 820 | if (alt->string) |
819 | retval = device_create_file(&intf->dev, &dev_attr_interface); | 821 | retval = device_create_file(&intf->dev, &dev_attr_interface); |
diff --git a/include/linux/usb/quirks.h b/include/linux/usb/quirks.h index 7f6c603db654..2526f3bbd273 100644 --- a/include/linux/usb/quirks.h +++ b/include/linux/usb/quirks.h | |||
@@ -16,4 +16,7 @@ | |||
16 | /* device can't handle Set-Interface requests */ | 16 | /* device can't handle Set-Interface requests */ |
17 | #define USB_QUIRK_NO_SET_INTF 0x00000004 | 17 | #define USB_QUIRK_NO_SET_INTF 0x00000004 |
18 | 18 | ||
19 | /* device can't handle its Configuration or Interface strings */ | ||
20 | #define USB_QUIRK_CONFIG_INTF_STRINGS 0x00000008 | ||
21 | |||
19 | #endif /* __LINUX_USB_QUIRKS_H */ | 22 | #endif /* __LINUX_USB_QUIRKS_H */ |