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 15:10:03 UTC

[incubator-nuttx] branch master updated: Fix USB issues

This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 275f4ba  Fix USB issues
275f4ba is described below

commit 275f4baf9f4da2a6152c786d0fa7517b215d828f
Author: Alin Jerpelea <al...@sony.com>
AuthorDate: Fri Jan 10 12:06:36 2020 -0300

    Fix USB issues
    
    Author: Alan Carvalho de Assis <ac...@gmail.com>
    
        Run nxstyle on .c and .h files and fix it
    
    Author: Alin Jerpelea <al...@sony.com>
    
        drivers: usbdev: minor fix
    
        drivers: usbdev: usbmsc full speed not available
    
          Change transfer size to be based on maxpacket size.
    
        drivers: usbdev: Fix string ID calculation
    
          For *_STRBASE defines, it already unnecessary because composite device setup
          has been changed, it would be calculated by *_composite.c in board sources.
    
        drivers: usbdev: Fix invalid/unsupported command processing
    
          Mass Storage Class shall stall when invalid or unsupported commands
          has been recieved.
    
        drivers: usbdev: Remove unnecessary reset logic
    
        drivers: usbdev: Flags comparison fix
    
        drivers: usbdev: Descriptor type mismatch fix when dual speed is enabled
---
 drivers/usbdev/cdcacm.c         |  38 ++--
 drivers/usbdev/cdcacm.h         |   7 +-
 drivers/usbdev/cdcacm_desc.c    |  60 ++++---
 drivers/usbdev/composite.c      |  48 +++--
 drivers/usbdev/composite_desc.c |  33 ++--
 drivers/usbdev/usbmsc.h         |   4 +-
 drivers/usbdev/usbmsc_desc.c    |  52 +++---
 drivers/usbdev/usbmsc_scsi.c    | 388 ++++++++++++++++++++++------------------
 8 files changed, 357 insertions(+), 273 deletions(-)

diff --git a/drivers/usbdev/cdcacm.c b/drivers/usbdev/cdcacm.c
index a373cc5..f30d866 100644
--- a/drivers/usbdev/cdcacm.c
+++ b/drivers/usbdev/cdcacm.c
@@ -593,10 +593,10 @@ static int cdcacm_recvpacket(FAR struct cdcacm_dev_s *priv,
    * control when there are no watermarks.
    */
 
- if (nexthead == recv->tail)
-   {
-     cdcuart_rxflowcontrol(&priv->serdev, recv->size - 1, true);
-   }
+  if (nexthead == recv->tail)
+    {
+      cdcuart_rxflowcontrol(&priv->serdev, recv->size - 1, true);
+    }
 #endif
 
   /* If data was added to the incoming serial buffer, then wake up any
@@ -918,6 +918,7 @@ static int cdcacm_serialstate(FAR struct cdcacm_dev_s *priv)
     }
 
 errout_with_flags:
+
   /* Reset all of the "irregular" notification */
 
   priv->serialstate &= CDC_UART_CONSISTENT;
@@ -1177,7 +1178,7 @@ static void cdcacm_rdcomplete(FAR struct usbdev_ep_s *ep,
     {
       usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract references to private data */
@@ -1253,7 +1254,7 @@ static void cdcacm_wrcomplete(FAR struct usbdev_ep_s *ep,
     {
       usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract references to our private data */
@@ -1502,7 +1503,7 @@ static void cdcacm_unbind(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -1631,7 +1632,7 @@ static int cdcacm_setup(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
       return -EINVAL;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -1715,7 +1716,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
@@ -2030,7 +2031,7 @@ static void cdcacm_disconnect(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -2094,7 +2095,7 @@ static void cdcacm_suspend(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -2128,7 +2129,7 @@ static void cdcacm_resume(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -2304,7 +2305,7 @@ static int cdcuart_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
      *   called to get the data associated CDCACM_EVENT_CTRLLINE event.
      */
 
-   case CAIOC_GETCTRLLINE:
+    case CAIOC_GETCTRLLINE:
       {
         FAR int *ptr = (FAR int *)((uintptr_t)arg);
         if (ptr != NULL)
@@ -2356,6 +2357,7 @@ static int cdcuart_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
 
 #ifdef CONFIG_CDCACM_OFLOWCONTROL
         /* Report state of output flow control */
+
 #  warning Missing logic
 #endif
 #ifdef CONFIG_CDCACM_IFLOWCONTROL
@@ -2387,6 +2389,7 @@ static int cdcuart_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
 
 #ifdef CONFIG_CDCACM_OFLOWCONTROL
         /* Handle changes to output flow control */
+
 #  warning Missing logic
 #endif
 
@@ -2422,7 +2425,6 @@ static int cdcuart_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
                  */
 
                 cdcacm_release_rxpending(priv);
-
               }
 
             /* Flow control has been enabled. */
@@ -2671,8 +2673,8 @@ static bool cdcuart_rxflowcontrol(FAR struct uart_dev_s *dev,
 #ifdef CONFIG_DEBUG_FEATURES
   if (dev == NULL || dev->priv == NULL)
     {
-       usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
-       return false;
+      usbtrace(TRACE_CLSERROR(USBSER_TRACEERR_INVALIDARG), 0);
+      return false;
     }
 #endif
 
@@ -2990,7 +2992,7 @@ int cdcacm_classobject(int minor, FAR struct usbdev_devinfo_s *devinfo,
 
   /* Register the CDC/ACM TTY device */
 
-  sprintf(devname, CDCACM_DEVNAME_FORMAT, minor);
+  snprintf(devname, CDCACM_DEVNAME_SIZE, CDCACM_DEVNAME_FORMAT, minor);
   ret = uart_register(devname, &priv->serdev);
   if (ret < 0)
     {
@@ -3145,7 +3147,7 @@ void cdcacm_uninitialize(FAR void *handle)
 
   /* Un-register the CDC/ACM TTY device */
 
-  sprintf(devname, CDCACM_DEVNAME_FORMAT, priv->minor);
+  snprintf(devname, CDCACM_DEVNAME_SIZE, CDCACM_DEVNAME_FORMAT, priv->minor);
   ret = unregister_driver(devname);
   if (ret < 0)
     {
diff --git a/drivers/usbdev/cdcacm.h b/drivers/usbdev/cdcacm.h
index 2b151b4..aecfd3b 100644
--- a/drivers/usbdev/cdcacm.h
+++ b/drivers/usbdev/cdcacm.h
@@ -51,7 +51,9 @@
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
+
 /* Configuration ************************************************************/
+
 /* If the serial device is configured as part of a composite device than both
  * CONFIG_USBDEV_COMPOSITE and CONFIG_CDCACM_COMPOSITE must be defined.
  */
@@ -61,7 +63,7 @@
 #endif
 
 #if defined(CONFIG_CDCACM_COMPOSITE) && !defined(CONFIG_CDCACM_STRBASE)
-#  define CONFIG_CDCACM_STRBASE    (4)
+#  define CONFIG_CDCACM_STRBASE    (0)
 #endif
 
 #if defined(CONFIG_CDCACM_COMPOSITE) && !defined(CONFIG_COMPOSITE_IAD)
@@ -90,6 +92,7 @@
 #endif
 
 /* Descriptors **************************************************************/
+
 /* These settings are not modifiable via the NuttX configuration */
 
 #define CDC_VERSIONNO              0x0110   /* CDC version number 1.10 (BCD) */
@@ -169,6 +172,7 @@
 #define CDCACM_EPINBULK_ATTR       (USB_EP_ATTR_XFER_BULK)
 
 /* Device driver definitions ************************************************/
+
 /* A CDC/ACM device is specific by a minor number in the range of 0-255.
  * This maps to a character device at /dev/ttyACMx, x=0..255.
  */
@@ -177,6 +181,7 @@
 #define CDCACM_DEVNAME_SIZE        16
 
 /* Misc Macros **************************************************************/
+
 /* MIN/MAX macros */
 
 #ifndef MIN
diff --git a/drivers/usbdev/cdcacm_desc.c b/drivers/usbdev/cdcacm_desc.c
index 6e97a1d..ed8c754 100644
--- a/drivers/usbdev/cdcacm_desc.c
+++ b/drivers/usbdev/cdcacm_desc.c
@@ -58,6 +58,7 @@
  ****************************************************************************/
 
 /* USB descriptor templates these will be copied and modified **************/
+
 /* Device Descriptor.  If the USB serial device is configured as part of
  * composite device, then the device descriptor will be provided by the
  * composite device logic.
@@ -182,27 +183,27 @@ int cdcacm_mkstrdesc(uint8_t id, struct usb_strdesc_s *strdesc)
       return -EINVAL;
     }
 
-   /* The string is utf16-le.  The poor man's utf-8 to utf16-le
-    * conversion below will only handle 7-bit en-us ascii
-    */
-
-   len = strlen(str);
-   if (len > (CDCACM_MAXSTRLEN / 2))
-     {
-       len = (CDCACM_MAXSTRLEN / 2);
-     }
-
-   for (i = 0, ndata = 0; i < len; i++, ndata += 2)
-     {
-       strdesc->data[ndata]   = str[i];
-       strdesc->data[ndata+1] = 0;
-     }
-
-   strdesc->len  = ndata+2;
-   strdesc->type = USB_DESC_TYPE_STRING;
-   return strdesc->len;
+  /* The string is utf16-le.  The poor man's utf-8 to utf16-le
+   * conversion below will only handle 7-bit en-us ascii
+   */
+
+  len = strlen(str);
+  if (len > (CDCACM_MAXSTRLEN / 2))
+    {
+      len = (CDCACM_MAXSTRLEN / 2);
+    }
+
+  for (i = 0, ndata = 0; i < len; i++, ndata += 2)
+    {
+      strdesc->data[ndata]   = str[i];
+      strdesc->data[ndata + 1] = 0;
+    }
+
+  strdesc->len  = ndata + 2;
+  strdesc->type = USB_DESC_TYPE_STRING;
+  return strdesc->len;
 #else
-   return -EINVAL;
+  return -EINVAL;
 #endif
 }
 
@@ -388,7 +389,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 */
@@ -515,7 +520,8 @@ int16_t cdcacm_mkcfgdesc(FAR uint8_t *buf,
 
   if (buf != NULL)
     {
-      FAR struct cdc_callmgmt_funcdesc_s *dest = (FAR struct cdc_callmgmt_funcdesc_s *)buf;
+      FAR struct cdc_callmgmt_funcdesc_s *dest =
+                 (FAR struct cdc_callmgmt_funcdesc_s *)buf;
 
       dest->size    = SIZEOF_CALLMGMT_FUNCDESC;               /* Descriptor length */
       dest->type    = USB_DESC_TYPE_CSINTERFACE;              /* Descriptor type */
@@ -532,7 +538,9 @@ int16_t cdcacm_mkcfgdesc(FAR uint8_t *buf,
 
   if (buf != NULL)
     {
-      cdcacm_copy_epdesc(CDCACM_EPINTIN, (struct usb_epdesc_s *)buf, devinfo, hispeed);
+      cdcacm_copy_epdesc(CDCACM_EPINTIN, (struct usb_epdesc_s *)buf,
+                         devinfo,
+                         hispeed);
 
       buf += USB_SIZEOF_EPDESC;
     }
@@ -568,7 +576,9 @@ int16_t cdcacm_mkcfgdesc(FAR uint8_t *buf,
 
   if (buf != NULL)
     {
-      cdcacm_copy_epdesc(CDCACM_EPBULKOUT, (struct usb_epdesc_s *)buf, devinfo, hispeed);
+      cdcacm_copy_epdesc(CDCACM_EPBULKOUT, (struct usb_epdesc_s *)buf,
+                         devinfo,
+                         hispeed);
       buf += USB_SIZEOF_EPDESC;
     }
 
@@ -578,7 +588,9 @@ int16_t cdcacm_mkcfgdesc(FAR uint8_t *buf,
 
   if (buf != NULL)
     {
-      cdcacm_copy_epdesc(CDCACM_EPBULKIN, (struct usb_epdesc_s *)buf, devinfo, hispeed);
+      cdcacm_copy_epdesc(CDCACM_EPBULKIN, (struct usb_epdesc_s *)buf,
+                         devinfo,
+                         hispeed);
       buf += USB_SIZEOF_EPDESC;
     }
 
diff --git a/drivers/usbdev/composite.c b/drivers/usbdev/composite.c
index 915700a..945cbe7 100644
--- a/drivers/usbdev/composite.c
+++ b/drivers/usbdev/composite.c
@@ -243,10 +243,10 @@ static int composite_msftdescriptor(FAR struct composite_dev_s *priv,
           size_t total_len     = sizeof(struct usb_msft_os_feature_desc_s) +
                                  (response->count - 1) *
                                  sizeof(struct usb_msft_os_function_desc_s);
-          response->len[0]     = (total_len >> 0) & 0xFF;
-          response->len[1]     = (total_len >> 8) & 0xFF;
-          response->len[2]     = (total_len >> 16) & 0xFF;
-          response->len[3]     = (total_len >> 24) & 0xFF;
+          response->len[0]     = (total_len >> 0) & 0xff;
+          response->len[1]     = (total_len >> 8) & 0xff;
+          response->len[2]     = (total_len >> 16) & 0xff;
+          response->len[3]     = (total_len >> 24) & 0xff;
           response->version[1] = 0x01;
           response->index[0]   = MSFTOSDESC_INDEX_FUNCTION;
 
@@ -265,7 +265,7 @@ static int composite_msftdescriptor(FAR struct composite_dev_s *priv,
        * a bit incorrect here, the interface is in ctrl->value low byte.
        * Also WinUSB driver has limitation that index[0] will not be correct if
        * trying to read descriptors using e.g. libusb xusb.exe.
-        */
+       */
 
       uint8_t interface = ctrl->value[0];
       int ret = -ENOTSUP;
@@ -281,7 +281,7 @@ static int composite_msftdescriptor(FAR struct composite_dev_s *priv,
               *dispatched = true;
               break;
             }
-       }
+        }
 
       return ret;
     }
@@ -437,7 +437,7 @@ static void composite_unbind(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -507,7 +507,7 @@ static int composite_setup(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_SETUPINVALIDARGS), 0);
       return -EIO;
-     }
+    }
 #endif
 
   /* Extract a reference to private data */
@@ -588,7 +588,8 @@ static int composite_setup(FAR struct usbdevclass_driver_s *driver,
                   /* value == string index. Zero is the language ID. */
 
                   uint8_t strid = ctrl->value[0];
-                  FAR struct usb_strdesc_s *buf = (FAR struct usb_strdesc_s *)ctrlreq->buf;
+                  FAR struct usb_strdesc_s *buf =
+                             (FAR struct usb_strdesc_s *)ctrlreq->buf;
 
                   if (strid < COMPOSITE_NSTRIDS)
                     {
@@ -604,7 +605,8 @@ static int composite_setup(FAR struct usbdevclass_driver_s *driver,
 
                       static const uint8_t msft_response[16] =
                       {
-                        'M', 0, 'S', 0, 'F', 0, 'T', 0, '1', 0, '0', 0, '0', 0, 0xEE, 0
+                        'M', 0, 'S', 0, 'F', 0, 'T', 0, '1', 0, '0', 0, '0', 0,
+                        0xff, 0
                       };
 
                       buf->len = 18;
@@ -619,8 +621,8 @@ static int composite_setup(FAR struct usbdevclass_driver_s *driver,
 
                       for (i = 0; i < priv->ndevices; i++)
                         {
-                          if (strid >= priv->device[i].compdesc.devinfo.strbase &&
-                              strid <  priv->device[i].compdesc.devinfo.strbase +
+                          if (strid >  priv->device[i].compdesc.devinfo.strbase &&
+                              strid <= priv->device[i].compdesc.devinfo.strbase +
                                        priv->device[i].compdesc.devinfo.nstrings)
                             {
                               ret = priv->device[i].compdesc.mkstrdesc(strid -
@@ -634,7 +636,8 @@ static int composite_setup(FAR struct usbdevclass_driver_s *driver,
 
               default:
                 {
-                  usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_GETUNKNOWNDESC), value);
+                  usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_GETUNKNOWNDESC),
+                           value);
                 }
                 break;
               }
@@ -651,7 +654,11 @@ static int composite_setup(FAR struct usbdevclass_driver_s *driver,
 
                 for (i = 0; i < priv->ndevices; i++)
                   {
-                    ret = CLASS_SETUP(priv->device[i].dev, dev, ctrl, dataout, outlen);
+                    ret = CLASS_SETUP(priv->device[i].dev,
+                                      dev,
+                                      ctrl,
+                                      dataout,
+                                      outlen);
                   }
 
                 dispatched = true;
@@ -693,7 +700,8 @@ static int composite_setup(FAR struct usbdevclass_driver_s *driver,
            break;
 
         default:
-          usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_UNSUPPORTEDSTDREQ), ctrl->req);
+          usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_UNSUPPORTEDSTDREQ),
+                   ctrl->req);
           break;
         }
     }
@@ -770,7 +778,7 @@ static void composite_disconnect(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -828,7 +836,7 @@ static void composite_suspend(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -875,7 +883,7 @@ static void composite_resume(FAR struct usbdevclass_driver_s *driver,
     {
       usbtrace(TRACE_CLSERROR(USBCOMPOSITE_TRACEERR_INVALIDARG), 0);
       return;
-     }
+    }
 #endif
 
   /* Extract reference to private data */
@@ -905,6 +913,7 @@ static void composite_resume(FAR struct usbdevclass_driver_s *driver,
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
+
 /****************************************************************************
  * Name: composite_initialize
  *
@@ -1050,6 +1059,7 @@ void composite_uninitialize(FAR void *handle)
   usbdev_unregister(&alloc->drvr.drvr);
 
   /* Free any resources used by the composite driver */
+
   /* None */
 
   /* Second phase uninitialization:  Clean up all memory resources */
@@ -1084,7 +1094,7 @@ int composite_ep0submit(FAR struct usbdevclass_driver_s *driver,
    * it becomes necessary to manage the completion callbacks.
    */
 
-   return EP_SUBMIT(dev->ep0, ctrlreq);
+  return EP_SUBMIT(dev->ep0, ctrlreq);
 }
 
 #endif /* CONFIG_USBDEV_COMPOSITE */
diff --git a/drivers/usbdev/composite_desc.c b/drivers/usbdev/composite_desc.c
index 7ab23f1..a94a37d 100644
--- a/drivers/usbdev/composite_desc.c
+++ b/drivers/usbdev/composite_desc.c
@@ -169,20 +169,20 @@ int composite_mkstrdesc(uint8_t id, struct usb_strdesc_s *strdesc)
       return -EINVAL;
     }
 
-   /* The string is utf16-le.  The poor man's utf-8 to utf16-le
-    * conversion below will only handle 7-bit en-us ascii
-    */
-
-   len = strlen(str);
-   for (i = 0, ndata = 0; i < len; i++, ndata += 2)
-     {
-       strdesc->data[ndata]   = str[i];
-       strdesc->data[ndata+1] = 0;
-     }
-
-   strdesc->len  = ndata+2;
-   strdesc->type = USB_DESC_TYPE_STRING;
-   return strdesc->len;
+  /* The string is utf16-le.  The poor man's utf-8 to utf16-le
+   * conversion below will only handle 7-bit en-us ascii
+   */
+
+  len = strlen(str);
+  for (i = 0, ndata = 0; i < len; i++, ndata += 2)
+    {
+      strdesc->data[ndata]   = str[i];
+      strdesc->data[ndata + 1] = 0;
+    }
+
+  strdesc->len  = ndata + 2;
+  strdesc->type = USB_DESC_TYPE_STRING;
+  return strdesc->len;
 }
 
 /****************************************************************************
@@ -219,10 +219,15 @@ int16_t composite_mkcfgdesc(FAR struct composite_dev_s *priv, FAR uint8_t *buf)
   int i;
 
   /* Configuration descriptor for the composite device */
+
   /* 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.h b/drivers/usbdev/usbmsc.h
index 97149e9..b907699 100644
--- a/drivers/usbdev/usbmsc.h
+++ b/drivers/usbdev/usbmsc.h
@@ -59,6 +59,7 @@
  ****************************************************************************/
 
 /* Configuration ************************************************************/
+
 /* If the USB mass storage device is configured as part of a composite device
  * then both CONFIG_USBDEV_COMPOSITE and CONFIG_USBMSC_COMPOSITE must be
  * defined.
@@ -69,7 +70,7 @@
 #endif
 
 #if defined(CONFIG_USBMSC_COMPOSITE) && !defined(CONFIG_USBMSC_STRBASE)
-#  define CONFIG_USBMSC_STRBASE (4)
+#  define CONFIG_USBMSC_STRBASE (0)
 #endif
 
 /* Interface IDs.  If the mass storage driver is built as a component of a
@@ -360,6 +361,7 @@
 /****************************************************************************
  * Public Types
  ****************************************************************************/
+
 /* Endpoint descriptors */
 
 enum usbmsc_epdesc_e
diff --git a/drivers/usbdev/usbmsc_desc.c b/drivers/usbdev/usbmsc_desc.c
index be2e10e..6fff103 100644
--- a/drivers/usbdev/usbmsc_desc.c
+++ b/drivers/usbdev/usbmsc_desc.c
@@ -55,6 +55,7 @@
  ****************************************************************************/
 
 /* Descriptors **************************************************************/
+
 /* Device descriptor.  If the USB mass storage device is configured as part
  * of a composite device, then the device descriptor will be provided by the
  * composite device logic.
@@ -88,7 +89,6 @@ static const struct usb_devdesc_s g_devdesc =
 };
 #endif
 
-
 #ifdef CONFIG_USBDEV_DUALSPEED
 #ifndef CONFIG_USBMSC_COMPOSITE
 static const struct usb_qualdesc_s g_qualdesc =
@@ -112,6 +112,7 @@ static const struct usb_qualdesc_s g_qualdesc =
 /****************************************************************************
  * Public Data
  ****************************************************************************/
+
 /* Strings ******************************************************************/
 
 #ifndef CONFIG_USBMSC_COMPOSITE
@@ -170,7 +171,8 @@ int usbmsc_mkstrdesc(uint8_t id, struct usb_strdesc_s *strdesc)
       break;
 #endif
 
- /* case USBMSC_CONFIGSTRID: */
+  /* case USBMSC_CONFIGSTRID: */
+
     case USBMSC_INTERFACESTRID:
       str = CONFIG_USBMSC_CONFIGSTR;
       break;
@@ -179,25 +181,25 @@ int usbmsc_mkstrdesc(uint8_t id, struct usb_strdesc_s *strdesc)
       return -EINVAL;
     }
 
-   /* The string is utf16-le.  The poor man's utf-8 to utf16-le
-    * conversion below will only handle 7-bit en-us ascii
-    */
-
-   len = strlen(str);
-   if (len > (USBMSC_MAXSTRLEN / 2))
-     {
-       len = (USBMSC_MAXSTRLEN / 2);
-     }
-
-   for (i = 0, ndata = 0; i < len; i++, ndata += 2)
-     {
-       strdesc->data[ndata]   = str[i];
-       strdesc->data[ndata+1] = 0;
-     }
-
-   strdesc->len  = ndata+2;
-   strdesc->type = USB_DESC_TYPE_STRING;
-   return strdesc->len;
+  /* The string is utf16-le.  The poor man's utf-8 to utf16-le
+   * conversion below will only handle 7-bit en-us ascii
+   */
+
+  len = strlen(str);
+  if (len > (USBMSC_MAXSTRLEN / 2))
+    {
+      len = (USBMSC_MAXSTRLEN / 2);
+    }
+
+  for (i = 0, ndata = 0; i < len; i++, ndata += 2)
+    {
+      strdesc->data[ndata]   = str[i];
+      strdesc->data[ndata + 1] = 0;
+    }
+
+  strdesc->len  = ndata + 2;
+  strdesc->type = USB_DESC_TYPE_STRING;
+  return strdesc->len;
 }
 
 /****************************************************************************
@@ -339,14 +341,18 @@ int16_t usbmsc_mkcfgdesc(uint8_t *buf,
 #ifndef CONFIG_USBMSC_COMPOSITE
   {
     /* Configuration descriptor  If the USB mass storage device is configured as part
-     * of a composite device, then the configuration descriptor will be provided by the
-     * composite device logic.
+     * of a composite device, then the configuration descriptor will be provided
+     * by the composite device logic.
      */
 
     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 */
diff --git a/drivers/usbdev/usbmsc_scsi.c b/drivers/usbdev/usbmsc_scsi.c
index 267e56c..8e99919 100644
--- a/drivers/usbdev/usbmsc_scsi.c
+++ b/drivers/usbdev/usbmsc_scsi.c
@@ -430,8 +430,10 @@ static inline int usbmsc_cmdtestunitready(FAR struct usbmsc_dev_s *priv)
 static inline int usbmsc_cmdrequestsense(FAR struct usbmsc_dev_s *priv,
                                          FAR uint8_t *buf)
 {
-  FAR struct scsicmd_requestsense_s *request = (FAR struct scsicmd_requestsense_s *)priv->cdb;
-  FAR struct scsiresp_fixedsensedata_s *response = (FAR struct scsiresp_fixedsensedata_s *)buf;
+  FAR struct scsicmd_requestsense_s *request =
+             (FAR struct scsicmd_requestsense_s *)priv->cdb;
+  FAR struct scsiresp_fixedsensedata_s *response =
+             (FAR struct scsiresp_fixedsensedata_s *)buf;
   FAR struct usbmsc_lun_s *lun;
   uint32_t sd;
   uint32_t sdinfo;
@@ -482,7 +484,8 @@ static inline int usbmsc_cmdrequestsense(FAR struct usbmsc_dev_s *priv,
 
       memset(response, 0, SCSIRESP_FIXEDSENSEDATA_SIZEOF);
 
-      response->code  = SCSIRESP_SENSEDATA_RESPVALID | SCSIRESP_SENSEDATA_CURRENTFIXED;
+      response->code  = SCSIRESP_SENSEDATA_RESPVALID |
+                        SCSIRESP_SENSEDATA_CURRENTFIXED;
       response->flags = (uint8_t)(sd >> 16);
       usbmsc_putbe32(response->info, sdinfo);
       response->len   = SCSIRESP_FIXEDSENSEDATA_SIZEOF - 7;
@@ -586,7 +589,8 @@ static inline int usbmsc_cmdwrite6(FAR struct usbmsc_dev_s *priv)
 
       /* Get the Logical Block Address (LBA) from cdb[] as the starting sector */
 
-      priv->sector = (uint32_t)(write6->mslba & SCSICMD_WRITE6_MSLBAMASK) << 16 | (uint32_t)usbmsc_getbe16(write6->lslba);
+      priv->sector = (uint32_t)(write6->mslba & SCSICMD_WRITE6_MSLBAMASK) << 16 |
+                     (uint32_t)usbmsc_getbe16(write6->lslba);
 
       /* Verify that a block driver has been bound to the LUN */
 
@@ -619,7 +623,8 @@ static inline int usbmsc_cmdwrite6(FAR struct usbmsc_dev_s *priv)
 
       else
         {
-          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDWRITE6), priv->cdb[0]);
+          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDWRITE6),
+                   priv->cdb[0]);
           priv->thstate = USBMSC_STATE_CMDWRITE;
         }
     }
@@ -651,8 +656,9 @@ static inline int usbmsc_cmdinquiry(FAR struct usbmsc_dev_s *priv,
     {
       if (!priv->lun)
         {
-          response->qualtype = SCSIRESP_INQUIRYPQ_NOTCAPABLE | SCSIRESP_INQUIRYPD_UNKNOWN;
-         }
+          response->qualtype = SCSIRESP_INQUIRYPQ_NOTCAPABLE |
+                               SCSIRESP_INQUIRYPD_UNKNOWN;
+        }
       else if ((inquiry->flags != 0) || (inquiry->pagecode != 0))
         {
           usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_INQUIRYFLAGS), 0);
@@ -673,7 +679,7 @@ static inline int usbmsc_cmdinquiry(FAR struct usbmsc_dev_s *priv,
 
           /* Strings */
 
-          memset(response->vendorid, ' ', 8+16+4);
+          memset(response->vendorid, ' ', 8 + 16 + 4);
 
           len = strlen(g_mscvendorstr);
           if (len > 8)
@@ -714,7 +720,8 @@ static inline int usbmsc_cmdinquiry(FAR struct usbmsc_dev_s *priv,
 
 static inline int usbmsc_cmdmodeselect6(FAR struct usbmsc_dev_s *priv)
 {
-  FAR struct scsicmd_modeselect6_s *modeselect = (FAR struct scsicmd_modeselect6_s *)priv->cdb;
+  FAR struct scsicmd_modeselect6_s *modeselect =
+             (FAR struct scsicmd_modeselect6_s *)priv->cdb;
 
   priv->u.alloclen = modeselect->plen;
   usbmsc_setupcmd(priv, SCSICMD_MODESELECT6_SIZEOF,
@@ -737,7 +744,8 @@ static inline int usbmsc_cmdmodeselect6(FAR struct usbmsc_dev_s *priv)
 static int usbmsc_modepage(FAR struct usbmsc_dev_s *priv, FAR uint8_t *buf,
                            uint8_t pcpgcode, int *mdlen)
 {
-  FAR struct scsiresp_cachingmodepage_s *cmp = (FAR struct scsiresp_cachingmodepage_s *)buf;
+  FAR struct scsiresp_cachingmodepage_s *cmp =
+             (FAR struct scsiresp_cachingmodepage_s *)buf;
 
   /* Saving parms not supported */
 
@@ -750,8 +758,10 @@ static int usbmsc_modepage(FAR struct usbmsc_dev_s *priv, FAR uint8_t *buf,
 
   /* Only the caching mode page is supported: */
 
-  if ((pcpgcode & SCSICMD_MODESENSE_PGCODEMASK) == SCSIRESP_MODESENSE_PGCCODE_CACHING ||
-      (pcpgcode & SCSICMD_MODESENSE_PGCODEMASK) == SCSIRESP_MODESENSE_PGCCODE_RETURNALL)
+  if ((pcpgcode & SCSICMD_MODESENSE_PGCODEMASK) ==
+       SCSIRESP_MODESENSE_PGCCODE_CACHING ||
+      (pcpgcode & SCSICMD_MODESENSE_PGCODEMASK) ==
+       SCSIRESP_MODESENSE_PGCCODE_RETURNALL)
     {
       memset(cmp, 0, 12);
       cmp->pgcode = SCSIRESP_MODESENSE_PGCCODE_CACHING;
@@ -770,7 +780,7 @@ static int usbmsc_modepage(FAR struct usbmsc_dev_s *priv, FAR uint8_t *buf,
           cmp->maxpfc[1] = 0xff;
         }
 
-       /* Return the mode data length */
+      /* Return the mode data length */
 
       *mdlen = 12; /* Only the first 12-bytes of caching mode page sent */
       return OK;
@@ -794,8 +804,10 @@ static int usbmsc_modepage(FAR struct usbmsc_dev_s *priv, FAR uint8_t *buf,
 static int inline usbmsc_cmdmodesense6(FAR struct usbmsc_dev_s *priv,
                                        FAR uint8_t *buf)
 {
-  FAR struct scsicmd_modesense6_s *modesense = (FAR struct scsicmd_modesense6_s *)priv->cdb;
-  FAR struct scsiresp_modeparameterhdr6_s *mph = (FAR struct scsiresp_modeparameterhdr6_s *)buf;
+  FAR struct scsicmd_modesense6_s *modesense =
+             (FAR struct scsicmd_modesense6_s *)priv->cdb;
+  FAR struct scsiresp_modeparameterhdr6_s *mph =
+             (FAR struct scsiresp_modeparameterhdr6_s *)buf;
   int mdlen;
   int ret;
 
@@ -804,7 +816,8 @@ static int inline usbmsc_cmdmodesense6(FAR struct usbmsc_dev_s *priv,
                         USBMSC_FLAGS_DIRDEVICE2HOST);
   if (ret == OK)
     {
-      if ((modesense->flags & ~SCSICMD_MODESENSE6_DBD) != 0 || modesense->subpgcode != 0)
+      if ((modesense->flags & ~SCSICMD_MODESENSE6_DBD) != 0 ||
+           modesense->subpgcode != 0)
         {
           usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_MODESENSE6FLAGS), 0);
           priv->lun->sd = SCSI_KCQIR_INVALIDFIELDINCBA;
@@ -825,13 +838,14 @@ static int inline usbmsc_cmdmodesense6(FAR struct usbmsc_dev_s *priv,
 
           /* There are no block descriptors, only the following mode page: */
 
-          ret = usbmsc_modepage(priv, &buf[SCSIRESP_MODEPARAMETERHDR6_SIZEOF], modesense->pcpgcode, &mdlen);
+          ret = usbmsc_modepage(priv, &buf[SCSIRESP_MODEPARAMETERHDR6_SIZEOF],
+                                modesense->pcpgcode, &mdlen);
           if (ret == OK)
             {
-               /* Store the mode data length and return the total message size */
+              /* Store the mode data length and return the total message size */
 
-               mph->mdlen      = mdlen + SCSIRESP_MODEPARAMETERHDR6_SIZEOF - 1;
-               priv->nreqbytes = mdlen + SCSIRESP_MODEPARAMETERHDR6_SIZEOF;
+              mph->mdlen      = mdlen + SCSIRESP_MODEPARAMETERHDR6_SIZEOF - 1;
+              priv->nreqbytes = mdlen + SCSIRESP_MODEPARAMETERHDR6_SIZEOF;
             }
         }
     }
@@ -881,7 +895,8 @@ static inline int usbmsc_cmdstartstopunit(FAR struct usbmsc_dev_s *priv)
 static inline int usbmsc_cmdpreventmediumremoval(FAR struct usbmsc_dev_s *priv)
 {
 #ifdef CONFIG_USBMSC_REMOVABLE
-  FAR struct scsicmd_preventmediumremoval_s *pmr = (FAR struct scsicmd_preventmediumremoval_s *)priv->cdb;
+  FAR struct scsicmd_preventmediumremoval_s *pmr =
+             (FAR struct scsicmd_preventmediumremoval_s *)priv->cdb;
 #endif
   FAR struct usbmsc_lun_s *lun;
   int ret;
@@ -922,7 +937,8 @@ static inline int usbmsc_cmdpreventmediumremoval(FAR struct usbmsc_dev_s *priv)
 static inline int usbmsc_cmdreadformatcapacity(FAR struct usbmsc_dev_s *priv,
                                                FAR uint8_t *buf)
 {
-  FAR struct scsicmd_readformatcapcacities_s *rfc = (FAR struct scsicmd_readformatcapcacities_s *)priv->cdb;
+  FAR struct scsicmd_readformatcapcacities_s *rfc =
+             (FAR struct scsicmd_readformatcapcacities_s *)priv->cdb;
   FAR struct scsiresp_readformatcapacities_s *hdr;
   FAR struct usbmsc_lun_s *lun;
   int ret;
@@ -960,8 +976,10 @@ static inline int usbmsc_cmdreadformatcapacity(FAR struct usbmsc_dev_s *priv,
 static int inline usbmsc_cmdreadcapacity10(FAR struct usbmsc_dev_s *priv,
                                            FAR uint8_t *buf)
 {
-  FAR struct scsicmd_readcapacity10_s *rcc = (FAR struct scsicmd_readcapacity10_s *)priv->cdb;
-  FAR struct scsiresp_readcapacity10_s *rcr = (FAR struct scsiresp_readcapacity10_s *)buf;
+  FAR struct scsicmd_readcapacity10_s *rcc =
+             (FAR struct scsicmd_readcapacity10_s *)priv->cdb;
+  FAR struct scsiresp_readcapacity10_s *rcr =
+             (FAR struct scsiresp_readcapacity10_s *)buf;
   FAR struct usbmsc_lun_s *lun;
   uint32_t lba;
   int ret;
@@ -1044,13 +1062,14 @@ static inline int usbmsc_cmdread10(FAR struct usbmsc_dev_s *priv)
           usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_READ10LBARANGE), 0);
           lun->sd = SCSI_KCQIR_LBAOUTOFRANGE;
           ret     = -EINVAL;
-       }
+        }
 
       /* Looks like we are good to go */
 
       else
         {
-          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDREAD10), priv->cdb[0]);
+          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDREAD10),
+                   priv->cdb[0]);
           priv->thstate = USBMSC_STATE_CMDREAD;
         }
     }
@@ -1085,7 +1104,8 @@ static inline int usbmsc_cmdwrite10(FAR struct usbmsc_dev_s *priv)
 
       /* Verify that we can support this write command */
 
-      if ((write10->flags & ~(SCSICMD_WRITE10FLAGS_DPO | SCSICMD_WRITE10FLAGS_FUA)) != 0)
+      if ((write10->flags & ~(SCSICMD_WRITE10FLAGS_DPO |
+                              SCSICMD_WRITE10FLAGS_FUA)) != 0)
         {
           usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_WRITE10FLAGS), 0);
           lun->sd = SCSI_KCQIR_INVALIDFIELDINCBA;
@@ -1110,20 +1130,21 @@ static inline int usbmsc_cmdwrite10(FAR struct usbmsc_dev_s *priv)
           ret     = -EINVAL;
         }
 
-     /* Verify that LBA lies in the range supported by the block driver */
+      /* Verify that LBA lies in the range supported by the block driver */
 
-     else if (priv->sector >= lun->nsectors)
+      else if (priv->sector >= lun->nsectors)
         {
           usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_WRITE10LBARANGE), 0);
           lun->sd = SCSI_KCQIR_LBAOUTOFRANGE;
           ret     = -EINVAL;
-       }
+        }
 
       /* Looks like we are good to go */
 
       else
         {
-          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDWRITE10), priv->cdb[0]);
+          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDWRITE10),
+                   priv->cdb[0]);
           priv->thstate = USBMSC_STATE_CMDWRITE;
         }
     }
@@ -1253,7 +1274,8 @@ static inline int usbmsc_cmdsynchronizecache10(FAR struct usbmsc_dev_s *priv)
 
 static inline int usbmsc_cmdmodeselect10(FAR struct usbmsc_dev_s *priv)
 {
-  FAR struct scsicmd_modeselect10_s *modeselect = (FAR struct scsicmd_modeselect10_s *)priv->cdb;
+  FAR struct scsicmd_modeselect10_s *modeselect =
+             (FAR struct scsicmd_modeselect10_s *)priv->cdb;
 
   priv->u.alloclen = usbmsc_getbe16(modeselect->parmlen);
   usbmsc_setupcmd(priv, SCSICMD_MODESELECT10_SIZEOF,
@@ -1276,8 +1298,10 @@ static inline int usbmsc_cmdmodeselect10(FAR struct usbmsc_dev_s *priv)
 static int inline usbmsc_cmdmodesense10(FAR struct usbmsc_dev_s *priv,
                                         FAR uint8_t *buf)
 {
-  FAR struct scsicmd_modesense10_s *modesense = (FAR struct scsicmd_modesense10_s *)priv->cdb;
-  FAR struct scsiresp_modeparameterhdr10_s *mph = (FAR struct scsiresp_modeparameterhdr10_s *)buf;
+  FAR struct scsicmd_modesense10_s *modesense =
+             (FAR struct scsicmd_modesense10_s *)priv->cdb;
+  FAR struct scsiresp_modeparameterhdr10_s *mph =
+             (FAR struct scsiresp_modeparameterhdr10_s *)buf;
   int mdlen;
   int ret;
 
@@ -1307,10 +1331,11 @@ static int inline usbmsc_cmdmodesense10(FAR struct usbmsc_dev_s *priv,
 
           /* There are no block descriptors, only the following mode page: */
 
-          ret = usbmsc_modepage(priv, &buf[SCSIRESP_MODEPARAMETERHDR10_SIZEOF], modesense->pcpgcode, &mdlen);
+          ret = usbmsc_modepage(priv, &buf[SCSIRESP_MODEPARAMETERHDR10_SIZEOF],
+                                modesense->pcpgcode, &mdlen);
           if (ret == OK)
             {
-               /* Store the mode data length and return the total message size */
+              /* Store the mode data length and return the total message size */
 
               usbmsc_putbe16(mph->mdlen, mdlen - 2);
               priv->nreqbytes = mdlen + SCSIRESP_MODEPARAMETERHDR10_SIZEOF;
@@ -1377,7 +1402,8 @@ static inline int usbmsc_cmdread12(FAR struct usbmsc_dev_s *priv)
 
       else
         {
-          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDREAD12), priv->cdb[0]);
+          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDREAD12),
+                   priv->cdb[0]);
           priv->thstate = USBMSC_STATE_CMDREAD;
         }
     }
@@ -1412,7 +1438,8 @@ static inline int usbmsc_cmdwrite12(FAR struct usbmsc_dev_s *priv)
 
       /* Verify that we can support this write command */
 
-      if ((write12->flags & ~(SCSICMD_WRITE12FLAGS_DPO | SCSICMD_WRITE12FLAGS_FUA)) != 0)
+      if ((write12->flags & ~(SCSICMD_WRITE12FLAGS_DPO |
+                              SCSICMD_WRITE12FLAGS_FUA)) != 0)
         {
           usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_WRITE12FLAGS), 0);
           lun->sd = SCSI_KCQIR_INVALIDFIELDINCBA;
@@ -1447,7 +1474,8 @@ static inline int usbmsc_cmdwrite12(FAR struct usbmsc_dev_s *priv)
 
       else
         {
-          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDWRITE12), priv->cdb[0]);
+          usbtrace(TRACE_CLASSSTATE(USBMSC_CLASSSTATE_CMDPARSECMDWRITE12),
+                   priv->cdb[0]);
           priv->thstate = USBMSC_STATE_CMDWRITE;
           return OK;
         }
@@ -1544,7 +1572,7 @@ static int inline usbmsc_setupcmd(FAR struct usbmsc_dev_s *priv,
       /* Clip to the length in the CBW and declare a phase error */
 
       usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_PHASEERROR1), priv->cdb[0]);
