usb: Correct latencies for HID gadgets

This commit is contained in:
CTCaer 2020-11-15 14:37:14 +02:00
parent 604ec4416d
commit d3c318d0c9
2 changed files with 8 additions and 4 deletions

View file

@ -429,7 +429,7 @@ static usb_cfg_hid_descr_t usb_configuration_descriptor_hid_jc =
.endpoint[0].bEndpointAddress = 0x81, // USB_EP_ADDR_BULK_IN. .endpoint[0].bEndpointAddress = 0x81, // USB_EP_ADDR_BULK_IN.
.endpoint[0].bmAttributes = USB_EP_TYPE_INTR, .endpoint[0].bmAttributes = USB_EP_TYPE_INTR,
.endpoint[0].wMaxPacketSize = 0x200, .endpoint[0].wMaxPacketSize = 0x200,
.endpoint[0].bInterval = 4, // 4ms on FS, 8ms on HS. .endpoint[0].bInterval = 4, // 8ms on HS.
/* Endpoint descriptor structure EP1 OUT */ /* Endpoint descriptor structure EP1 OUT */
.endpoint[1].bLength = 7, .endpoint[1].bLength = 7,
@ -437,7 +437,7 @@ static usb_cfg_hid_descr_t usb_configuration_descriptor_hid_jc =
.endpoint[1].bEndpointAddress = 0x01, // USB_EP_ADDR_BULK_OUT. .endpoint[1].bEndpointAddress = 0x01, // USB_EP_ADDR_BULK_OUT.
.endpoint[1].bmAttributes = USB_EP_TYPE_INTR, .endpoint[1].bmAttributes = USB_EP_TYPE_INTR,
.endpoint[1].wMaxPacketSize = 0x200, .endpoint[1].wMaxPacketSize = 0x200,
.endpoint[1].bInterval = 4 // 4ms on FS, 8ms on HS. .endpoint[1].bInterval = 4 // 8ms on HS.
}; };
static u8 usb_vendor_string_descriptor_hid[22] = static u8 usb_vendor_string_descriptor_hid[22] =
@ -498,7 +498,7 @@ static usb_cfg_hid_descr_t usb_configuration_descriptor_hid_touch =
.endpoint[0].bEndpointAddress = 0x81, // USB_EP_ADDR_BULK_IN. .endpoint[0].bEndpointAddress = 0x81, // USB_EP_ADDR_BULK_IN.
.endpoint[0].bmAttributes = USB_EP_TYPE_INTR, .endpoint[0].bmAttributes = USB_EP_TYPE_INTR,
.endpoint[0].wMaxPacketSize = 0x200, .endpoint[0].wMaxPacketSize = 0x200,
.endpoint[0].bInterval = 4, // 4ms on FS, 8ms on HS. .endpoint[0].bInterval = 3, // 4ms on HS.
/* Endpoint descriptor structure EP1 OUT */ /* Endpoint descriptor structure EP1 OUT */
.endpoint[1].bLength = 7, .endpoint[1].bLength = 7,
@ -506,7 +506,7 @@ static usb_cfg_hid_descr_t usb_configuration_descriptor_hid_touch =
.endpoint[1].bEndpointAddress = 0x01, // USB_EP_ADDR_BULK_OUT. .endpoint[1].bEndpointAddress = 0x01, // USB_EP_ADDR_BULK_OUT.
.endpoint[1].bmAttributes = USB_EP_TYPE_INTR, .endpoint[1].bmAttributes = USB_EP_TYPE_INTR,
.endpoint[1].wMaxPacketSize = 0x200, .endpoint[1].wMaxPacketSize = 0x200,
.endpoint[1].bInterval = 4 // 4ms on FS, 8ms on HS. .endpoint[1].bInterval = 3 // 4ms on HS.
}; };
usb_desc_t usb_gadget_ums_descriptors = usb_desc_t usb_gadget_ums_descriptors =

View file

@ -962,11 +962,15 @@ static void _usbd_handle_get_descriptor(bool *transmit_data, void **descriptor,
{ {
tmp->endpoint[0].wMaxPacketSize = 0x200; tmp->endpoint[0].wMaxPacketSize = 0x200;
tmp->endpoint[1].wMaxPacketSize = 0x200; tmp->endpoint[1].wMaxPacketSize = 0x200;
tmp->endpoint[0].bInterval = usbd_otg->gadget == USB_GADGET_HID_GAMEPAD ? 4 : 3; // 8ms : 4ms.
tmp->endpoint[1].bInterval = usbd_otg->gadget == USB_GADGET_HID_GAMEPAD ? 4 : 3; // 8ms : 4ms.
} }
else // Full speed. 64 bytes. else // Full speed. 64 bytes.
{ {
tmp->endpoint[0].wMaxPacketSize = 0x40; tmp->endpoint[0].wMaxPacketSize = 0x40;
tmp->endpoint[1].wMaxPacketSize = 0x40; tmp->endpoint[1].wMaxPacketSize = 0x40;
tmp->endpoint[0].bInterval = usbd_otg->gadget == USB_GADGET_HID_GAMEPAD ? 8 : 4; // 8ms : 4ms.
tmp->endpoint[1].bInterval = usbd_otg->gadget == USB_GADGET_HID_GAMEPAD ? 8 : 4; // 8ms : 4ms.
} }
} }
*descriptor = usbd_otg->desc->cfg; *descriptor = usbd_otg->desc->cfg;