summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2023-12-29 20:59:50 +0800
committersakumisu <[email protected]>2023-12-30 14:39:26 +0800
commit65b2de960bf4b1c4666b43a8a805670c1cb9fe2b (patch)
treea53a74edac04e3b9e90b10e2070b389492c0ff44
parent019c9cff6e3f054cdcf0a6373c829fdbdc747506 (diff)
update gccfg for stm32h7/f7
-rw-r--r--port/dwc2/usb_dc_dwc2.c19
-rw-r--r--port/dwc2/usb_glue_st.c16
2 files changed, 24 insertions, 11 deletions
diff --git a/port/dwc2/usb_dc_dwc2.c b/port/dwc2/usb_dc_dwc2.c
index a40d6350..7820b1f8 100644
--- a/port/dwc2/usb_dc_dwc2.c
+++ b/port/dwc2/usb_dc_dwc2.c
@@ -575,7 +575,7 @@ int usb_dc_init(void)
while (1) {
}
}
-
+
USB_OTG_DEV->DCTL |= USB_OTG_DCTL_SDIS;
USB_OTG_GLB->GAHBCFG &= ~USB_OTG_GAHBCFG_GINT;
@@ -599,19 +599,16 @@ int usb_dc_init(void)
/* Restart the Phy Clock */
USB_OTG_PCGCCTL = 0U;
- /* Device mode configuration */
- USB_OTG_DEV->DCFG |= DCFG_FRAME_INTERVAL_80;
-
-#if CONFIG_USB_DWC2_PORT == HS_PORT
+ /* Device speed configuration */
+ USB_OTG_DEV->DCFG &= ~USB_OTG_DCFG_DSPD;
#if defined(CONFIG_USB_HS)
- /* Set Core speed to High speed mode */
USB_OTG_DEV->DCFG |= USB_OTG_SPEED_HIGH;
#else
-
- USB_OTG_DEV->DCFG |= USB_OTG_SPEED_HIGH_IN_FULL;
-#endif
-#else
- USB_OTG_DEV->DCFG |= USB_OTG_SPEED_FULL;
+ if (hsphy_type == 0) {
+ USB_OTG_DEV->DCFG |= USB_OTG_SPEED_FULL;
+ } else {
+ USB_OTG_DEV->DCFG |= USB_OTG_SPEED_HIGH_IN_FULL;
+ }
#endif
ret = dwc2_flush_txfifo(0x10U);
diff --git a/port/dwc2/usb_glue_st.c b/port/dwc2/usb_glue_st.c
index cac4f447..d4a199f6 100644
--- a/port/dwc2/usb_glue_st.c
+++ b/port/dwc2/usb_glue_st.c
@@ -16,8 +16,16 @@ uint32_t usbd_get_dwc2_gccfg_conf(void)
#ifdef CONFIG_USB_HS
return 0;
#else
+#if __has_include("stm32h7xx.h") || __has_include("stm32f7xx.h") || __has_include("stm32l4xx.h")
+#define USB_OTG_GLB ((USB_OTG_GlobalTypeDef *)(USBD_BASE))
+ /* B-peripheral session valid override enable */
+ USB_OTG_GLB->GOTGCTL |= USB_OTG_GOTGCTL_BVALOEN;
+ USB_OTG_GLB->GOTGCTL |= USB_OTG_GOTGCTL_BVALOVAL;
+ return (1 << 16);
+#else
return ((1 << 16) | (1 << 21));
#endif
+#endif
}
uint32_t usbh_get_dwc2_gccfg_conf(void)
@@ -25,6 +33,14 @@ uint32_t usbh_get_dwc2_gccfg_conf(void)
#ifdef CONFIG_USB_DWC2_ULPI_PHY
return 0;
#else
+#if __has_include("stm32h7xx.h") || __has_include("stm32f7xx.h") || __has_include("stm32l4xx.h")
+#define USB_OTG_GLB ((USB_OTG_GlobalTypeDef *)(USBD_BASE))
+ /* B-peripheral session valid override enable */
+ USB_OTG_GLB->GOTGCTL &= ~USB_OTG_GOTGCTL_BVALOEN;
+ USB_OTG_GLB->GOTGCTL &= ~USB_OTG_GOTGCTL_BVALOVAL;
+ return (1 << 16);
+#else
return ((1 << 16) | (1 << 21));
#endif
+#endif
} \ No newline at end of file