summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhierophect <hierophect@gmail.com>2019-12-17 12:55:22 -0500
committerGitHub <noreply@github.com>2019-12-17 12:55:22 -0500
commit409b5ffe9e82a95e8a820920af211c4fb3480d67 (patch)
treec7cf6525012265276253bd75af5512b77f856c49
parentd44a758a2d9066dfb369ccdf1f6ed82e0b6e3c13 (diff)
parentebc21144b8dc98dde7daf3f3832bdb33a5d8fc7d (diff)
Merge pull request #1 from hathach/hierophect-update-tusb
stm32 explicitily enable/disable vbus sense, fix warning
-rw-r--r--ports/stm32f4/supervisor/usb.c37
1 files changed, 24 insertions, 13 deletions
diff --git a/ports/stm32f4/supervisor/usb.c b/ports/stm32f4/supervisor/usb.c
index 6e9b233a4..23fff1a36 100644
--- a/ports/stm32f4/supervisor/usb.c
+++ b/ports/stm32f4/supervisor/usb.c
@@ -36,6 +36,29 @@
#include "common-hal/microcontroller/Pin.h"
+STATIC void init_usb_vbus_sense(void) {
+
+#ifdef BOARD_NO_VBUS
+ // Disable VBUS sensing
+ #ifdef USB_OTG_GCCFG_VBDEN
+ USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_VBDEN;
+ #else
+ USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_NOVBUSSENS;
+ USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_VBUSBSEN;
+ USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_VBUSASEN;
+ #endif
+#else
+ // Enable VBUS hardware sensing
+ #ifdef USB_OTG_GCCFG_VBDEN
+ USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_VBDEN;
+ #else
+ USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_NOVBUSSENS;
+ USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_VBUSBSEN; // B Device sense
+ #endif
+#endif
+}
+
+
void init_usb_hardware(void) {
//TODO: if future chips overload this with options, move to peripherals management.
@@ -82,20 +105,8 @@ void init_usb_hardware(void) {
never_reset_pin_number(0, 8);
#endif
-#ifdef BOARD_NO_VBUS
- disable_usb_vbus();
-#endif
-
/* Peripheral clock enable */
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();
-}
-STATIC void disable_usb_vbus(void) {
-#ifdef USB_OTG_GCCFG_VBDEN
- USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_VBDEN;
-#else
- USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_NOVBUSSENS;
- USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_VBUSBSEN;
- USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_VBUSASEN;
-#endif
+ init_usb_vbus_sense();
}