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) { }