Răsfoiți Sursa

Merge pull request #1755 from rppicomidi/fix_1721

Fix RP2040 Issue 1721
Ha Thach 3 ani în urmă
părinte
comite
2ae6a4d519
1 a modificat fișierele cu 3 adăugiri și 1 ștergeri
  1. 3 1
      src/portable/raspberrypi/rp2040/rp2040_usb.c

+ 3 - 1
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)
   {