From 158b6f661fa7603858990c3c0238777076998ab0 Mon Sep 17 00:00:00 2001 From: Robert Fisk Date: Thu, 19 Nov 2015 09:16:09 +1300 Subject: [PATCH] Revert mods to USB host driver, was causing occasional infinite stalls --- .../Src/stm32f4xx_hal_hcd.c | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c index 1c26e4d..6168603 100644 --- a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c +++ b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c @@ -866,8 +866,8 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) } else if((hhcd->hc[chnum].state == HC_XACTERR) || - (hhcd->hc[chnum].state == HC_DATATGLERR) || - (hhcd->hc[chnum].state == HC_NAK)) + (hhcd->hc[chnum].state == HC_DATATGLERR)) //|| +// (hhcd->hc[chnum].state == HC_NAK)) { if(hhcd->hc[chnum].ErrCnt++ > 3) { @@ -900,20 +900,20 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) else if ((USBx_HC(chnum)->HCINT) & USB_OTG_HCINT_NAK) { hhcd->hc[chnum].ErrCnt = 0; -// if(hhcd->hc[chnum].ep_type == EP_TYPE_INTR) -// { - __HAL_HCD_UNMASK_HALT_HC_INT(chnum); - USB_HC_Halt(hhcd->Instance, chnum); -// } -// else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL)|| -// (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) -// { -// /* re-activate the channel */ -// tmpreg = USBx_HC(chnum)->HCCHAR; -// tmpreg &= ~USB_OTG_HCCHAR_CHDIS; -// tmpreg |= USB_OTG_HCCHAR_CHENA; -// USBx_HC(chnum)->HCCHAR = tmpreg; -// } + if(hhcd->hc[chnum].ep_type == EP_TYPE_INTR) + { + __HAL_HCD_UNMASK_HALT_HC_INT(chnum); + USB_HC_Halt(hhcd->Instance, chnum); + } + else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL)|| + (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) + { + /* re-activate the channel */ + tmpreg = USBx_HC(chnum)->HCCHAR; + tmpreg &= ~USB_OTG_HCCHAR_CHDIS; + tmpreg |= USB_OTG_HCCHAR_CHENA; + USBx_HC(chnum)->HCCHAR = tmpreg; + } hhcd->hc[chnum].state = HC_NAK; __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); }