Merge pull request #1291 from kasjer/kasjer/da1469x-fix-resume
da1469x: fix resume
This commit is contained in:
commit
d6fb1859a4
|
@ -733,6 +733,15 @@ static void handle_alt_ev(void)
|
||||||
set_nfsr(NFSR_NODE_OPERATIONAL);
|
set_nfsr(NFSR_NODE_OPERATIONAL);
|
||||||
USB->USB_ALTMSK_REG = USB_USB_ALTMSK_REG_USB_M_RESET_Msk |
|
USB->USB_ALTMSK_REG = USB_USB_ALTMSK_REG_USB_M_RESET_Msk |
|
||||||
USB_USB_ALTMSK_REG_USB_M_SD3_Msk;
|
USB_USB_ALTMSK_REG_USB_M_SD3_Msk;
|
||||||
|
// Re-enable reception of endpoint with pending transfer
|
||||||
|
for (int epnum = 1; epnum <= 3; ++epnum)
|
||||||
|
{
|
||||||
|
xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, TUSB_DIR_OUT);
|
||||||
|
if (xfer->total_len > xfer->transferred)
|
||||||
|
{
|
||||||
|
start_rx_packet(xfer);
|
||||||
|
}
|
||||||
|
}
|
||||||
dcd_event_bus_signal(0, DCD_EVENT_RESUME, true);
|
dcd_event_bus_signal(0, DCD_EVENT_RESUME, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -935,13 +944,13 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||||
if (dir == TUSB_DIR_OUT)
|
if (dir == TUSB_DIR_OUT)
|
||||||
{
|
{
|
||||||
regs->epc_out = epnum | USB_USB_EPC1_REG_USB_EP_EN_Msk | iso_mask;
|
regs->epc_out = epnum | USB_USB_EPC1_REG_USB_EP_EN_Msk | iso_mask;
|
||||||
USB->USB_RXMSK_REG |= 0x101 << (epnum - 1);
|
USB->USB_RXMSK_REG |= 0x11 << (epnum - 1);
|
||||||
REG_SET_BIT(USB_MAMSK_REG, USB_M_RX_EV);
|
REG_SET_BIT(USB_MAMSK_REG, USB_M_RX_EV);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
regs->epc_in = epnum | USB_USB_EPC1_REG_USB_EP_EN_Msk | iso_mask;
|
regs->epc_in = epnum | USB_USB_EPC1_REG_USB_EP_EN_Msk | iso_mask;
|
||||||
USB->USB_TXMSK_REG |= 0x101 << (epnum - 1);
|
USB->USB_TXMSK_REG |= 0x11 << (epnum - 1);
|
||||||
REG_SET_BIT(USB_MAMSK_REG, USB_M_TX_EV);
|
REG_SET_BIT(USB_MAMSK_REG, USB_M_TX_EV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -982,7 +991,7 @@ void dcd_edpt_close(uint8_t rhport, uint8_t ep_addr)
|
||||||
{
|
{
|
||||||
regs->rxc = USB_USB_RXC1_REG_USB_FLUSH_Msk;
|
regs->rxc = USB_USB_RXC1_REG_USB_FLUSH_Msk;
|
||||||
regs->epc_out = 0;
|
regs->epc_out = 0;
|
||||||
USB->USB_RXMSK_REG &= ~(0x101 << (epnum - 1));
|
USB->USB_RXMSK_REG &= ~(0x11 << (epnum - 1));
|
||||||
// Release DMA if needed
|
// Release DMA if needed
|
||||||
if (_dcd.dma_ep[TUSB_DIR_OUT] == epnum)
|
if (_dcd.dma_ep[TUSB_DIR_OUT] == epnum)
|
||||||
{
|
{
|
||||||
|
@ -994,7 +1003,7 @@ void dcd_edpt_close(uint8_t rhport, uint8_t ep_addr)
|
||||||
{
|
{
|
||||||
regs->txc = USB_USB_TXC1_REG_USB_FLUSH_Msk;
|
regs->txc = USB_USB_TXC1_REG_USB_FLUSH_Msk;
|
||||||
regs->epc_in = 0;
|
regs->epc_in = 0;
|
||||||
USB->USB_TXMSK_REG &= ~(0x101 << (epnum - 1));
|
USB->USB_TXMSK_REG &= ~(0x11 << (epnum - 1));
|
||||||
// Release DMA if needed
|
// Release DMA if needed
|
||||||
if (_dcd.dma_ep[TUSB_DIR_IN] == epnum)
|
if (_dcd.dma_ep[TUSB_DIR_IN] == epnum)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue