diff options
| author | sakumisu <[email protected]> | 2025-08-05 21:45:54 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2025-08-05 21:46:01 +0800 |
| commit | 2081360f2ccd2c3eb54ff0a8cae2ec21881ade3a (patch) | |
| tree | 43d15bdc9b18b3aa6eeaf853312f0f6a58b6be81 | |
| parent | 8cf12c1958f7526ec967b8df0412444a92f1838a (diff) | |
update(port/dwc2): add mode check
Signed-off-by: sakumisu <[email protected]>
| -rw-r--r-- | port/dwc2/usb_dc_dwc2.c | 7 | ||||
| -rw-r--r-- | port/dwc2/usb_hc_dwc2.c | 7 |
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) |
