ESP32-S2: Detect EP IN Xfer Timeout

In some rare ocasions (bad cable, noise, etc.) data transfer might timeout and hang the endpoint, unless the interrupt flag is cleared.
This pull request targets to solve that case.
This commit is contained in:
me-no-dev 2020-07-02 13:05:17 +03:00
parent 0c9932440b
commit d493724a7b
1 changed files with 7 additions and 0 deletions

View File

@ -637,6 +637,13 @@ static void handle_epin_ints(void)
USB0.dtknqr4_fifoemptymsk &= ~(1 << n);
}
}
// XFER Timeout
if (USB0.in_ep_reg[n].diepint & USB_D_TIMEOUT0_M) {
// Clear interrupt or enpoint will hang.
USB0.in_ep_reg[n].diepint = USB_D_TIMEOUT0_M;
// Maybe retry?
}
}
}
}