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:03:36 UTC

[incubator-nuttx] 02/21: usb over ethernet working over usb 2.0 hs

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

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

commit 7ffb03a11a57ac3e18377335dc76ea956e3a40d7
Author: Adam Feuer <ad...@starcat.io>
AuthorDate: Wed Jan 8 17:34:24 2020 -0800

    usb over ethernet working over usb 2.0 hs
---
 drivers/usbdev/cdcecm.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/usbdev/cdcecm.c b/drivers/usbdev/cdcecm.c
index 8c0d4f3..b16b18c 100644
--- a/drivers/usbdev/cdcecm.c
+++ b/drivers/usbdev/cdcecm.c
@@ -1299,7 +1299,9 @@ static int cdcecm_setconfig(FAR struct cdcecm_driver_s *self, uint8_t config)
 
   self->epint->priv = self;
 
-  cdcecm_mkepdesc(CDCECM_EP_BULKIN_IDX, &epdesc, &self->devinfo, false);
+  // af
+  bool is_high_speed = (self->usbdev.speed == USB_SPEED_HIGH);
+  cdcecm_mkepdesc(CDCECM_EP_BULKIN_IDX, &epdesc, &self->devinfo, is_high_speed);
   ret = EP_CONFIGURE(self->epbulkin, &epdesc, false);
 
   if (ret < 0)
@@ -1309,7 +1311,8 @@ static int cdcecm_setconfig(FAR struct cdcecm_driver_s *self, uint8_t config)
 
   self->epbulkin->priv = self;
 
-  cdcecm_mkepdesc(CDCECM_EP_BULKOUT_IDX, &epdesc, &self->devinfo, false);
+  // af
+  cdcecm_mkepdesc(CDCECM_EP_BULKOUT_IDX, &epdesc, &self->devinfo, is_high_speed);
   ret = EP_CONFIGURE(self->epbulkout, &epdesc, true);
 
   if (ret < 0)
@@ -1697,11 +1700,19 @@ static int16_t cdcecm_mkcfgdesc(FAR uint8_t *desc,
 
   len += USB_SIZEOF_IFDESC;
 
+  // af
+  #ifdef CONFIG_USBDEV_DUALSPEED
+  bool is_high_speed = USB_SPEED_HIGH;
+  #else
+  bool is_high_speed = USB_SPEED_LOW;
+  #endif
+
   if (desc)
     {
       FAR struct usb_epdesc_s *epdesc = (FAR struct usb_epdesc_s *)desc;
 
-      cdcecm_mkepdesc(CDCECM_EP_BULKIN_IDX, epdesc, devinfo, false);
+      // af
+      cdcecm_mkepdesc(CDCECM_EP_BULKIN_IDX, epdesc, devinfo, is_high_speed);
       desc += USB_SIZEOF_EPDESC;
     }
 
@@ -1711,7 +1722,8 @@ static int16_t cdcecm_mkcfgdesc(FAR uint8_t *desc,
     {
       FAR struct usb_epdesc_s *epdesc = (FAR struct usb_epdesc_s *)desc;
 
-      cdcecm_mkepdesc(CDCECM_EP_BULKOUT_IDX, epdesc, devinfo, false);
+      // af
+      cdcecm_mkepdesc(CDCECM_EP_BULKOUT_IDX, epdesc, devinfo, is_high_speed);
       desc += USB_SIZEOF_EPDESC;
     }