From 89a0515d7d694bd77a93d5cb05d2755872016741 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sat, 11 Jun 2022 08:08:33 +0000 Subject: [PATCH] Fixing an issue on IN ISOC errors handling. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15651 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c b/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c index 126172599..cddfbf8d2 100644 --- a/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c +++ b/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c @@ -478,20 +478,17 @@ static void otg_isoc_in_failed_handler(USBDriver *usbp) { for (ep = 0; ep <= usbp->otgparams->num_endpoints; ep++) { if (((otgp->ie[ep].DIEPCTL & DIEPCTL_EPTYP_MASK) == DIEPCTL_EPTYP_ISO) && ((otgp->ie[ep].DIEPCTL & DIEPCTL_EPENA) != 0)) { - /* Endpoint enabled -> ISOC IN transfer failed */ - /* Disable endpoint */ + /* Endpoint enabled -> ISOC IN transfer failed.*/ + /* Disable endpoint.*/ otgp->ie[ep].DIEPCTL |= (DIEPCTL_EPDIS | DIEPCTL_SNAK); while (otgp->ie[ep].DIEPCTL & DIEPCTL_EPENA) ; - /* Flush FIFO */ + /* Flush FIFO.*/ otg_txfifo_flush(usbp, ep); - /* Prepare data for next frame */ + /* Prepare data for next frame.*/ _usb_isr_invoke_in_cb(usbp, ep); - - /* TX FIFO empty or emptying.*/ - otg_txfifo_handler(usbp, ep); } } }