diff options
| -rw-r--r-- | common/usb_def.h | 9 | ||||
| -rw-r--r-- | core/usbd_core.c | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/common/usb_def.h b/common/usb_def.h index ae5a468f..e84a189a 100644 --- a/common/usb_def.h +++ b/common/usb_def.h @@ -224,6 +224,15 @@ #define USB_ENDPOINT_MAX_ADJUSTABLE (1 << 7) +/* wMaxPacketSize in Endpoint Descriptor */ +#define USB_MAXPACKETSIZE_SHIFT 0 +#define USB_MAXPACKETSIZE_MASK (0x400 << USB_MAXPACKETSIZE_SHIFT) +#define USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_SHIFT 11 +#define USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_NONE (0 << USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_SHIFT) +#define USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_ONE (1 << USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_SHIFT) +#define USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_TWO (2 << USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_SHIFT) +#define USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_MASK (3 << USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_SHIFT) + /* bDevCapabilityType in Device Capability Descriptor */ #define USB_DEVICE_CAPABILITY_WIRELESS_USB 1 #define USB_DEVICE_CAPABILITY_USB_2_0_EXTENSION 2 diff --git a/core/usbd_core.c b/core/usbd_core.c index 2e2a6cc8..c5e0a5bd 100644 --- a/core/usbd_core.c +++ b/core/usbd_core.c @@ -196,7 +196,7 @@ static bool usbd_set_endpoint(const struct usb_endpoint_descriptor *ep_desc) struct usbd_endpoint_cfg ep_cfg; ep_cfg.ep_addr = ep_desc->bEndpointAddress; - ep_cfg.ep_mps = ep_desc->wMaxPacketSize; + ep_cfg.ep_mps = ep_desc->wMaxPacketSize & USB_MAXPACKETSIZE_MASK; ep_cfg.ep_type = ep_desc->bmAttributes & USBD_EP_TYPE_MASK; USB_LOG_INFO("Open endpoint:0x%x type:%u mps:%u\r\n", |