-      if ((flags & USBMSC_FLAGS_BLOCKXFR) != 0)
+      if ((flags & USBMSC_FLAGS_BLOCKXFR) == 0)
         {
           priv->u.alloclen = priv->cbwlen;
         }
@@ -1613,7 +1641,7 @@ static int inline usbmsc_setupcmd(FAR struct usbmsc_dev_s *priv,
    * must be zero
    */
 
-  if (priv->cdb[cdblen-1] != 0)
+  if (priv->cdb[cdblen - 1] != 0)
     {
       usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_SCSICMDCONTROL), 0);
       if (lun)
@@ -1672,7 +1700,8 @@ static int usbmsc_idlestate(FAR struct usbmsc_dev_s *priv)
 
   /* Handle the CBW */
 
-  usbmsc_dumpdata("SCSCI CBW", (FAR uint8_t *)cbw, USBMSC_CBW_SIZEOF - USBMSC_MAXCDBLEN);
+  usbmsc_dumpdata("SCSCI CBW", (FAR uint8_t *)cbw, USBMSC_CBW_SIZEOF -
+                  USBMSC_MAXCDBLEN);
   usbmsc_dumpdata("      CDB", cbw->cdb, MIN(cbw->cdblen, USBMSC_MAXCDBLEN));
 
   /* Check for properly formatted CBW? */
@@ -1750,7 +1779,7 @@ static int usbmsc_idlestate(FAR struct usbmsc_dev_s *priv)
       /* Return the read request to the bulk out endpoint for re-filling */
 
       req           = privreq->req;
-      req->len      = CONFIG_USBMSC_BULKOUTREQLEN;
+      req->len      = priv->epbulkout->maxpacket;
       req->priv     = privreq;
       req->callback = usbmsc_rdcomplete;
 
@@ -1832,158 +1861,171 @@ static int usbmsc_cmdparsestate(FAR struct usbmsc_dev_s *priv)
   usbmsc_scsi_lock(priv);
   switch (priv->cdb[0])
     {
-    case SCSI_CMD_TESTUNITREADY:                  /* 0x00 Mandatory */
+    case SCSI_CMD_TESTUNITREADY:                     /* 0x00 Mandatory */
       ret = usbmsc_cmdtestunitready(priv);
       break;
 
- /* case SCSI_CMD_REZEROUNIT:                      * 0x01 Obsolete
-  *                                                * 0x02 Vendor-specific */
+    /* case SCSI_CMD_REZEROUNIT:                      * 0x01 Obsolete
+     *                                                * 0x02 Vendor-specific
+     */
 
-    case SCSI_CMD_REQUESTSENSE:                   /* 0x03 Mandatory */
+    case SCSI_CMD_REQUESTSENSE:                      /* 0x03 Mandatory */
       ret = usbmsc_cmdrequestsense(priv, buf);
       break;
 
- /* case SCSI_CMD_FORMAT_UNIT:                     * 0x04 Mandatory, but not implemented
-  *                                                * 0x05 Vendor specific
-  *                                                * 0x06 Vendor specific
-  * case SCSI_CMD_REASSIGNBLOCKS:                  * 0x07 Optional */
+    /* case SCSI_CMD_FORMAT_UNIT:                     * 0x04 Mandatory, but not impl.
+     *                                                * 0x05 Vendor specific
+     *                                                * 0x06 Vendor specific
+     * case SCSI_CMD_REASSIGNBLOCKS:                  * 0x07 Optional
+     */
 
-    case SCSI_CMD_READ6:                          /* 0x08 Mandatory */
+    case SCSI_CMD_READ6:                             /* 0x08 Mandatory */
       ret = usbmsc_cmdread6(priv);
       break;
 
- /*                                                * 0x09 Vendor specific */
+    /*                                                * 0x09 Vendor specific */
 
-    case SCSI_CMD_WRITE6:                         /* 0x0a Optional */
+    case SCSI_CMD_WRITE6:                            /* 0x0a Optional */
       ret = usbmsc_cmdwrite6(priv);
       break;
 
- /* case SCSI_CMD_SEEK6:                           * 0x0b Obsolete
-  *                                                * 0x0c-0x10 Vendor specific
-  * case SCSI_CMD_SPACE6:                          * 0x11 Vendor specific */
+    /* case SCSI_CMD_SEEK6:                           * 0x0b Obsolete
+     *                                                * 0x0c-0x10 Vendor specific
+     * case SCSI_CMD_SPACE6:                          * 0x11 Vendor specific
+     */
 
-    case SCSI_CMD_INQUIRY:                        /* 0x12 Mandatory */
+    case SCSI_CMD_INQUIRY:                           /* 0x12 Mandatory */
       ret = usbmsc_cmdinquiry(priv, buf);
       break;
 
- /*                                                * 0x13-0x14 Vendor specific */
+    /*                                                * 0x13-0x14 Vendor specific */
 
-    case SCSI_CMD_MODESELECT6:                    /* 0x15 Optional */
+    case SCSI_CMD_MODESELECT6:                       /* 0x15 Optional */
       ret = usbmsc_cmdmodeselect6(priv);
       break;
 
- /* case SCSI_CMD_RESERVE6:                        * 0x16 Obsolete
-  * case SCSI_CMD_RELEASE6:                        * 0x17 Obsolete
-  * case SCSI_CMD_COPY:                            * 0x18 Obsolete
-  *                                                * 0x19 Vendor specific */
+    /* case SCSI_CMD_RESERVE6:                        * 0x16 Obsolete
+     * case SCSI_CMD_RELEASE6:                        * 0x17 Obsolete
+     * case SCSI_CMD_COPY:                            * 0x18 Obsolete
+     *                                                * 0x19 Vendor specific
+     */
 
-    case SCSI_CMD_MODESENSE6:                     /* 0x1a Optional */
+    case SCSI_CMD_MODESENSE6:                        /* 0x1a Optional */
       ret = usbmsc_cmdmodesense6(priv, buf);
       break;
 
-    case SCSI_CMD_STARTSTOPUNIT:                  /* 0x1b Optional */
+    case SCSI_CMD_STARTSTOPUNIT:                     /* 0x1b Optional */
       ret = usbmsc_cmdstartstopunit(priv);
       break;
 
- /* case SCSI_CMD_RECEIVEDIAGNOSTICRESULTS:        * 0x1c Optional
-  * case SCSI_CMD_SENDDIAGNOSTIC:                  * 0x1d Mandatory, but not implemented */
+    /* case SCSI_CMD_RECEIVEDIAGNOSTICRESULTS:        * 0x1c Optional
+     * case SCSI_CMD_SENDDIAGNOSTIC:                  * 0x1d Mandatory, but not impl.
+     */
 
-    case SCSI_CMD_PREVENTMEDIAREMOVAL:            /* 0x1e Optional */
+    case SCSI_CMD_PREVENTMEDIAREMOVAL:               /* 0x1e Optional */
       ret = usbmsc_cmdpreventmediumremoval(priv);
       break;
 
- /*                                                * 0x20-22 Vendor specific */
-    case SCSI_CMD_READFORMATCAPACITIES:           /* 0x23 Vendor-specific (defined in MMC spec) */
+    /*                                                * 0x20-22 Vendor specific */
+
+    case SCSI_CMD_READFORMATCAPACITIES:              /* 0x23 Vend-spec (def. MMC spec) */
       ret = usbmsc_cmdreadformatcapacity(priv, buf);
       break;
- /*                                                * 0x24 Vendor specific */
 
-    case SCSI_CMD_READCAPACITY10:                 /* 0x25 Mandatory */
+    /*                                                * 0x24 Vendor specific */
+
+    case SCSI_CMD_READCAPACITY10:                    /* 0x25 Mandatory */
       ret = usbmsc_cmdreadcapacity10(priv, buf);
       break;
 
- /*                                                * 0x26-27 Vendor specific */
-    case SCSI_CMD_READ10:                         /* 0x28 Mandatory */
+    /*                                                * 0x26-27 Vendor specific */
+
+    case SCSI_CMD_READ10:                            /* 0x28 Mandatory */
       ret = usbmsc_cmdread10(priv);
       break;
 
- /*                                                * 0x29 Vendor specific */
+    /*                                                * 0x29 Vendor specific */
 
-    case SCSI_CMD_WRITE10:                        /* 0x2a Optional */
+    case SCSI_CMD_WRITE10:                           /* 0x2a Optional */
       ret = usbmsc_cmdwrite10(priv);
       break;
 
- /* case SCSI_CMD_SEEK10:                          * 0x2b Obsolete
-  *                                                * 0x2c-2d Vendor specific
-  * case SCSI_CMD_WRITEANDVERIFY:                  * 0x2e Optional */
+    /* case SCSI_CMD_SEEK10:                          * 0x2b Obsolete
+     *                                                * 0x2c-2d Vendor specific
+     * case SCSI_CMD_WRITEANDVERIFY:                  * 0x2e Optional
+     */
 
-    case SCSI_CMD_VERIFY10:                       /* 0x2f Optional, but needed my MS Windows */
+    case SCSI_CMD_VERIFY10:                          /* 0x2f Opt, excpt Windows */
       ret = usbmsc_cmdverify10(priv);
       break;
 
- /* case SCSI_CMD_SEARCHDATAHIGH:                  * 0x30 Obsolete
-  * case SCSI_CMD_SEARCHDATAEQUAL:                 * 0x31 Obsolete
-  * case SCSI_CMD_SEARCHDATALOW:                   * 0x32 Obsolete
-  * case SCSI_CMD_SETLIMITS10:                     * 0x33 Obsolete
-  * case SCSI_CMD_PREFETCH10:                      * 0x34 Optional */
+    /* case SCSI_CMD_SEARCHDATAHIGH:                  * 0x30 Obsolete
+     * case SCSI_CMD_SEARCHDATAEQUAL:                 * 0x31 Obsolete
+     * case SCSI_CMD_SEARCHDATALOW:                   * 0x32 Obsolete
+     * case SCSI_CMD_SETLIMITS10:                     * 0x33 Obsolete
+     * case SCSI_CMD_PREFETCH10:                      * 0x34 Optional
+     */
 
-    case SCSI_CMD_SYNCHCACHE10:                   /* 0x35 Optional */
+    case SCSI_CMD_SYNCHCACHE10:                      /* 0x35 Optional */
       ret = usbmsc_cmdsynchronizecache10(priv);
       break;
 
- /* case SCSI_CMD_LOCKCACHE:                       * 0x36 Obsolete
-  * case SCSI_CMD_READDEFECTDATA10:                * 0x37 Optional
-  * case SCSI_CMD_COMPARE:                         * 0x39 Obsolete
-  * case SCSI_CMD_COPYANDVERIFY:                   * 0x3a Obsolete
-  * case SCSI_CMD_WRITEBUFFER:                     * 0x3b Optional
-  * case SCSI_CMD_READBUFFER:                      * 0x3c Optional
-  * case SCSI_CMD_READLONG10:                      * 0x3e Optional
-  * case SCSI_CMD_WRITELONG10:                     * 0x3f Optional
-  * case SCSI_CMD_CHANGEDEFINITION:                * 0x40 Obsolete
-  * case SCSI_CMD_WRITESAME10:                     * 0x41 Optional
-  * case SCSI_CMD_LOGSELECT:                       * 0x4c Optional
-  * case SCSI_CMD_LOGSENSE:                        * 0x4d Optional
-  * case SCSI_CMD_XDWRITE10:                       * 0x50 Optional
-  * case SCSI_CMD_XPWRITE10:                       * 0x51 Optional
-  * case SCSI_CMD_XDREAD10:                        * 0x52 Optional */
-
-    case SCSI_CMD_MODESELECT10:                   /* 0x55 Optional */
+    /* case SCSI_CMD_LOCKCACHE:                       * 0x36 Obsolete
+     * case SCSI_CMD_READDEFECTDATA10:                * 0x37 Optional
+     * case SCSI_CMD_COMPARE:                         * 0x39 Obsolete
+     * case SCSI_CMD_COPYANDVERIFY:                   * 0x3a Obsolete
+     * case SCSI_CMD_WRITEBUFFER:                     * 0x3b Optional
+     * case SCSI_CMD_READBUFFER:                      * 0x3c Optional
+     * case SCSI_CMD_READLONG10:                      * 0x3e Optional
+     * case SCSI_CMD_WRITELONG10:                     * 0x3f Optional
+     * case SCSI_CMD_CHANGEDEFINITION:                * 0x40 Obsolete
+     * case SCSI_CMD_WRITESAME10:                     * 0x41 Optional
+     * case SCSI_CMD_LOGSELECT:                       * 0x4c Optional
+     * case SCSI_CMD_LOGSENSE:                        * 0x4d Optional
+     * case SCSI_CMD_XDWRITE10:                       * 0x50 Optional
+     * case SCSI_CMD_XPWRITE10:                       * 0x51 Optional
+     * case SCSI_CMD_XDREAD10:                        * 0x52 Optional
+     */
+
+    case SCSI_CMD_MODESELECT10:                      /* 0x55 Optional */
       ret = usbmsc_cmdmodeselect10(priv);
       break;
 
- /* case SCSI_CMD_RESERVE10:                       * 0x56 Obsolete
-  * case SCSI_CMD_RELEASE10:                       * 0x57 Obsolete */
+    /* case SCSI_CMD_RESERVE10:                       * 0x56 Obsolete
+     * case SCSI_CMD_RELEASE10:                       * 0x57 Obsolete
+     */
 
     case SCSI_CMD_MODESENSE10:                    /* 0x5a Optional */
       ret = usbmsc_cmdmodesense10(priv, buf);
       break;
 
- /* case SCSI_CMD_PERSISTENTRESERVEIN:             * 0x5e Optional
-  * case SCSI_CMD_PERSISTENTRESERVEOUT:            * 0x5f Optional
-  * case SCSI_CMD_32:                              * 0x7f Optional
-  * case SCSI_CMD_XDWRITEEXTENDED:                 * 0x80 Obsolete
-  * case SCSI_CMD_REBUILD:                         * 0x81 Obsolete
-  * case SCSI_CMD_REGENERATE:                      * 0x82 Obsolete
-  * case SCSI_CMD_EXTENDEDCOPY:                    * 0x83 Optional
-  * case SCSI_CMD_COPYRESULTS:                     * 0x84 Optional
-  * case SCSI_CMD_ACCESSCONTROLIN:                 * 0x86 Optional
-  * case SCSI_CMD_ACCESSCONTROLOUT:                * 0x87 Optional
-  * case SCSI_CMD_READ16:                          * 0x88 Optional
-  * case SCSI_CMD_WRITE16:                         * 0x8a Optional
-  * case SCSI_CMD_READATTRIBUTE:                   * 0x8c Optional
-  * case SCSI_CMD_WRITEATTRIBUTE:                  * 0x8d Optional
-  * case SCSI_CMD_WRITEANDVERIFY16:                * 0x8e Optional
-  * case SCSI_CMD_SYNCHCACHE16:                    * 0x91 Optional
-  * case SCSI_CMD_LOCKUNLOCKACACHE:                * 0x92 Optional
-  * case SCSI_CMD_WRITESAME16:                     * 0x93 Optional
-  * case SCSI_CMD_READCAPACITY16:                  * 0x9e Optional
-  * case SCSI_CMD_READLONG16:                      * 0x9e Optional
-  * case SCSI_CMD_WRITELONG16                      * 0x9f Optional
-  * case SCSI_CMD_REPORTLUNS:                      * 0xa0 Mandatory, but not implemented
-  * case SCSI_CMD_MAINTENANCEIN:                   * 0xa3 Optional (SCCS==0)
-  * case SCSI_CMD_MAINTENANCEOUT:                  * 0xa4 Optional (SCCS==0)
-  * case SCSI_CMD_MOVEMEDIUM:                      * 0xa5 ?
-  * case SCSI_CMD_MOVEMEDIUMATTACHED:              * 0xa7 Optional (MCHNGR==0) */
+    /* case SCSI_CMD_PERSISTENTRESERVEIN:             * 0x5e Optional
+     * case SCSI_CMD_PERSISTENTRESERVEOUT:            * 0x5f Optional
+     * case SCSI_CMD_32:                              * 0x7f Optional
+     * case SCSI_CMD_XDWRITEEXTENDED:                 * 0x80 Obsolete
+     * case SCSI_CMD_REBUILD:                         * 0x81 Obsolete
+     * case SCSI_CMD_REGENERATE:                      * 0x82 Obsolete
+     * case SCSI_CMD_EXTENDEDCOPY:                    * 0x83 Optional
+     * case SCSI_CMD_COPYRESULTS:                     * 0x84 Optional
+     * case SCSI_CMD_ACCESSCONTROLIN:                 * 0x86 Optional
+     * case SCSI_CMD_ACCESSCONTROLOUT:                * 0x87 Optional
+     * case SCSI_CMD_READ16:                          * 0x88 Optional
+     * case SCSI_CMD_WRITE16:                         * 0x8a Optional
+     * case SCSI_CMD_READATTRIBUTE:                   * 0x8c Optional
+     * case SCSI_CMD_WRITEATTRIBUTE:                  * 0x8d Optional
+     * case SCSI_CMD_WRITEANDVERIFY16:                * 0x8e Optional
+     * case SCSI_CMD_SYNCHCACHE16:                    * 0x91 Optional
+     * case SCSI_CMD_LOCKUNLOCKACACHE:                * 0x92 Optional
+     * case SCSI_CMD_WRITESAME16:                     * 0x93 Optional
+     * case SCSI_CMD_READCAPACITY16:                  * 0x9e Optional
+     * case SCSI_CMD_READLONG16:                      * 0x9e Optional
+     * case SCSI_CMD_WRITELONG16                      * 0x9f Optional
+     * case SCSI_CMD_REPORTLUNS:                      * 0xa0 Mandatory, but no-impl
+     * case SCSI_CMD_MAINTENANCEIN:                   * 0xa3 Optional (SCCS==0)
+     * case SCSI_CMD_MAINTENANCEOUT:                  * 0xa4 Optional (SCCS==0)
+     * case SCSI_CMD_MOVEMEDIUM:                      * 0xa5 ?
+     * case SCSI_CMD_MOVEMEDIUMATTACHED:              * 0xa7 Optional (MCHNGR==0)
+     */
 
     case SCSI_CMD_READ12:                         /* 0xa8 Optional */
       ret = usbmsc_cmdread12(priv);
@@ -1993,27 +2035,26 @@ static int usbmsc_cmdparsestate(FAR struct usbmsc_dev_s *priv)
       ret = usbmsc_cmdwrite12(priv);
       break;
 
- /* case SCSI_CMD_READMEDIASERIALNUMBER:           * 0xab Optional
-  * case SCSI_CMD_WRITEANDVERIFY12:                * 0xae Optional
-  * case SCSI_CMD_VERIFY12:                        * 0xaf Optional
-  * case SCSI_CMD_SETLIMITS12                      * 0xb3 Obsolete
-  * case SCSI_CMD_READELEMENTSTATUS:               * 0xb4 Optional (MCHNGR==0)
-  * case SCSI_CMD_READDEFECTDATA12:                * 0xb7 Optional
-  * case SCSI_CMD_REDUNDANCYGROUPIN:               * 0xba Optional
-  * case SCSI_CMD_REDUNDANCYGROUPOUT:              * 0xbb Optional
-  * case SCSI_CMD_SPAREIN:                         * 0xbc Optional (SCCS==0)
-  * case SCSI_CMD_SPAREOUT:                        * 0xbd Optional (SCCS==0)
-  * case SCSI_CMD_VOLUMESETIN:                     * 0xbe Optional (SCCS==0)
-  * case SCSI_CMD_VOLUMESETOUT:                    * 0xbe Optional (SCCS==0)
-  *                                                * 0xc0-0xff Vendor specific */
+    /* case SCSI_CMD_READMEDIASERIALNUMBER:           * 0xab Optional
+     * case SCSI_CMD_WRITEANDVERIFY12:                * 0xae Optional
+     * case SCSI_CMD_VERIFY12:                        * 0xaf Optional
+     * case SCSI_CMD_SETLIMITS12                      * 0xb3 Obsolete
+     * case SCSI_CMD_READELEMENTSTATUS:               * 0xb4 Optional (MCHNGR==0)
+     * case SCSI_CMD_READDEFECTDATA12:                * 0xb7 Optional
+     * case SCSI_CMD_REDUNDANCYGROUPIN:               * 0xba Optional
+     * case SCSI_CMD_REDUNDANCYGROUPOUT:              * 0xbb Optional
+     * case SCSI_CMD_SPAREIN:                         * 0xbc Optional (SCCS==0)
+     * case SCSI_CMD_SPAREOUT:                        * 0xbd Optional (SCCS==0)
+     * case SCSI_CMD_VOLUMESETIN:                     * 0xbe Optional (SCCS==0)
+     * case SCSI_CMD_VOLUMESETOUT:                    * 0xbe Optional (SCCS==0)
+     *                                                * 0xc0-0xff Vendor specific
+     */
 
     default:
       priv->u.alloclen = 0;
-      if (ret == OK)
-        {
-          priv->lun->sd = SCSI_KCQIR_INVALIDCOMMAND;
-          ret = -EINVAL;
-        }
+      priv->residue = priv->cbwlen;
+      priv->lun->sd = SCSI_KCQIR_INVALIDCOMMAND;
+      ret = -EINVAL;
       break;
     }
 
