You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ac...@apache.org on 2020/01/10 10:24:41 UTC
[incubator-nuttx] 01/07: drivers: usbdev: Descriptor type mismatch
fix when dual speed is enabled
This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch pr70
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit b452506f3c9bc98472565ee4693e4c69b27c556d
Author: Alin Jerpelea <al...@sony.com>
AuthorDate: Wed Jan 8 17:02:45 2020 +0900
drivers: usbdev: Descriptor type mismatch fix when dual speed is enabled
---
drivers/usbdev/cdcacm.c | 2 +-
drivers/usbdev/cdcacm_desc.c | 4 ++++
drivers/usbdev/composite_desc.c | 4 ++++
drivers/usbdev/usbmsc_desc.c | 4 ++++
4 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/usbdev/cdcacm.c b/drivers/usbdev/cdcacm.c
index a373cc5..0db0456 100644
--- a/drivers/usbdev/cdcacm.c
+++ b/drivers/usbdev/cdcacm.c
@@ -1715,7 +1715,7 @@ static int cdcacm_setup(FAR struct usbdevclass_driver_s *driver,
{
#ifdef CONFIG_USBDEV_DUALSPEED
ret = cdcacm_mkcfgdesc(ctrlreq->buf, &priv->devinfo,
- dev->speed, ctrl->req);
+ dev->speed, ctrl->value[1]);
#else
ret = cdcacm_mkcfgdesc(ctrlreq->buf, &priv->devinfo);
#endif
diff --git a/drivers/usbdev/cdcacm_desc.c b/drivers/usbdev/cdcacm_desc.c
index 6e97a1d..1e12d55 100644
--- a/drivers/usbdev/cdcacm_desc.c
+++ b/drivers/usbdev/cdcacm_desc.c
@@ -388,7 +388,11 @@ int16_t cdcacm_mkcfgdesc(FAR uint8_t *buf,
#endif
dest->len = USB_SIZEOF_CFGDESC; /* Descriptor length */
+#ifdef CONFIG_USBDEV_DUALSPEED
+ dest->type = type; /* Descriptor type */
+#else
dest->type = USB_DESC_TYPE_CONFIG; /* Descriptor type */
+#endif
dest->totallen[0] = LSBYTE(size); /* LS Total length */
dest->totallen[1] = MSBYTE(size); /* MS Total length */
dest->ninterfaces = CDCACM_NINTERFACES; /* Number of interfaces */
diff --git a/drivers/usbdev/composite_desc.c b/drivers/usbdev/composite_desc.c
index 7ab23f1..af26fc2 100644
--- a/drivers/usbdev/composite_desc.c
+++ b/drivers/usbdev/composite_desc.c
@@ -222,7 +222,11 @@ int16_t composite_mkcfgdesc(FAR struct composite_dev_s *priv, FAR uint8_t *buf)
/* Fill in the values directly into the buf */
cfgdesc->len = USB_SIZEOF_CFGDESC; /* Descriptor length */
+#ifdef CONFIG_USBDEV_DUALSPEED
+ cfgdesc->type = type; /* Descriptor type */
+#else
cfgdesc->type = USB_DESC_TYPE_CONFIG; /* Descriptor type */
+#endif
cfgdesc->totallen[0] = LSBYTE(priv->cfgdescsize); /* Lower Byte of Total length */
cfgdesc->totallen[1] = MSBYTE(priv->cfgdescsize); /* High Byte of Total length */
cfgdesc->ninterfaces = priv->ninterfaces; /* Number of interfaces */
diff --git a/drivers/usbdev/usbmsc_desc.c b/drivers/usbdev/usbmsc_desc.c
index be2e10e..972f2f1 100644
--- a/drivers/usbdev/usbmsc_desc.c
+++ b/drivers/usbdev/usbmsc_desc.c
@@ -346,7 +346,11 @@ int16_t usbmsc_mkcfgdesc(uint8_t *buf,
FAR struct usb_cfgdesc_s *dest = (FAR struct usb_cfgdesc_s *)buf;
dest->len = USB_SIZEOF_CFGDESC; /* Descriptor length */
+#ifdef CONFIG_USBDEV_DUALSPEED
+ dest->type = type; /* Descriptor type */
+#else
dest->type = USB_DESC_TYPE_CONFIG; /* Descriptor type */
+#endif
dest->totallen[0] = LSBYTE(SIZEOF_USBMSC_CFGDESC); /* LS Total length */
dest->totallen[1] = MSBYTE(SIZEOF_USBMSC_CFGDESC); /* MS Total length */
dest->ninterfaces = USBMSC_NINTERFACES; /* Number of interfaces */