Fix hcd_edpt_clear_stall

This commit is contained in:
kkitayam 2021-12-27 22:55:28 +09:00
parent 745607357b
commit 2b8b8a3a97
1 changed files with 7 additions and 9 deletions

View File

@ -765,19 +765,17 @@ bool hcd_edpt_clear_stall(uint8_t dev_addr, uint8_t ep_addr)
{
uint16_t volatile *ctr = addr_to_pipectr(dev_addr, ep_addr);
TU_ASSERT(ctr);
const uint32_t pid = *ctr & 0x3;
if (pid & 2) {
*ctr = pid & 2;
*ctr = 0;
}
*ctr = USB_PIPECTR_SQCLR;
unsigned const epn = tu_edpt_number(ep_addr);
if (!epn) return true;
if (tu_edpt_dir(ep_addr)) { /* IN */
const unsigned num = _hcd.ep[dev_addr - 1][1][epn - 1];
hcd_int_disable(0);
USB0.PIPESEL.WORD = num;
if (USB0.PIPECFG.BIT.TYPE != 1) {
*ctr = USB_PIPECTR_PID_BUF;
}
hcd_int_enable(0);
} else {
if (!tu_edpt_dir(ep_addr)) { /* OUT */
*ctr = USB_PIPECTR_PID_BUF;
}
return true;