summaryrefslogtreecommitdiff
path: root/src/portable
diff options
context:
space:
mode:
authorGordon McNab <[email protected]>2022-11-30 12:16:52 +0000
committerGitHub <[email protected]>2022-11-30 12:16:52 +0000
commitaceab1dcf3a57d2e789efc0781685beb33e94754 (patch)
tree877481517624c02d8da49d2260a40bde1555a8b9 /src/portable
parent1437ad1dfb5b48169f680253707821bd9751fc65 (diff)
parent2ae6a4d519cdb1d8df7a4c7b9a979b8ad3713e88 (diff)
Merge branch 'hathach:master' into port-ft90x
Diffstat (limited to 'src/portable')
-rw-r--r--src/portable/raspberrypi/rp2040/rp2040_usb.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/portable/raspberrypi/rp2040/rp2040_usb.c b/src/portable/raspberrypi/rp2040/rp2040_usb.c
index 25c013bd2..d7895175e 100644
--- a/src/portable/raspberrypi/rp2040/rp2040_usb.c
+++ b/src/portable/raspberrypi/rp2040/rp2040_usb.c
@@ -155,7 +155,9 @@ static void __tusb_irq_path_func(_hw_endpoint_start_next_buffer)(struct hw_endpo
// For now: skip double buffered for Device mode, OUT endpoint since
// host could send < 64 bytes and cause short packet on buffer0
// NOTE this could happen to Host mode IN endpoint
- bool const force_single = !(usb_hw->main_ctrl & USB_MAIN_CTRL_HOST_NDEVICE_BITS) && !tu_edpt_dir(ep->ep_addr);
+ // Also, Host mode interrupt endpoint hardware is only single buffered
+ bool const force_single = (!(usb_hw->main_ctrl & USB_MAIN_CTRL_HOST_NDEVICE_BITS) && !tu_edpt_dir(ep->ep_addr)) ||
+ ((usb_hw->main_ctrl & USB_MAIN_CTRL_HOST_NDEVICE_BITS) && tu_edpt_number(ep->ep_addr) != 0);
if(ep->remaining_len && !force_single)
{