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 */