1
0
Эх сурвалжийг харах

add: add DP disconnect call to USB disable subroutine for F103 driver.

Dmitry 8 жил өмнө
parent
commit
a59ca5daff
1 өөрчлөгдсөн 18 нэмэгдсэн , 16 устгасан
  1. 18 16
      src/usb_32v3.c

+ 18 - 16
src/usb_32v3.c

@@ -148,22 +148,6 @@ bool ep_isstalled(uint8_t ep) {
     }
 }
 
-void enable(bool enable) {
-    if (enable) {
-        RCC->APB1ENR  |= RCC_APB1ENR_USBEN;
-        RCC->APB1RSTR |= RCC_APB1RSTR_USBRST;
-        RCC->APB1RSTR &= ~RCC_APB1RSTR_USBRST;
-        USB->CNTR = USB_CNTR_CTRM | USB_CNTR_RESETM | USB_CNTR_ERRM |
-#if !defined(USBD_SOF_DISABLED)
-        USB_CNTR_SOFM |
-#endif
-        USB_CNTR_SUSPM | USB_CNTR_WKUPM;
-    } else if (RCC->APB1ENR & RCC_APB1ENR_USBEN) {
-        RCC->APB1RSTR |= RCC_APB1RSTR_USBRST;
-        RCC->APB1ENR &= ~RCC_APB1ENR_USBEN;
-    }
-}
-
 void reset (void) {
     USB->CNTR |= USB_CNTR_FRES;
     USB->CNTR &= ~USB_CNTR_FRES;
@@ -201,6 +185,24 @@ uint8_t connect(bool connect) {
     return usbd_lane_unk;
 }
 
+void enable(bool enable) {
+    if (enable) {
+        RCC->APB1ENR  |= RCC_APB1ENR_USBEN;
+        RCC->APB1RSTR |= RCC_APB1RSTR_USBRST;
+        RCC->APB1RSTR &= ~RCC_APB1RSTR_USBRST;
+        USB->CNTR = USB_CNTR_CTRM | USB_CNTR_RESETM | USB_CNTR_ERRM |
+#if !defined(USBD_SOF_DISABLED)
+        USB_CNTR_SOFM |
+#endif
+        USB_CNTR_SUSPM | USB_CNTR_WKUPM;
+    } else if (RCC->APB1ENR & RCC_APB1ENR_USBEN) {
+        RCC->APB1RSTR |= RCC_APB1RSTR_USBRST;
+        RCC->APB1ENR &= ~RCC_APB1ENR_USBEN;
+        /* disconnecting DP if configured */
+        connect(0);
+    }
+}
+
 void setaddr (uint8_t addr) {
     USB->DADDR = USB_DADDR_EF | addr;
 }