
When detecting USB storage devices, we currently skip everything that is not marked as "undefined device class".
Composite devices such as tinyusb's CDC+MSC identify as "miscellaneous" (class 0xEF).
Introduce a new constant, USB_CLASS_MISC (0xEF), and allow the detection process to proceed for USB devices with this device class.
Signed-off-by: Christian Kohlschütter christian@kohlschutter.com --- common/usb_storage.c | 3 ++- include/usb_defs.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/common/usb_storage.c b/common/usb_storage.c index eaa31374ef..727b364b3d 100644 --- a/common/usb_storage.c +++ b/common/usb_storage.c @@ -1322,7 +1322,8 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum, /* let's examine the device now */ iface = &dev->config.if_desc[ifnum];
- if (dev->descriptor.bDeviceClass != 0 || + if ((dev->descriptor.bDeviceClass != 0 && dev->descriptor.bDeviceClass + != USB_CLASS_MISC) || iface->desc.bInterfaceClass != USB_CLASS_MASS_STORAGE || iface->desc.bInterfaceSubClass < US_SC_MIN || iface->desc.bInterfaceSubClass > US_SC_MAX) { diff --git a/include/usb_defs.h b/include/usb_defs.h index 6dd2c997f9..f8f87d6a8a 100644 --- a/include/usb_defs.h +++ b/include/usb_defs.h @@ -19,6 +19,7 @@ #define USB_CLASS_MASS_STORAGE 8 #define USB_CLASS_HUB 9 #define USB_CLASS_DATA 10 +#define USB_CLASS_MISC 0xef #define USB_CLASS_VENDOR_SPEC 0xff
/* some HID sub classes */