Fix hcd_edpt_clear_stall
This commit is contained in:
@@ -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);
|
uint16_t volatile *ctr = addr_to_pipectr(dev_addr, ep_addr);
|
||||||
TU_ASSERT(ctr);
|
TU_ASSERT(ctr);
|
||||||
|
|
||||||
|
const uint32_t pid = *ctr & 0x3;
|
||||||
|
if (pid & 2) {
|
||||||
|
*ctr = pid & 2;
|
||||||
|
*ctr = 0;
|
||||||
|
}
|
||||||
*ctr = USB_PIPECTR_SQCLR;
|
*ctr = USB_PIPECTR_SQCLR;
|
||||||
unsigned const epn = tu_edpt_number(ep_addr);
|
unsigned const epn = tu_edpt_number(ep_addr);
|
||||||
if (!epn) return true;
|
if (!epn) return true;
|
||||||
|
|
||||||
if (tu_edpt_dir(ep_addr)) { /* IN */
|
if (!tu_edpt_dir(ep_addr)) { /* OUT */
|
||||||
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 {
|
|
||||||
*ctr = USB_PIPECTR_PID_BUF;
|
*ctr = USB_PIPECTR_PID_BUF;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user