summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--port/dwc2/usb_dc_dwc2.c7
-rw-r--r--port/dwc2/usb_hc_dwc2.c7
2 files changed, 12 insertions, 2 deletions
diff --git a/port/dwc2/usb_dc_dwc2.c b/port/dwc2/usb_dc_dwc2.c
index 098ef350..a5de3f29 100644
--- a/port/dwc2/usb_dc_dwc2.c
+++ b/port/dwc2/usb_dc_dwc2.c
@@ -172,7 +172,12 @@ static inline void dwc2_set_mode(uint8_t busid, uint8_t mode)
USB_OTG_GLB->GUSBCFG |= USB_OTG_GUSBCFG_FDMOD;
}
- usbd_dwc2_delay_ms(50);
+ while (1) {
+ if ((USB_OTG_GLB->GINTSTS & 0x1U) == USB_OTG_MODE_DEVICE) {
+ break;
+ }
+ usbd_dwc2_delay_ms(10);
+ }
}
static inline int dwc2_flush_rxfifo(uint8_t busid)
diff --git a/port/dwc2/usb_hc_dwc2.c b/port/dwc2/usb_hc_dwc2.c
index 8794593b..681a6d75 100644
--- a/port/dwc2/usb_hc_dwc2.c
+++ b/port/dwc2/usb_hc_dwc2.c
@@ -135,7 +135,12 @@ static inline void dwc2_set_mode(struct usbh_bus *bus, uint8_t mode)
USB_OTG_GLB->GUSBCFG |= USB_OTG_GUSBCFG_FDMOD;
}
- usb_osal_msleep(50);
+ while (1) {
+ if ((USB_OTG_GLB->GINTSTS & 0x1U) == USB_OTG_MODE_HOST) {
+ break;
+ }
+ usb_osal_msleep(10);
+ }
}
static inline int dwc2_flush_rxfifo(struct usbh_bus *bus)