@@ -2179,7 +2220,7 @@ static int usbmsc_cmdreadstate(FAR struct usbmsc_dev_s *priv)
       src    = &priv->iobuffer[lun->sectorsize - priv->nsectbytes];
       dest   = &req->buf[priv->nreqbytes];
 
-      nbytes = MIN(CONFIG_USBMSC_BULKINREQLEN - priv->nreqbytes, priv->nsectbytes);
+      nbytes = MIN(priv->epbulkin->maxpacket - priv->nreqbytes, priv->nsectbytes);
 
       /* Copy the data from the sector buffer to the USB request and update counts */
 
@@ -2187,15 +2228,16 @@ static int usbmsc_cmdreadstate(FAR struct usbmsc_dev_s *priv)
       priv->nreqbytes  += nbytes;
       priv->nsectbytes -= nbytes;
 
-      /* If (1) the request buffer is full OR (2) this is the final request full of data,
+      /* If (1) the request buffer is full OR (2) this is the final request
+       * full of data,
        * then submit the request
        */
 
-      if (priv->nreqbytes >= CONFIG_USBMSC_BULKINREQLEN ||
+      if (priv->nreqbytes >= priv->epbulkin->maxpacket ||
           (priv->u.xfrlen <= 0 && priv->nsectbytes <= 0))
         {
-          /* Remove the request that we just filled from wrreqlist (we've already checked
-           * that is it not NULL
+          /* Remove the request that we just filled from wrreqlist (we've
+           * already checked that is it not NULL
            */
 
           flags = enter_critical_section();
@@ -2331,7 +2373,8 @@ static int usbmsc_cmdwritestate(FAR struct usbmsc_dev_s *priv)
               nwritten = USBMSC_DRVR_WRITE(lun, priv->iobuffer, priv->sector, 1);
               if (nwritten < 0)
                 {
-                  usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDWRITEWRITEFAIL), -nwritten);
+                  usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDWRITEWRITEFAIL),
+                           -nwritten);
                   lun->sd     = SCSI_KCQME_WRITEFAULTAUTOREALLOCFAILED;
                   lun->sdinfo = priv->sector;
                   goto errout;
