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