mirror of
https://github.com/torvalds/linux.git
synced 2026-01-24 23:16:46 +00:00
usb: core: add USB_QUIRK_NO_BOS for devices that hang on BOS descriptor
Add USB_QUIRK_NO_BOS quirk flag to skip requesting the BOS descriptor for devices that cannot handle it. Add Elgato 4K X (0fd9:009b) to the quirk table. This device hangs when the BOS descriptor is requested at SuperSpeed Plus (10Gbps). Link: https://bugzilla.kernel.org/show_bug.cgi?id=220027 Cc: stable <stable@kernel.org> Signed-off-by: Johannes Brüderl <johannes.bruederl@gmail.com> Link: https://patch.msgid.link/20251207090220.14807-1-johannes.bruederl@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
1d32389dc5
commit
2740ac33c8
@@ -1040,6 +1040,11 @@ int usb_get_bos_descriptor(struct usb_device *dev)
|
||||
__u8 cap_type;
|
||||
int ret;
|
||||
|
||||
if (dev->quirks & USB_QUIRK_NO_BOS) {
|
||||
dev_dbg(ddev, "skipping BOS descriptor\n");
|
||||
return -ENOMSG;
|
||||
}
|
||||
|
||||
bos = kzalloc(sizeof(*bos), GFP_KERNEL);
|
||||
if (!bos)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -450,6 +450,9 @@ static const struct usb_device_id usb_quirk_list[] = {
|
||||
{ USB_DEVICE(0x0c45, 0x7056), .driver_info =
|
||||
USB_QUIRK_IGNORE_REMOTE_WAKEUP },
|
||||
|
||||
/* Elgato 4K X - BOS descriptor fetch hangs at SuperSpeed Plus */
|
||||
{ USB_DEVICE(0x0fd9, 0x009b), .driver_info = USB_QUIRK_NO_BOS },
|
||||
|
||||
/* Sony Xperia XZ1 Compact (lilac) smartphone in fastboot mode */
|
||||
{ USB_DEVICE(0x0fce, 0x0dde), .driver_info = USB_QUIRK_NO_LPM },
|
||||
|
||||
|
||||
@@ -75,4 +75,7 @@
|
||||
/* short SET_ADDRESS request timeout */
|
||||
#define USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT BIT(16)
|
||||
|
||||
/* skip BOS descriptor request */
|
||||
#define USB_QUIRK_NO_BOS BIT(17)
|
||||
|
||||
#endif /* __LINUX_USB_QUIRKS_H */
|
||||
|
||||
Reference in New Issue
Block a user