mirror of
https://github.com/apache/nuttx.git
synced 2026-05-31 23:40:19 +08:00
drivers/usbhost: recognize sim usb cdcacm composite device
In the USB interface descriptor of the cdcacm device, class:2 (CDC) subclass:2 (ACM) protocol:0 (NONE) may appear. At this time, the usb host does not match the correct protocol byte, which will cause the device identification to fail. Signed-off-by: yangsong8 <yangsong8@xiaomi.com>
This commit is contained in:
@@ -376,7 +376,7 @@ static bool usbhost_txempty(FAR struct uart_dev_s *uartdev);
|
|||||||
* device.
|
* device.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const struct usbhost_id_s g_id[4] =
|
static const struct usbhost_id_s g_id[5] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
USB_CLASS_CDC, /* base */
|
USB_CLASS_CDC, /* base */
|
||||||
@@ -385,6 +385,13 @@ static const struct usbhost_id_s g_id[4] =
|
|||||||
0, /* vid */
|
0, /* vid */
|
||||||
0 /* pid */
|
0 /* pid */
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
USB_CLASS_CDC, /* base */
|
||||||
|
CDC_SUBCLASS_ACM, /* subclass */
|
||||||
|
CDC_PROTO_NONE, /* proto */
|
||||||
|
0, /* vid */
|
||||||
|
0 /* pid */
|
||||||
|
},
|
||||||
{
|
{
|
||||||
USB_CLASS_CDC, /* base */
|
USB_CLASS_CDC, /* base */
|
||||||
CDC_SUBCLASS_ACM, /* subclass */
|
CDC_SUBCLASS_ACM, /* subclass */
|
||||||
@@ -414,7 +421,7 @@ static struct usbhost_registry_s g_cdcacm =
|
|||||||
{
|
{
|
||||||
NULL, /* flink */
|
NULL, /* flink */
|
||||||
usbhost_create, /* create */
|
usbhost_create, /* create */
|
||||||
4, /* nids */
|
5, /* nids */
|
||||||
&g_id[0] /* id[] */
|
&g_id[0] /* id[] */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -590,15 +590,17 @@ int usbhost_composite(FAR struct usbhost_hubport_s *hport,
|
|||||||
|
|
||||||
if (desc->type == USB_DESC_TYPE_INTERFACE)
|
if (desc->type == USB_DESC_TYPE_INTERFACE)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_DEBUG_ASSERTIONS
|
|
||||||
FAR struct usb_ifdesc_s *ifdesc =
|
FAR struct usb_ifdesc_s *ifdesc =
|
||||||
(FAR struct usb_ifdesc_s *)desc;
|
(FAR struct usb_ifdesc_s *)desc;
|
||||||
|
|
||||||
DEBUGASSERT(ifdesc->ifno < 32);
|
DEBUGASSERT(ifdesc->ifno < 32);
|
||||||
#endif
|
|
||||||
/* Increment the count of interfaces */
|
/* Increment the count of interfaces */
|
||||||
|
|
||||||
nintfs++;
|
if (ifdesc->alt == 0)
|
||||||
|
{
|
||||||
|
nintfs++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for IAD descriptors that will be used when it is
|
/* Check for IAD descriptors that will be used when it is
|
||||||
|
|||||||
Reference in New Issue
Block a user