diff options
| -rw-r--r-- | port/dwc2/usb_dc_dwc2.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/port/dwc2/usb_dc_dwc2.c b/port/dwc2/usb_dc_dwc2.c index 4de89de1..e789924a 100644 --- a/port/dwc2/usb_dc_dwc2.c +++ b/port/dwc2/usb_dc_dwc2.c @@ -82,15 +82,15 @@ #endif #ifndef CONFIG_USB_DWC2_TX6_FIFO_SIZE -#define CONFIG_USB_DWC2_TX6_FIFO_SIZE (64 / 4) +#define CONFIG_USB_DWC2_TX6_FIFO_SIZE (0 / 4) #endif #ifndef CONFIG_USB_DWC2_TX7_FIFO_SIZE -#define CONFIG_USB_DWC2_TX7_FIFO_SIZE (64 / 4) +#define CONFIG_USB_DWC2_TX7_FIFO_SIZE (0 / 4) #endif #ifndef CONFIG_USB_DWC2_TX8_FIFO_SIZE -#define CONFIG_USB_DWC2_TX8_FIFO_SIZE (64 / 4) +#define CONFIG_USB_DWC2_TX8_FIFO_SIZE (0 / 4) #endif #define USBD_BASE (g_usbdev_bus[0].reg_base) @@ -710,6 +710,17 @@ int usbd_ep_open(uint8_t busid, const struct usb_endpoint_descriptor *ep) USB_OTG_DOEPCTL_USBAEP; } } else { + uint16_t fifo_size; + if (ep_idx == 0) { + fifo_size = (USB_OTG_GLB->DIEPTXF0_HNPTXFSIZ >> 16); + } else { + fifo_size = (USB_OTG_GLB->DIEPTXF[ep_idx - 1U] >> 16); + } + if ((fifo_size * 4) < USB_GET_MAXPACKETSIZE(ep->wMaxPacketSize)) { + USB_LOG_ERR("Ep addr %02x fifo overflow\r\n", ep->bEndpointAddress); + return -2; + } + g_dwc2_udc.in_ep[ep_idx].ep_mps = USB_GET_MAXPACKETSIZE(ep->wMaxPacketSize); g_dwc2_udc.in_ep[ep_idx].ep_type = USB_GET_ENDPOINT_TYPE(ep->bmAttributes); |