@@ -2349,7 +2392,7 @@ static int usbmsc_cmdwritestate(FAR struct usbmsc_dev_s *priv)
        * to get the next read request.
        */
 
-      req->len      = CONFIG_USBMSC_BULKOUTREQLEN;
+      req->len      = priv->epbulkout->maxpacket;
       req->priv     = privreq;
       req->callback = usbmsc_rdcomplete;
 
@@ -2361,7 +2404,7 @@ static int usbmsc_cmdwritestate(FAR struct usbmsc_dev_s *priv)
 
       /* Did the host decide to stop early? */
 
-      if (xfrd != CONFIG_USBMSC_BULKOUTREQLEN)
+      if (xfrd != priv->epbulkout->maxpacket)
         {
           priv->shortpacket = 1;
           goto errout;
@@ -2450,7 +2493,8 @@ static int usbmsc_cmdfinishstate(FAR struct usbmsc_dev_s *priv)
               ret           = EP_SUBMIT(priv->epbulkin, privreq->req);
               if (ret < 0)
                 {
-                  usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDFINISHSUBMIT), (uint16_t)-ret);
+                  usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDFINISHSUBMIT),
+                           (uint16_t)-ret);
                 }
              }
 
@@ -2458,7 +2502,8 @@ static int usbmsc_cmdfinishstate(FAR struct usbmsc_dev_s *priv)
 
           if (priv->residue > 0)
             {
-              usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDFINISHRESIDUE), (uint16_t)priv->residue);
+              usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDFINISHRESIDUE),
+                       (uint16_t)priv->residue);
 
 #ifdef USBMSC_STALL_RACEWAR
               /* (See description of the workaround at the top of the file).
@@ -2488,16 +2533,18 @@ static int usbmsc_cmdfinishstate(FAR struct usbmsc_dev_s *priv)
           flags = enter_critical_section();
           if (priv->shortpacket)
             {
-              usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDFINISHSHORTPKT), (uint16_t)priv->residue);
+              usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDFINISHSHORTPKT),
+                       (uint16_t)priv->residue);
             }
 
           /* Unprocessed incoming data: STALL and cancel requests. */
 
           else
             {
-              usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDFINSHSUBMIT), (uint16_t)priv->residue);
+              usbtrace(TRACE_CLSERROR(USBMSC_TRACEERR_CMDFINSHSUBMIT),
+                       (uint16_t)priv->residue);
               EP_STALL(priv->epbulkout);
-           }
+            }
 
            priv->theventset |= USBMSC_EVENT_ABORTBULKOUT;
            leave_critical_section(flags);
@@ -2723,16 +2770,10 @@ int usbmsc_scsi_main(int argc, char *argv[])
        * drive the state machine.
        */
 
-      if ((eventset & (USBMSC_EVENT_DISCONNECT | USBMSC_EVENT_RESET | USBMSC_EVENT_CFGCHANGE |
-                       USBMSC_EVENT_IFCHANGE | USBMSC_EVENT_ABORTBULKOUT)) != 0)
+      if ((eventset & (USBMSC_EVENT_DISCONNECT | USBMSC_EVENT_RESET |
+                       USBMSC_EVENT_CFGCHANGE | USBMSC_EVENT_IFCHANGE |
+                       USBMSC_EVENT_ABORTBULKOUT)) != 0)
         {
-          /* These events require that the current configuration be reset */
-
-          if ((eventset & USBMSC_EVENT_IFCHANGE) != 0)
-            {
-              usbmsc_resetconfig(priv);
-            }
-
           /* These events require that a new configuration be established */
 
           if ((eventset & (USBMSC_EVENT_CFGCHANGE)) != 0)
@@ -2742,7 +2783,8 @@ int usbmsc_scsi_main(int argc, char *argv[])
 
           /* These events required that we send a deferred EP0 setup response */
 
-          if ((eventset & (USBMSC_EVENT_RESET | USBMSC_EVENT_CFGCHANGE | USBMSC_EVENT_IFCHANGE)) != 0)
+          if ((eventset & (USBMSC_EVENT_RESET | USBMSC_EVENT_CFGCHANGE |
+                           USBMSC_EVENT_IFCHANGE)) != 0)
             {
               usbmsc_deferredresponse(priv, false);
             }