summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakimisu <[email protected]>2023-05-26 20:37:23 +0800
committersakimisu <[email protected]>2023-05-26 20:37:23 +0800
commitb59c1c6613be1b67e55dc4b7566874dd375f1b03 (patch)
tree62a55b7955e69498d43fbeaac898ad89480916c7
parent1c6f062bc9308c8bc0aea1b7a71101a6c80ed401 (diff)
check if dwc2 supports dma
-rw-r--r--port/dwc2/usb_dc_dwc2.c6
-rw-r--r--port/dwc2/usb_dwc2_reg.h8
-rw-r--r--port/dwc2/usb_hc_dwc2.c10
3 files changed, 19 insertions, 5 deletions
diff --git a/port/dwc2/usb_dc_dwc2.c b/port/dwc2/usb_dc_dwc2.c
index f05207c4..a03b470b 100644
--- a/port/dwc2/usb_dc_dwc2.c
+++ b/port/dwc2/usb_dc_dwc2.c
@@ -619,6 +619,12 @@ int usb_dc_init(void)
USB_OTG_GLB->GINTMSK = USB_OTG_GINTMSK_USBRST | USB_OTG_GINTMSK_ENUMDNEM |
USB_OTG_GINTMSK_OEPINT | USB_OTG_GINTMSK_IEPINT;
#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");
+ while (1) {
+ }
+ }
+
USB_OTG_GLB->GAHBCFG |= USB_OTG_GAHBCFG_HBSTLEN_2;
USB_OTG_GLB->GAHBCFG |= USB_OTG_GAHBCFG_DMAEN;
#else
diff --git a/port/dwc2/usb_dwc2_reg.h b/port/dwc2/usb_dwc2_reg.h
index aeb0a55f..e911b504 100644
--- a/port/dwc2/usb_dwc2_reg.h
+++ b/port/dwc2/usb_dwc2_reg.h
@@ -22,11 +22,11 @@ typedef struct
uint32_t Reserved30[2]; /*!< Reserved 030h */
__IO uint32_t GCCFG; /*!< General Purpose IO Register 038h */
__IO uint32_t CID; /*!< User ID Register 03Ch */
- __IO uint32_t GSNPSID; /* USB_OTG core ID 040h*/
- __IO uint32_t GHWCFG1; /* User HW config1 044h*/
- __IO uint32_t GHWCFG2; /* User HW config2 048h*/
+ __IO uint32_t GSNPSID; /*!< USB_OTG core ID 040h */
+ __IO uint32_t GHWCFG1; /*!< User HW config1 044h */
+ __IO uint32_t GHWCFG2; /*!< User HW config2 048h */
__IO uint32_t GHWCFG3; /*!< User HW config3 04Ch */
- uint32_t Reserved6; /*!< Reserved 050h */
+ __IO uint32_t GHWCFG4; /*!< User HW config4 050h */
__IO uint32_t GLPMCFG; /*!< LPM Register 054h */
__IO uint32_t GPWRDN; /*!< Power Down Register 058h */
__IO uint32_t GDFIFOCFG; /*!< DFIFO Software Config Register 05Ch */
diff --git a/port/dwc2/usb_hc_dwc2.c b/port/dwc2/usb_hc_dwc2.c
index 7c51eaa7..94d39d2b 100644
--- a/port/dwc2/usb_hc_dwc2.c
+++ b/port/dwc2/usb_hc_dwc2.c
@@ -465,7 +465,15 @@ int usb_hc_init(void)
usb_hc_low_level_init();
- if ((USB_OTG_GLB->CID & (0x1U << 8)) == 0U) {
+ USB_LOG_INFO("========== DWC2 params ==========\r\n");
+ 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);
+ USB_LOG_INFO("GHWCFG2:%08x\r\n",USB_OTG_GLB->GHWCFG2);
+ USB_LOG_INFO("GHWCFG3:%08x\r\n",USB_OTG_GLB->GHWCFG3);
+ USB_LOG_INFO("GHWCFG4:%08x\r\n",USB_OTG_GLB->GHWCFG4);
+
+ if ((USB_OTG_GLB->GHWCFG2 & (0x3U << 3)) == 0U) {
USB_LOG_ERR("This dwc2 version does not support dma, so stop working\r\n");
while (1) {
}