fixed EP0 control handling

This commit is contained in:
IngHK
2024-03-30 14:11:02 +01:00
parent 998090d1a7
commit 818c64efec

View File

@@ -828,6 +828,10 @@ static void handle_xfer_done(uint8_t rhport, bool in_isr) {
// putchar('0' + ep->ep_num); // putchar('0' + ep->ep_num);
// putchar('0' + ep->xfer_attemp); // putchar('0' + ep->xfer_attemp);
#endif #endif
if (ep_num == 0) {
// NAK on control, retry immediately
hxfr_write(rhport, _hcd_data.hxfr, in_isr);
} else {
#if NAK_RETRY_HANDLING #if NAK_RETRY_HANDLING
ep->retry_pending = 1; ep->retry_pending = 1;
ep->xfer_pending = 0; ep->xfer_pending = 0;
@@ -840,10 +844,6 @@ static void handle_xfer_done(uint8_t rhport, bool in_isr) {
atomic_flag_clear(&_hcd_data.busy); atomic_flag_clear(&_hcd_data.busy);
} }
#else #else
if (ep_num == 0) {
// NAK on control, retry immediately
hxfr_write(rhport, _hcd_data.hxfr, in_isr);
}else {
// NAK on non-control, find next pending to switch // NAK on non-control, find next pending to switch
max3421_ep_t *next_ep = find_next_pending_ep(ep); max3421_ep_t *next_ep = find_next_pending_ep(ep);
@@ -856,8 +856,8 @@ static void handle_xfer_done(uint8_t rhport, bool in_isr) {
} else { } else {
TU_ASSERT(false,); TU_ASSERT(false,);
} }
}
#endif #endif
}
return; return;
case HRSL_BAD_REQ: case HRSL_BAD_REQ: