diff --git a/os/hal/platforms/STM32/OTGv1/usb_lld.c b/os/hal/platforms/STM32/OTGv1/usb_lld.c index f6287a49c..4af75ccd2 100644 --- a/os/hal/platforms/STM32/OTGv1/usb_lld.c +++ b/os/hal/platforms/STM32/OTGv1/usb_lld.c @@ -128,11 +128,15 @@ static void usb_lld_wakeup_pump(USBDriver *usbp) { static void otg_core_reset(USBDriver *usbp) { stm32_otg_t *otgp = usbp->otg; + halPolledDelay(32); + /* Core reset and delay of at least 3 PHY cycles.*/ otgp->GRSTCTL = GRSTCTL_CSRST; while ((otgp->GRSTCTL & GRSTCTL_CSRST) != 0) ; + halPolledDelay(12); + /* Wait AHB idle condition.*/ while ((otgp->GRSTCTL & GRSTCTL_AHBIDL) == 0) ; diff --git a/readme.txt b/readme.txt index 4317f462f..a37766a09 100644 --- a/readme.txt +++ b/readme.txt @@ -89,6 +89,8 @@ ***************************************************************************** *** 2.7.0 *** +- FIX: Fixed timing issue in the STM32 OTGv1 USB driver (bug #436)(backported + to 2.6.2). - FIX: Fixed possible unalignment in GCC Cortex-M scatter files (bug #430) (backported to 2.6.2 and 2.4.6). - FIX: Fixed PAL driver documentation error (bug #427)(backported to 2.6.1