Lines Matching refs:hhcd
79 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
80 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
81 static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd);
82 static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd);
110 HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd) in HAL_HCD_Init() argument
113 if (hhcd == NULL) in HAL_HCD_Init()
119 assert_param(IS_HCD_ALL_INSTANCE(hhcd->Instance)); in HAL_HCD_Init()
121 if (hhcd->State == HAL_HCD_STATE_RESET) in HAL_HCD_Init()
124 hhcd->Lock = HAL_UNLOCKED; in HAL_HCD_Init()
127 hhcd->SOFCallback = HAL_HCD_SOF_Callback; in HAL_HCD_Init()
128 hhcd->ConnectCallback = HAL_HCD_Connect_Callback; in HAL_HCD_Init()
129 hhcd->DisconnectCallback = HAL_HCD_Disconnect_Callback; in HAL_HCD_Init()
130 hhcd->PortEnabledCallback = HAL_HCD_PortEnabled_Callback; in HAL_HCD_Init()
131 hhcd->PortDisabledCallback = HAL_HCD_PortDisabled_Callback; in HAL_HCD_Init()
132 hhcd->HC_NotifyURBChangeCallback = HAL_HCD_HC_NotifyURBChange_Callback; in HAL_HCD_Init()
134 if (hhcd->MspInitCallback == NULL) in HAL_HCD_Init()
136 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_Init()
140 hhcd->MspInitCallback(hhcd); in HAL_HCD_Init()
143 HAL_HCD_MspInit(hhcd); in HAL_HCD_Init()
147 hhcd->State = HAL_HCD_STATE_BUSY; in HAL_HCD_Init()
150 __HAL_HCD_DISABLE(hhcd); in HAL_HCD_Init()
153 if (USB_CoreInit(hhcd->Instance, hhcd->Init) != HAL_OK) in HAL_HCD_Init()
155 hhcd->State = HAL_HCD_STATE_ERROR; in HAL_HCD_Init()
160 if (USB_SetCurrentMode(hhcd->Instance, USB_HOST_MODE) != HAL_OK) in HAL_HCD_Init()
162 hhcd->State = HAL_HCD_STATE_ERROR; in HAL_HCD_Init()
167 if (USB_HostInit(hhcd->Instance, hhcd->Init) != HAL_OK) in HAL_HCD_Init()
169 hhcd->State = HAL_HCD_STATE_ERROR; in HAL_HCD_Init()
173 hhcd->State = HAL_HCD_STATE_READY; in HAL_HCD_Init()
202 HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, uint8_t ch_num, uint8_t epnum, in HAL_HCD_HC_Init() argument
209 __HAL_LOCK(hhcd); in HAL_HCD_HC_Init()
210 hhcd->hc[ch_num].do_ping = 0U; in HAL_HCD_HC_Init()
211 hhcd->hc[ch_num].dev_addr = dev_address; in HAL_HCD_HC_Init()
212 hhcd->hc[ch_num].ch_num = ch_num; in HAL_HCD_HC_Init()
213 hhcd->hc[ch_num].ep_type = ep_type; in HAL_HCD_HC_Init()
214 hhcd->hc[ch_num].ep_num = epnum & 0x7FU; in HAL_HCD_HC_Init()
216 (void)HAL_HCD_HC_ClearHubInfo(hhcd, ch_num); in HAL_HCD_HC_Init()
220 hhcd->hc[ch_num].ep_is_in = 1U; in HAL_HCD_HC_Init()
224 hhcd->hc[ch_num].ep_is_in = 0U; in HAL_HCD_HC_Init()
227 HostCoreSpeed = USB_GetHostSpeed(hhcd->Instance); in HAL_HCD_HC_Init()
242 hhcd->hc[ch_num].speed = speed; in HAL_HCD_HC_Init()
243 hhcd->hc[ch_num].max_packet = (uint16_t)HCcharMps; in HAL_HCD_HC_Init()
245 status = USB_HC_Init(hhcd->Instance, ch_num, epnum, in HAL_HCD_HC_Init()
248 __HAL_UNLOCK(hhcd); in HAL_HCD_HC_Init()
260 HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num) in HAL_HCD_HC_Halt() argument
264 __HAL_LOCK(hhcd); in HAL_HCD_HC_Halt()
265 (void)USB_HC_Halt(hhcd->Instance, ch_num); in HAL_HCD_HC_Halt()
266 __HAL_UNLOCK(hhcd); in HAL_HCD_HC_Halt()
276 HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_DeInit() argument
279 if (hhcd == NULL) in HAL_HCD_DeInit()
284 hhcd->State = HAL_HCD_STATE_BUSY; in HAL_HCD_DeInit()
287 if (hhcd->MspDeInitCallback == NULL) in HAL_HCD_DeInit()
289 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; /* Legacy weak MspDeInit */ in HAL_HCD_DeInit()
293 hhcd->MspDeInitCallback(hhcd); in HAL_HCD_DeInit()
296 HAL_HCD_MspDeInit(hhcd); in HAL_HCD_DeInit()
299 __HAL_HCD_DISABLE(hhcd); in HAL_HCD_DeInit()
301 hhcd->State = HAL_HCD_STATE_RESET; in HAL_HCD_DeInit()
311 __weak void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_MspInit() argument
314 UNUSED(hhcd); in HAL_HCD_MspInit()
326 __weak void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_MspDeInit() argument
329 UNUSED(hhcd); in HAL_HCD_MspDeInit()
378 HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd, in HAL_HCD_HC_SubmitRequest() argument
387 hhcd->hc[ch_num].ep_is_in = direction; in HAL_HCD_HC_SubmitRequest()
388 hhcd->hc[ch_num].ep_type = ep_type; in HAL_HCD_HC_SubmitRequest()
392 hhcd->hc[ch_num].data_pid = HC_PID_SETUP; in HAL_HCD_HC_SubmitRequest()
393 hhcd->hc[ch_num].do_ping = do_ping; in HAL_HCD_HC_SubmitRequest()
397 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
411 hhcd->hc[ch_num].toggle_out = 1U; in HAL_HCD_HC_SubmitRequest()
415 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
418 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
423 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
428 if (hhcd->hc[ch_num].do_ssplit == 1U) in HAL_HCD_HC_SubmitRequest()
430 if (hhcd->hc[ch_num].toggle_in == 0U) in HAL_HCD_HC_SubmitRequest()
432 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
436 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
447 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
450 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
455 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
460 if (hhcd->hc[ch_num].toggle_in == 0U) in HAL_HCD_HC_SubmitRequest()
462 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
466 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
475 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
478 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
483 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
488 if (hhcd->hc[ch_num].toggle_in == 0U) in HAL_HCD_HC_SubmitRequest()
490 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
494 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
500 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
507 hhcd->hc[ch_num].xfer_buff = pbuff; in HAL_HCD_HC_SubmitRequest()
508 hhcd->hc[ch_num].xfer_len = length; in HAL_HCD_HC_SubmitRequest()
509 hhcd->hc[ch_num].urb_state = URB_IDLE; in HAL_HCD_HC_SubmitRequest()
510 hhcd->hc[ch_num].xfer_count = 0U; in HAL_HCD_HC_SubmitRequest()
511 hhcd->hc[ch_num].ch_num = ch_num; in HAL_HCD_HC_SubmitRequest()
512 hhcd->hc[ch_num].state = HC_IDLE; in HAL_HCD_HC_SubmitRequest()
514 return USB_HC_StartXfer(hhcd->Instance, &hhcd->hc[ch_num], (uint8_t)hhcd->Init.dma_enable); in HAL_HCD_HC_SubmitRequest()
522 void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd) in HAL_HCD_IRQHandler() argument
524 USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HAL_HCD_IRQHandler()
530 if (USB_GetMode(hhcd->Instance) == USB_OTG_MODE_HOST) in HAL_HCD_IRQHandler()
533 if (__HAL_HCD_IS_INVALID_INTERRUPT(hhcd)) in HAL_HCD_IRQHandler()
538 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) in HAL_HCD_IRQHandler()
541 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); in HAL_HCD_IRQHandler()
544 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR)) in HAL_HCD_IRQHandler()
547 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR); in HAL_HCD_IRQHandler()
550 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE)) in HAL_HCD_IRQHandler()
553 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE); in HAL_HCD_IRQHandler()
556 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_MMIS)) in HAL_HCD_IRQHandler()
559 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_MMIS); in HAL_HCD_IRQHandler()
563 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT)) in HAL_HCD_IRQHandler()
565 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT); in HAL_HCD_IRQHandler()
573 if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) in HAL_HCD_IRQHandler()
576 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); in HAL_HCD_IRQHandler()
581 hhcd->DisconnectCallback(hhcd); in HAL_HCD_IRQHandler()
583 HAL_HCD_Disconnect_Callback(hhcd); in HAL_HCD_IRQHandler()
589 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HPRTINT)) in HAL_HCD_IRQHandler()
591 HCD_Port_IRQHandler(hhcd); in HAL_HCD_IRQHandler()
595 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_SOF)) in HAL_HCD_IRQHandler()
598 hhcd->SOFCallback(hhcd); in HAL_HCD_IRQHandler()
600 HAL_HCD_SOF_Callback(hhcd); in HAL_HCD_IRQHandler()
603 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_SOF); in HAL_HCD_IRQHandler()
607 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HCINT)) in HAL_HCD_IRQHandler()
609 interrupt = USB_HC_ReadInterrupt(hhcd->Instance); in HAL_HCD_IRQHandler()
610 for (i = 0U; i < hhcd->Init.Host_channels; i++) in HAL_HCD_IRQHandler()
616 HCD_HC_IN_IRQHandler(hhcd, (uint8_t)i); in HAL_HCD_IRQHandler()
620 HCD_HC_OUT_IRQHandler(hhcd, (uint8_t)i); in HAL_HCD_IRQHandler()
624 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_HCINT); in HAL_HCD_IRQHandler()
628 if ((__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_RXFLVL)) != 0U) in HAL_HCD_IRQHandler()
630 USB_MASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_HCD_IRQHandler()
632 HCD_RXQLVL_IRQHandler(hhcd); in HAL_HCD_IRQHandler()
634 USB_UNMASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_HCD_IRQHandler()
645 __weak void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_SOF_Callback() argument
648 UNUSED(hhcd); in HAL_HCD_SOF_Callback()
660 __weak void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_Connect_Callback() argument
663 UNUSED(hhcd); in HAL_HCD_Connect_Callback()
675 __weak void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_Disconnect_Callback() argument
678 UNUSED(hhcd); in HAL_HCD_Disconnect_Callback()
690 __weak void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_PortEnabled_Callback() argument
693 UNUSED(hhcd); in HAL_HCD_PortEnabled_Callback()
705 __weak void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_PortDisabled_Callback() argument
708 UNUSED(hhcd); in HAL_HCD_PortDisabled_Callback()
730 __weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStat… in HAL_HCD_HC_NotifyURBChange_Callback() argument
733 UNUSED(hhcd); in HAL_HCD_HC_NotifyURBChange_Callback()
759 HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd, in HAL_HCD_RegisterCallback() argument
768 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
772 __HAL_LOCK(hhcd); in HAL_HCD_RegisterCallback()
774 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_RegisterCallback()
779 hhcd->SOFCallback = pCallback; in HAL_HCD_RegisterCallback()
783 hhcd->ConnectCallback = pCallback; in HAL_HCD_RegisterCallback()
787 hhcd->DisconnectCallback = pCallback; in HAL_HCD_RegisterCallback()
791 hhcd->PortEnabledCallback = pCallback; in HAL_HCD_RegisterCallback()
795 hhcd->PortDisabledCallback = pCallback; in HAL_HCD_RegisterCallback()
799 hhcd->MspInitCallback = pCallback; in HAL_HCD_RegisterCallback()
803 hhcd->MspDeInitCallback = pCallback; in HAL_HCD_RegisterCallback()
808 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
814 else if (hhcd->State == HAL_HCD_STATE_RESET) in HAL_HCD_RegisterCallback()
819 hhcd->MspInitCallback = pCallback; in HAL_HCD_RegisterCallback()
823 hhcd->MspDeInitCallback = pCallback; in HAL_HCD_RegisterCallback()
828 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
837 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
843 __HAL_UNLOCK(hhcd); in HAL_HCD_RegisterCallback()
862 HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd, HAL_HCD_CallbackIDTypeDef Cal… in HAL_HCD_UnRegisterCallback() argument
867 __HAL_LOCK(hhcd); in HAL_HCD_UnRegisterCallback()
870 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_UnRegisterCallback()
875 hhcd->SOFCallback = HAL_HCD_SOF_Callback; in HAL_HCD_UnRegisterCallback()
879 hhcd->ConnectCallback = HAL_HCD_Connect_Callback; in HAL_HCD_UnRegisterCallback()
883 hhcd->DisconnectCallback = HAL_HCD_Disconnect_Callback; in HAL_HCD_UnRegisterCallback()
887 hhcd->PortEnabledCallback = HAL_HCD_PortEnabled_Callback; in HAL_HCD_UnRegisterCallback()
891 hhcd->PortDisabledCallback = HAL_HCD_PortDisabled_Callback; in HAL_HCD_UnRegisterCallback()
895 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_UnRegisterCallback()
899 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; in HAL_HCD_UnRegisterCallback()
904 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
911 else if (hhcd->State == HAL_HCD_STATE_RESET) in HAL_HCD_UnRegisterCallback()
916 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_UnRegisterCallback()
920 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; in HAL_HCD_UnRegisterCallback()
925 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
935 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
942 __HAL_UNLOCK(hhcd); in HAL_HCD_UnRegisterCallback()
953 HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd, in HAL_HCD_RegisterHC_NotifyURBChangeCallback() argument
961 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
967 __HAL_LOCK(hhcd); in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
969 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
971 hhcd->HC_NotifyURBChangeCallback = pCallback; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
976 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
983 __HAL_UNLOCK(hhcd); in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
995 HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd) in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback() argument
1000 __HAL_LOCK(hhcd); in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1002 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1004 …hhcd->HC_NotifyURBChangeCallback = HAL_HCD_HC_NotifyURBChange_Callback; /* Legacy weak DataOutStag… in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1009 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1016 __HAL_UNLOCK(hhcd); in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1046 HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd) in HAL_HCD_Start() argument
1048 __HAL_LOCK(hhcd); in HAL_HCD_Start()
1050 (void)USB_DriveVbus(hhcd->Instance, 1U); in HAL_HCD_Start()
1053 __HAL_HCD_ENABLE(hhcd); in HAL_HCD_Start()
1054 __HAL_UNLOCK(hhcd); in HAL_HCD_Start()
1065 HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd) in HAL_HCD_Stop() argument
1067 __HAL_LOCK(hhcd); in HAL_HCD_Stop()
1068 (void)USB_StopHost(hhcd->Instance); in HAL_HCD_Stop()
1069 __HAL_UNLOCK(hhcd); in HAL_HCD_Stop()
1079 HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd) in HAL_HCD_ResetPort() argument
1081 return (USB_ResetPort(hhcd->Instance)); in HAL_HCD_ResetPort()
1108 HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef const *hhcd) in HAL_HCD_GetState() argument
1110 return hhcd->State; in HAL_HCD_GetState()
1127 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
1129 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
1140 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
1142 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
1162 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
1164 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
1172 uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd) in HAL_HCD_GetCurrentFrame() argument
1174 return (USB_GetCurrentFrame(hhcd->Instance)); in HAL_HCD_GetCurrentFrame()
1182 uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd) in HAL_HCD_GetCurrentSpeed() argument
1184 return (USB_GetHostSpeed(hhcd->Instance)); in HAL_HCD_GetCurrentSpeed()
1196 HAL_StatusTypeDef HAL_HCD_HC_SetHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num, in HAL_HCD_HC_SetHubInfo() argument
1199 uint32_t HostCoreSpeed = USB_GetHostSpeed(hhcd->Instance); in HAL_HCD_HC_SetHubInfo()
1202 …if ((hhcd->hc[ch_num].speed != HCD_DEVICE_SPEED_HIGH) && (HostCoreSpeed == HPRT0_PRTSPD_HIGH_SPEED… in HAL_HCD_HC_SetHubInfo()
1204 hhcd->hc[ch_num].do_ssplit = 1U; in HAL_HCD_HC_SetHubInfo()
1206 if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) && (hhcd->hc[ch_num].ep_is_in != 0U)) in HAL_HCD_HC_SetHubInfo()
1208 hhcd->hc[ch_num].toggle_in = 1U; in HAL_HCD_HC_SetHubInfo()
1212 hhcd->hc[ch_num].hub_addr = addr; in HAL_HCD_HC_SetHubInfo()
1213 hhcd->hc[ch_num].hub_port_nbr = PortNbr; in HAL_HCD_HC_SetHubInfo()
1226 HAL_StatusTypeDef HAL_HCD_HC_ClearHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num) in HAL_HCD_HC_ClearHubInfo() argument
1228 hhcd->hc[ch_num].do_ssplit = 0U; in HAL_HCD_HC_ClearHubInfo()
1229 hhcd->hc[ch_num].do_csplit = 0U; in HAL_HCD_HC_ClearHubInfo()
1230 hhcd->hc[ch_num].hub_addr = 0U; in HAL_HCD_HC_ClearHubInfo()
1231 hhcd->hc[ch_num].hub_port_nbr = 0U; in HAL_HCD_HC_ClearHubInfo()
1253 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
1255 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_HC_IN_IRQHandler()
1259 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_IN_IRQHandler()
1262 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1263 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1265 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) in HCD_HC_IN_IRQHandler()
1268 hhcd->hc[chnum].state = HC_BBLERR; in HCD_HC_IN_IRQHandler()
1269 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1271 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_IN_IRQHandler()
1274 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_IN_IRQHandler()
1275 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1277 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_IN_IRQHandler()
1280 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_IN_IRQHandler()
1281 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1283 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_IN_IRQHandler()
1286 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1287 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1294 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_IN_IRQHandler()
1296 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1299 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_IN_IRQHandler()
1304 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1306 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1310 if (hhcd->Init.dma_enable != 0U) in HCD_HC_IN_IRQHandler()
1312 …hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].XferSize - (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_X… in HCD_HC_IN_IRQHandler()
1315 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_IN_IRQHandler()
1316 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1319 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1320 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1322 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1325 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || in HCD_HC_IN_IRQHandler()
1326 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) in HCD_HC_IN_IRQHandler()
1329 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1332 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1334 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1342 if (hhcd->Init.dma_enable == 1U) in HCD_HC_IN_IRQHandler()
1344 …if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet)… in HCD_HC_IN_IRQHandler()
1346 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1351 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1354 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_IN_IRQHandler()
1358 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1360 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_IN_IRQHandler()
1361 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_IN_IRQHandler()
1363 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1366 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_IN_IRQHandler()
1370 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_IN_IRQHandler()
1372 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1373 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1375 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_IN_IRQHandler()
1377 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1378 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_IN_IRQHandler()
1380 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_IN_IRQHandler()
1381 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_IN_IRQHandler()
1383 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1384 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1385 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1387 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1389 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1391 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1392 hhcd->hc[chnum].ep_ss_schedule = 0U; in HCD_HC_IN_IRQHandler()
1396 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1400 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1402 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1403 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1413 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_IN_IRQHandler()
1415 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1417 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1419 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1421 hhcd->hc[chnum].NyetErrCnt++; in HCD_HC_IN_IRQHandler()
1422 if (hhcd->hc[chnum].NyetErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1424 hhcd->hc[chnum].NyetErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1425 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1427 if (hhcd->hc[chnum].ErrCnt < 3U) in HCD_HC_IN_IRQHandler()
1429 hhcd->hc[chnum].ep_ss_schedule = 1U; in HCD_HC_IN_IRQHandler()
1432 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1436 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1441 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1444 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1445 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1455 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_IN_IRQHandler()
1457 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1459 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1461 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1468 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1469 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1479 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_IN_IRQHandler()
1481 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1482 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1484 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1485 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1494 else if (hhcd->hc[chnum].state == HC_BBLERR) in HCD_HC_IN_IRQHandler()
1496 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1497 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1498 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1502 if (hhcd->hc[chnum].state == HC_HALTED) in HCD_HC_IN_IRQHandler()
1509 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1511 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1514 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_IN_IRQHandler()
1517 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_IN_IRQHandler()
1519 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_IN_IRQHandler()
1521 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1524 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1526 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_IN_IRQHandler()
1528 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1530 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1531 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1532 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1534 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1535 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1537 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1539 if ((hhcd->Init.dma_enable == 0U) || (hhcd->hc[chnum].do_csplit == 1U)) in HCD_HC_IN_IRQHandler()
1541 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1542 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1550 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1552 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1572 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
1574 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_HC_OUT_IRQHandler()
1579 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_OUT_IRQHandler()
1582 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1583 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1585 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_OUT_IRQHandler()
1589 if (hhcd->hc[chnum].do_ping == 1U) in HCD_HC_OUT_IRQHandler()
1591 hhcd->hc[chnum].do_ping = 0U; in HCD_HC_OUT_IRQHandler()
1592 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1593 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1594 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1597 if ((hhcd->hc[chnum].do_ssplit == 1U) && (hhcd->hc[chnum].do_csplit == 0U)) in HCD_HC_OUT_IRQHandler()
1599 if (hhcd->hc[chnum].ep_type != EP_TYPE_ISOC) in HCD_HC_OUT_IRQHandler()
1601 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_OUT_IRQHandler()
1604 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1605 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1608 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1611 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_OUT_IRQHandler()
1614 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1616 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_OUT_IRQHandler()
1618 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1621 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1623 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1627 if (hhcd->hc[chnum].do_csplit != 0U) in HCD_HC_OUT_IRQHandler()
1629 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1634 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_OUT_IRQHandler()
1635 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1637 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1639 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_OUT_IRQHandler()
1641 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_OUT_IRQHandler()
1643 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1646 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1647 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1650 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_OUT_IRQHandler()
1653 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_OUT_IRQHandler()
1654 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1656 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_OUT_IRQHandler()
1658 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1659 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_OUT_IRQHandler()
1661 if (hhcd->hc[chnum].do_ping == 0U) in HCD_HC_OUT_IRQHandler()
1663 if (hhcd->hc[chnum].speed == HCD_DEVICE_SPEED_HIGH) in HCD_HC_OUT_IRQHandler()
1665 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1669 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1672 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_OUT_IRQHandler()
1674 if (hhcd->Init.dma_enable == 0U) in HCD_HC_OUT_IRQHandler()
1676 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1677 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1681 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1682 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1684 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1685 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1688 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1690 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1695 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1706 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_OUT_IRQHandler()
1708 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_OUT_IRQHandler()
1709 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1712 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_OUT_IRQHandler()
1716 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_OUT_IRQHandler()
1718 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1719 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_OUT_IRQHandler()
1721 if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || in HCD_HC_OUT_IRQHandler()
1722 (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) in HCD_HC_OUT_IRQHandler()
1724 if (hhcd->Init.dma_enable == 0U) in HCD_HC_OUT_IRQHandler()
1726 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1729 if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) in HCD_HC_OUT_IRQHandler()
1731 …num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_p… in HCD_HC_OUT_IRQHandler()
1735 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1740 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_OUT_IRQHandler()
1742 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1744 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1746 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1749 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_OUT_IRQHandler()
1751 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1752 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1754 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1756 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1760 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_OUT_IRQHandler()
1762 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1763 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1765 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_OUT_IRQHandler()
1767 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1768 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_OUT_IRQHandler()
1770 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_OUT_IRQHandler()
1771 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_OUT_IRQHandler()
1773 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1774 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1775 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1777 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1778 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1782 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1797 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1799 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1813 static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd) in HCD_RXQLVL_IRQHandler() argument
1815 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_RXQLVL_IRQHandler()
1824 GrxstspReg = hhcd->Instance->GRXSTSP; in HCD_RXQLVL_IRQHandler()
1833 if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) in HCD_RXQLVL_IRQHandler()
1835 if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) in HCD_RXQLVL_IRQHandler()
1837 (void)USB_ReadPacket(hhcd->Instance, in HCD_RXQLVL_IRQHandler()
1838 hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt); in HCD_RXQLVL_IRQHandler()
1841 hhcd->hc[chnum].xfer_buff += pktcnt; in HCD_RXQLVL_IRQHandler()
1842 hhcd->hc[chnum].xfer_count += pktcnt; in HCD_RXQLVL_IRQHandler()
1847 if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) in HCD_RXQLVL_IRQHandler()
1854 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_RXQLVL_IRQHandler()
1859 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_RXQLVL_IRQHandler()
1879 static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd) in HCD_Port_IRQHandler() argument
1881 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_Port_IRQHandler()
1899 hhcd->ConnectCallback(hhcd); in HCD_Port_IRQHandler()
1901 HAL_HCD_Connect_Callback(hhcd); in HCD_Port_IRQHandler()
1914 if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) in HCD_Port_IRQHandler()
1918 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_6_MHZ); in HCD_Port_IRQHandler()
1922 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); in HCD_Port_IRQHandler()
1927 if (hhcd->Init.speed == HCD_SPEED_FULL) in HCD_Port_IRQHandler()
1933 hhcd->PortEnabledCallback(hhcd); in HCD_Port_IRQHandler()
1935 HAL_HCD_PortEnabled_Callback(hhcd); in HCD_Port_IRQHandler()
1942 hhcd->PortDisabledCallback(hhcd); in HCD_Port_IRQHandler()
1944 HAL_HCD_PortDisabled_Callback(hhcd); in HCD_Port_IRQHandler()