diff options
| author | hathach <[email protected]> | 2025-12-11 16:22:51 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2025-12-11 16:41:33 +0700 |
| commit | b73003745fb18818574baa89367fd618c36ad8b0 (patch) | |
| tree | ee94a3d610ac420852f62b4caa844215a01c50a0 /src/host | |
| parent | ef018e364e886852e2789542b5758da6143af614 (diff) | |
move host hacked bulk mps out of tu_edpt_validate()
Diffstat (limited to 'src/host')
| -rw-r--r-- | src/host/usbh.c | 9 |
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); } |
