summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2024-03-20 21:53:22 +0800
committersakumisu <[email protected]>2024-03-20 21:53:22 +0800
commitb2af686e670350eec97f5deb15f5ffc209510f72 (patch)
treec1d1baf582801e3aaa580ffd4f34ce409abb76a5
parent15b97f33486c01f9c095b2b4e108a4704371a7a8 (diff)
dwc2:change dma incr to 16, flush fifo after fifo config
-rw-r--r--port/dwc2/usb_dc_dwc2.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/port/dwc2/usb_dc_dwc2.c b/port/dwc2/usb_dc_dwc2.c
index 7111056d..4784e62e 100644
--- a/port/dwc2/usb_dc_dwc2.c
+++ b/port/dwc2/usb_dc_dwc2.c
@@ -546,7 +546,6 @@ int usb_dc_init(uint8_t busid)
endpoints = ((USB_OTG_GLB->GHWCFG2 & (0x0f << 10)) >> 10) + 1;
USB_LOG_INFO("========== dwc2 udc params ==========\r\n");
- USB_LOG_INFO("GCCFG:%08x\r\n", USB_OTG_GLB->GCCFG);
USB_LOG_INFO("CID:%08x\r\n", USB_OTG_GLB->CID);
USB_LOG_INFO("GSNPSID:%08x\r\n", USB_OTG_GLB->GSNPSID);
USB_LOG_INFO("GHWCFG1:%08x\r\n", USB_OTG_GLB->GHWCFG1);
@@ -605,9 +604,6 @@ int usb_dc_init(uint8_t busid)
}
#endif
- ret = dwc2_flush_txfifo(0x10U);
- ret = dwc2_flush_rxfifo();
-
/* Clear all pending Device Interrupts */
USB_OTG_DEV->DIEPMSK = 0U;
USB_OTG_DEV->DOEPMSK = 0U;
@@ -624,15 +620,14 @@ int usb_dc_init(uint8_t busid)
USB_OTG_GINTMSK_IISOIXFRM | USB_OTG_GINTMSK_PXFRM_IISOOXFRM;
#ifdef CONFIG_USB_DWC2_DMA_ENABLE
- if ((USB_OTG_GLB->GHWCFG2 & (0x3U << 3)) == 0U) {
- USB_LOG_ERR("This dwc2 version does not support dma, so stop working\r\n");
+ if (((USB_OTG_GLB->GHWCFG2 & (0x3U << 3)) >> 3) != 2) {
+ USB_LOG_ERR("This dwc2 version does not support dma mode, so stop working\r\n");
while (1) {
}
}
USB_OTG_DEV->DCFG &= ~USB_OTG_DCFG_DESCDMA;
- USB_OTG_GLB->GAHBCFG |= (USB_OTG_GAHBCFG_DMAEN | USB_OTG_GAHBCFG_HBSTLEN_2);
-
+ USB_OTG_GLB->GAHBCFG |= (USB_OTG_GAHBCFG_DMAEN | USB_OTG_GAHBCFG_HBSTLEN_4);
#else
USB_OTG_GLB->GINTMSK |= USB_OTG_GINTMSK_RXFLVLM;
#endif
@@ -664,6 +659,9 @@ int usb_dc_init(uint8_t busid)
#if CONFIG_USBDEV_EP_NUM > 8
dwc2_set_txfifo(8, CONFIG_USB_DWC2_TX8_FIFO_SIZE / 4);
#endif
+ ret = dwc2_flush_txfifo(0x10U);
+ ret = dwc2_flush_rxfifo();
+
USB_OTG_GLB->GAHBCFG |= USB_OTG_GAHBCFG_GINT;
USB_OTG_DEV->DCTL &= ~USB_OTG_DCTL_SDIS;
@@ -672,6 +670,9 @@ int usb_dc_init(uint8_t busid)
int usb_dc_deinit(uint8_t busid)
{
+ USB_OTG_GLB->GAHBCFG |= USB_OTG_GAHBCFG_GINT;
+ USB_OTG_DEV->DCTL |= USB_OTG_DCTL_SDIS;
+
/* Clear Pending interrupt */
for (uint8_t i = 0U; i < 15U; i++) {
USB_OTG_INEP(i)->DIEPINT = 0xFB7FU;
@@ -687,8 +688,6 @@ int usb_dc_deinit(uint8_t busid)
dwc2_flush_txfifo(0x10U);
dwc2_flush_rxfifo();
- USB_OTG_DEV->DCTL |= USB_OTG_DCTL_SDIS;
-
usb_dc_low_level_deinit();
return 0;
}