summaryrefslogtreecommitdiff
path: root/src/host
diff options
context:
space:
mode:
authorhathach <[email protected]>2025-12-11 16:22:51 +0700
committerhathach <[email protected]>2025-12-11 16:41:33 +0700
commitb73003745fb18818574baa89367fd618c36ad8b0 (patch)
treeee94a3d610ac420852f62b4caa844215a01c50a0 /src/host
parentef018e364e886852e2789542b5758da6143af614 (diff)
move host hacked bulk mps out of tu_edpt_validate()
Diffstat (limited to 'src/host')
-rw-r--r--src/host/usbh.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/host/usbh.c b/src/host/usbh.c
index 7c4910af1..5b14a15cb 100644
--- a/src/host/usbh.c
+++ b/src/host/usbh.c
@@ -1066,7 +1066,14 @@ static bool usbh_edpt_control_open(uint8_t dev_addr, uint8_t max_packet_size) {
}
bool tuh_edpt_open(uint8_t dev_addr, tusb_desc_endpoint_t const* desc_ep) {
- TU_ASSERT(tu_edpt_validate(desc_ep, tuh_speed_get(dev_addr), true));
+ // HACK: some device incorrectly always report 512 bulk regardless of link speed, overwrite descriptor to force 64
+ if (desc_ep->bmAttributes.xfer == TUSB_XFER_BULK && tu_edpt_packet_size(desc_ep) > 64 &&
+ tuh_speed_get(dev_addr) == TUSB_SPEED_FULL) {
+ TU_LOG1(" WARN: EP max packet size is 512 in fullspeed, force to 64\r\n");
+ tusb_desc_endpoint_t *hacked_ep = (tusb_desc_endpoint_t *)(uintptr_t)desc_ep;
+ hacked_ep->wMaxPacketSize = tu_htole16(64);
+ }
+ TU_ASSERT(tu_edpt_validate(desc_ep, tuh_speed_get(dev_addr)));
return hcd_edpt_open(usbh_get_rhport(dev_addr), dev_addr, desc_ep);
}