diff options
| author | HJD <[email protected]> | 2022-10-25 22:26:55 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2022-10-25 23:09:20 +0800 |
| commit | 19ddeb98ad813a0025a59f24601b8cdc427811e1 (patch) | |
| tree | 2ae6e89961a1ff62a3a8dbf4e1f00e1523a6bd39 | |
| parent | db4018117e8b91db17af23cbccfc1f9922e2389d (diff) | |
Handle endpoints when reset, disable endpoints once
| -rw-r--r-- | port/dwc2/usb_dc_dwc2.c | 43 |
1 files changed, 10 insertions, 33 deletions
diff --git a/port/dwc2/usb_dc_dwc2.c b/port/dwc2/usb_dc_dwc2.c index 3a685cf7..6f0a4120 100644 --- a/port/dwc2/usb_dc_dwc2.c +++ b/port/dwc2/usb_dc_dwc2.c @@ -600,35 +600,6 @@ int usb_dc_init(void) ret = dwc2_flush_txfifo(0x10U); ret = dwc2_flush_rxfifo(); - for (uint8_t i = 0U; i < USB_NUM_BIDIR_ENDPOINTS; i++) { - if ((USB_OTG_INEP(i)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA) { - if (i == 0U) { - USB_OTG_INEP(i)->DIEPCTL = USB_OTG_DIEPCTL_SNAK; - } else { - USB_OTG_INEP(i)->DIEPCTL = USB_OTG_DIEPCTL_EPDIS | USB_OTG_DIEPCTL_SNAK; - } - } else { - USB_OTG_INEP(i)->DIEPCTL = 0U; - } - - USB_OTG_INEP(i)->DIEPTSIZ = 0U; - USB_OTG_INEP(i)->DIEPINT = 0xFB7FU; - } - for (uint8_t i = 0U; i < USB_NUM_BIDIR_ENDPOINTS; i++) { - if ((USB_OTG_OUTEP(i)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) { - if (i == 0U) { - USB_OTG_OUTEP(i)->DOEPCTL = USB_OTG_DOEPCTL_SNAK; - } else { - USB_OTG_OUTEP(i)->DOEPCTL = USB_OTG_DOEPCTL_EPDIS | USB_OTG_DOEPCTL_SNAK; - } - } else { - USB_OTG_OUTEP(i)->DOEPCTL = 0U; - } - - USB_OTG_OUTEP(i)->DOEPTSIZ = 0U; - USB_OTG_OUTEP(i)->DOEPINT = 0xFB7FU; - } - /* Clear all pending Device Interrupts */ USB_OTG_DEV->DIEPMSK = 0U; USB_OTG_DEV->DOEPMSK = 0U; @@ -1097,13 +1068,19 @@ void USBD_IRQHandler(void) dwc2_flush_rxfifo(); for (uint8_t i = 0U; i < USB_NUM_BIDIR_ENDPOINTS; i++) { + if (i == 0U) { + USB_OTG_INEP(i)->DIEPCTL = USB_OTG_DIEPCTL_SNAK; + USB_OTG_OUTEP(i)->DOEPCTL = USB_OTG_DOEPCTL_SNAK; + } else { + USB_OTG_INEP(i)->DIEPCTL = USB_OTG_DIEPCTL_EPDIS | USB_OTG_DIEPCTL_SNAK; + USB_OTG_OUTEP(i)->DOEPCTL = USB_OTG_DOEPCTL_EPDIS | USB_OTG_DOEPCTL_SNAK; + } + USB_OTG_INEP(i)->DIEPTSIZ = 0U; USB_OTG_INEP(i)->DIEPINT = 0xFB7FU; - USB_OTG_INEP(i)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL; - USB_OTG_INEP(i)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK; + USB_OTG_OUTEP(i)->DOEPTSIZ = 0U; USB_OTG_OUTEP(i)->DOEPINT = 0xFB7FU; - USB_OTG_OUTEP(i)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL; - USB_OTG_OUTEP(i)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK; } + USB_OTG_DEV->DAINTMSK |= 0x10001U; USB_OTG_DEV->DOEPMSK = USB_OTG_DOEPMSK_STUPM | |
