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
117 if (hhcd == NULL) in HAL_HCD_Init()
123 assert_param(IS_HCD_ALL_INSTANCE(hhcd->Instance)); in HAL_HCD_Init()
126 USBx = hhcd->Instance; in HAL_HCD_Init()
129 if (hhcd->State == HAL_HCD_STATE_RESET) in HAL_HCD_Init()
132 hhcd->Lock = HAL_UNLOCKED; in HAL_HCD_Init()
135 hhcd->SOFCallback = HAL_HCD_SOF_Callback; in HAL_HCD_Init()
136 hhcd->ConnectCallback = HAL_HCD_Connect_Callback; in HAL_HCD_Init()
137 hhcd->DisconnectCallback = HAL_HCD_Disconnect_Callback; in HAL_HCD_Init()
138 hhcd->PortEnabledCallback = HAL_HCD_PortEnabled_Callback; in HAL_HCD_Init()
139 hhcd->PortDisabledCallback = HAL_HCD_PortDisabled_Callback; in HAL_HCD_Init()
140 hhcd->HC_NotifyURBChangeCallback = HAL_HCD_HC_NotifyURBChange_Callback; in HAL_HCD_Init()
142 if (hhcd->MspInitCallback == NULL) in HAL_HCD_Init()
144 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_Init()
148 hhcd->MspInitCallback(hhcd); in HAL_HCD_Init()
151 HAL_HCD_MspInit(hhcd); in HAL_HCD_Init()
155 hhcd->State = HAL_HCD_STATE_BUSY; in HAL_HCD_Init()
161 hhcd->Init.dma_enable = 0U; in HAL_HCD_Init()
166 __HAL_HCD_DISABLE(hhcd); in HAL_HCD_Init()
169 if (USB_CoreInit(hhcd->Instance, hhcd->Init) != HAL_OK) in HAL_HCD_Init()
171 hhcd->State = HAL_HCD_STATE_ERROR; in HAL_HCD_Init()
176 if (USB_SetCurrentMode(hhcd->Instance, USB_HOST_MODE) != HAL_OK) in HAL_HCD_Init()
178 hhcd->State = HAL_HCD_STATE_ERROR; in HAL_HCD_Init()
183 if (USB_HostInit(hhcd->Instance, hhcd->Init) != HAL_OK) in HAL_HCD_Init()
185 hhcd->State = HAL_HCD_STATE_ERROR; in HAL_HCD_Init()
189 hhcd->State = HAL_HCD_STATE_READY; in HAL_HCD_Init()
218 HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, uint8_t ch_num, uint8_t epnum, in HAL_HCD_HC_Init() argument
225 __HAL_LOCK(hhcd); in HAL_HCD_HC_Init()
226 hhcd->hc[ch_num].do_ping = 0U; in HAL_HCD_HC_Init()
227 hhcd->hc[ch_num].dev_addr = dev_address; in HAL_HCD_HC_Init()
228 hhcd->hc[ch_num].ch_num = ch_num; in HAL_HCD_HC_Init()
229 hhcd->hc[ch_num].ep_type = ep_type; in HAL_HCD_HC_Init()
230 hhcd->hc[ch_num].ep_num = epnum & 0x7FU; in HAL_HCD_HC_Init()
232 (void)HAL_HCD_HC_ClearHubInfo(hhcd, ch_num); in HAL_HCD_HC_Init()
236 hhcd->hc[ch_num].ep_is_in = 1U; in HAL_HCD_HC_Init()
240 hhcd->hc[ch_num].ep_is_in = 0U; in HAL_HCD_HC_Init()
243 HostCoreSpeed = USB_GetHostSpeed(hhcd->Instance); in HAL_HCD_HC_Init()
258 hhcd->hc[ch_num].speed = speed; in HAL_HCD_HC_Init()
259 hhcd->hc[ch_num].max_packet = (uint16_t)HCcharMps; in HAL_HCD_HC_Init()
261 status = USB_HC_Init(hhcd->Instance, ch_num, epnum, in HAL_HCD_HC_Init()
264 __HAL_UNLOCK(hhcd); in HAL_HCD_HC_Init()
276 HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num) in HAL_HCD_HC_Halt() argument
280 __HAL_LOCK(hhcd); in HAL_HCD_HC_Halt()
281 (void)USB_HC_Halt(hhcd->Instance, ch_num); in HAL_HCD_HC_Halt()
282 __HAL_UNLOCK(hhcd); in HAL_HCD_HC_Halt()
292 HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_DeInit() argument
295 if (hhcd == NULL) in HAL_HCD_DeInit()
300 hhcd->State = HAL_HCD_STATE_BUSY; in HAL_HCD_DeInit()
303 if (hhcd->MspDeInitCallback == NULL) in HAL_HCD_DeInit()
305 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; /* Legacy weak MspDeInit */ in HAL_HCD_DeInit()
309 hhcd->MspDeInitCallback(hhcd); in HAL_HCD_DeInit()
312 HAL_HCD_MspDeInit(hhcd); in HAL_HCD_DeInit()
315 __HAL_HCD_DISABLE(hhcd); in HAL_HCD_DeInit()
317 hhcd->State = HAL_HCD_STATE_RESET; in HAL_HCD_DeInit()
327 __weak void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_MspInit() argument
330 UNUSED(hhcd); in HAL_HCD_MspInit()
342 __weak void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_MspDeInit() argument
345 UNUSED(hhcd); in HAL_HCD_MspDeInit()
394 HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd, in HAL_HCD_HC_SubmitRequest() argument
403 hhcd->hc[ch_num].ep_is_in = direction; in HAL_HCD_HC_SubmitRequest()
404 hhcd->hc[ch_num].ep_type = ep_type; in HAL_HCD_HC_SubmitRequest()
408 hhcd->hc[ch_num].data_pid = HC_PID_SETUP; in HAL_HCD_HC_SubmitRequest()
409 hhcd->hc[ch_num].do_ping = do_ping; in HAL_HCD_HC_SubmitRequest()
413 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
427 hhcd->hc[ch_num].toggle_out = 1U; in HAL_HCD_HC_SubmitRequest()
431 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
434 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
439 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
444 if (hhcd->hc[ch_num].do_ssplit == 1U) in HAL_HCD_HC_SubmitRequest()
446 if (hhcd->hc[ch_num].toggle_in == 0U) in HAL_HCD_HC_SubmitRequest()
448 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
452 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
463 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
466 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
471 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
476 if (hhcd->hc[ch_num].toggle_in == 0U) in HAL_HCD_HC_SubmitRequest()
478 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
482 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
491 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
494 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
499 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
504 if (hhcd->hc[ch_num].toggle_in == 0U) in HAL_HCD_HC_SubmitRequest()
506 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
510 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
516 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
523 hhcd->hc[ch_num].xfer_buff = pbuff; in HAL_HCD_HC_SubmitRequest()
524 hhcd->hc[ch_num].xfer_len = length; in HAL_HCD_HC_SubmitRequest()
525 hhcd->hc[ch_num].urb_state = URB_IDLE; in HAL_HCD_HC_SubmitRequest()
526 hhcd->hc[ch_num].xfer_count = 0U; in HAL_HCD_HC_SubmitRequest()
527 hhcd->hc[ch_num].ch_num = ch_num; in HAL_HCD_HC_SubmitRequest()
528 hhcd->hc[ch_num].state = HC_IDLE; in HAL_HCD_HC_SubmitRequest()
530 return USB_HC_StartXfer(hhcd->Instance, &hhcd->hc[ch_num], (uint8_t)hhcd->Init.dma_enable); in HAL_HCD_HC_SubmitRequest()
538 void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd) in HAL_HCD_IRQHandler() argument
540 USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HAL_HCD_IRQHandler()
546 if (USB_GetMode(hhcd->Instance) == USB_OTG_MODE_HOST) in HAL_HCD_IRQHandler()
549 if (__HAL_HCD_IS_INVALID_INTERRUPT(hhcd)) in HAL_HCD_IRQHandler()
554 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) in HAL_HCD_IRQHandler()
557 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); in HAL_HCD_IRQHandler()
560 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR)) in HAL_HCD_IRQHandler()
563 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR); in HAL_HCD_IRQHandler()
566 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE)) in HAL_HCD_IRQHandler()
569 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE); in HAL_HCD_IRQHandler()
572 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_MMIS)) in HAL_HCD_IRQHandler()
575 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_MMIS); in HAL_HCD_IRQHandler()
579 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT)) in HAL_HCD_IRQHandler()
581 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT); in HAL_HCD_IRQHandler()
589 if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) in HAL_HCD_IRQHandler()
592 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); in HAL_HCD_IRQHandler()
597 hhcd->DisconnectCallback(hhcd); in HAL_HCD_IRQHandler()
599 HAL_HCD_Disconnect_Callback(hhcd); in HAL_HCD_IRQHandler()
605 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HPRTINT)) in HAL_HCD_IRQHandler()
607 HCD_Port_IRQHandler(hhcd); in HAL_HCD_IRQHandler()
611 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_SOF)) in HAL_HCD_IRQHandler()
614 hhcd->SOFCallback(hhcd); in HAL_HCD_IRQHandler()
616 HAL_HCD_SOF_Callback(hhcd); in HAL_HCD_IRQHandler()
619 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_SOF); in HAL_HCD_IRQHandler()
623 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HCINT)) in HAL_HCD_IRQHandler()
625 interrupt = USB_HC_ReadInterrupt(hhcd->Instance); in HAL_HCD_IRQHandler()
626 for (i = 0U; i < hhcd->Init.Host_channels; i++) in HAL_HCD_IRQHandler()
632 HCD_HC_IN_IRQHandler(hhcd, (uint8_t)i); in HAL_HCD_IRQHandler()
636 HCD_HC_OUT_IRQHandler(hhcd, (uint8_t)i); in HAL_HCD_IRQHandler()
640 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_HCINT); in HAL_HCD_IRQHandler()
644 if ((__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_RXFLVL)) != 0U) in HAL_HCD_IRQHandler()
646 USB_MASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_HCD_IRQHandler()
648 HCD_RXQLVL_IRQHandler(hhcd); in HAL_HCD_IRQHandler()
650 USB_UNMASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_HCD_IRQHandler()
661 void HAL_HCD_WKUP_IRQHandler(HCD_HandleTypeDef *hhcd) in HAL_HCD_WKUP_IRQHandler() argument
663 UNUSED(hhcd); in HAL_HCD_WKUP_IRQHandler()
672 __weak void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_SOF_Callback() argument
675 UNUSED(hhcd); in HAL_HCD_SOF_Callback()
687 __weak void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_Connect_Callback() argument
690 UNUSED(hhcd); in HAL_HCD_Connect_Callback()
702 __weak void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_Disconnect_Callback() argument
705 UNUSED(hhcd); in HAL_HCD_Disconnect_Callback()
717 __weak void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_PortEnabled_Callback() argument
720 UNUSED(hhcd); in HAL_HCD_PortEnabled_Callback()
732 __weak void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_PortDisabled_Callback() argument
735 UNUSED(hhcd); in HAL_HCD_PortDisabled_Callback()
757 __weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStat… in HAL_HCD_HC_NotifyURBChange_Callback() argument
760 UNUSED(hhcd); in HAL_HCD_HC_NotifyURBChange_Callback()
786 HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd, in HAL_HCD_RegisterCallback() argument
795 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
799 __HAL_LOCK(hhcd); in HAL_HCD_RegisterCallback()
801 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_RegisterCallback()
806 hhcd->SOFCallback = pCallback; in HAL_HCD_RegisterCallback()
810 hhcd->ConnectCallback = pCallback; in HAL_HCD_RegisterCallback()
814 hhcd->DisconnectCallback = pCallback; in HAL_HCD_RegisterCallback()
818 hhcd->PortEnabledCallback = pCallback; in HAL_HCD_RegisterCallback()
822 hhcd->PortDisabledCallback = pCallback; in HAL_HCD_RegisterCallback()
826 hhcd->MspInitCallback = pCallback; in HAL_HCD_RegisterCallback()
830 hhcd->MspDeInitCallback = pCallback; in HAL_HCD_RegisterCallback()
835 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
841 else if (hhcd->State == HAL_HCD_STATE_RESET) in HAL_HCD_RegisterCallback()
846 hhcd->MspInitCallback = pCallback; in HAL_HCD_RegisterCallback()
850 hhcd->MspDeInitCallback = pCallback; in HAL_HCD_RegisterCallback()
855 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
864 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
870 __HAL_UNLOCK(hhcd); in HAL_HCD_RegisterCallback()
889 HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd, HAL_HCD_CallbackIDTypeDef Cal… in HAL_HCD_UnRegisterCallback() argument
894 __HAL_LOCK(hhcd); in HAL_HCD_UnRegisterCallback()
897 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_UnRegisterCallback()
902 hhcd->SOFCallback = HAL_HCD_SOF_Callback; in HAL_HCD_UnRegisterCallback()
906 hhcd->ConnectCallback = HAL_HCD_Connect_Callback; in HAL_HCD_UnRegisterCallback()
910 hhcd->DisconnectCallback = HAL_HCD_Disconnect_Callback; in HAL_HCD_UnRegisterCallback()
914 hhcd->PortEnabledCallback = HAL_HCD_PortEnabled_Callback; in HAL_HCD_UnRegisterCallback()
918 hhcd->PortDisabledCallback = HAL_HCD_PortDisabled_Callback; in HAL_HCD_UnRegisterCallback()
922 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_UnRegisterCallback()
926 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; in HAL_HCD_UnRegisterCallback()
931 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
938 else if (hhcd->State == HAL_HCD_STATE_RESET) in HAL_HCD_UnRegisterCallback()
943 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_UnRegisterCallback()
947 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; in HAL_HCD_UnRegisterCallback()
952 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
962 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
969 __HAL_UNLOCK(hhcd); in HAL_HCD_UnRegisterCallback()
980 HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd, in HAL_HCD_RegisterHC_NotifyURBChangeCallback() argument
988 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
994 __HAL_LOCK(hhcd); in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
996 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
998 hhcd->HC_NotifyURBChangeCallback = pCallback; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
1003 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
1010 __HAL_UNLOCK(hhcd); in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
1022 HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd) in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback() argument
1027 __HAL_LOCK(hhcd); in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1029 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1031 …hhcd->HC_NotifyURBChangeCallback = HAL_HCD_HC_NotifyURBChange_Callback; /* Legacy weak DataOutStag… in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1036 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1043 __HAL_UNLOCK(hhcd); in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1073 HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd) in HAL_HCD_Start() argument
1075 __HAL_LOCK(hhcd); in HAL_HCD_Start()
1077 (void)USB_DriveVbus(hhcd->Instance, 1U); in HAL_HCD_Start()
1080 __HAL_HCD_ENABLE(hhcd); in HAL_HCD_Start()
1081 __HAL_UNLOCK(hhcd); in HAL_HCD_Start()
1092 HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd) in HAL_HCD_Stop() argument
1094 __HAL_LOCK(hhcd); in HAL_HCD_Stop()
1095 (void)USB_StopHost(hhcd->Instance); in HAL_HCD_Stop()
1096 __HAL_UNLOCK(hhcd); in HAL_HCD_Stop()
1106 HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd) in HAL_HCD_ResetPort() argument
1108 return (USB_ResetPort(hhcd->Instance)); in HAL_HCD_ResetPort()
1135 HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef const *hhcd) in HAL_HCD_GetState() argument
1137 return hhcd->State; in HAL_HCD_GetState()
1154 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
1156 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
1167 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
1169 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
1189 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
1191 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
1199 uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd) in HAL_HCD_GetCurrentFrame() argument
1201 return (USB_GetCurrentFrame(hhcd->Instance)); in HAL_HCD_GetCurrentFrame()
1209 uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd) in HAL_HCD_GetCurrentSpeed() argument
1211 return (USB_GetHostSpeed(hhcd->Instance)); in HAL_HCD_GetCurrentSpeed()
1223 HAL_StatusTypeDef HAL_HCD_HC_SetHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num, in HAL_HCD_HC_SetHubInfo() argument
1226 uint32_t HostCoreSpeed = USB_GetHostSpeed(hhcd->Instance); in HAL_HCD_HC_SetHubInfo()
1229 …if ((hhcd->hc[ch_num].speed != HCD_DEVICE_SPEED_HIGH) && (HostCoreSpeed == HPRT0_PRTSPD_HIGH_SPEED… in HAL_HCD_HC_SetHubInfo()
1231 hhcd->hc[ch_num].do_ssplit = 1U; in HAL_HCD_HC_SetHubInfo()
1233 if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) && (hhcd->hc[ch_num].ep_is_in != 0U)) in HAL_HCD_HC_SetHubInfo()
1235 hhcd->hc[ch_num].toggle_in = 1U; in HAL_HCD_HC_SetHubInfo()
1239 hhcd->hc[ch_num].hub_addr = addr; in HAL_HCD_HC_SetHubInfo()
1240 hhcd->hc[ch_num].hub_port_nbr = PortNbr; in HAL_HCD_HC_SetHubInfo()
1253 HAL_StatusTypeDef HAL_HCD_HC_ClearHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num) in HAL_HCD_HC_ClearHubInfo() argument
1255 hhcd->hc[ch_num].do_ssplit = 0U; in HAL_HCD_HC_ClearHubInfo()
1256 hhcd->hc[ch_num].do_csplit = 0U; in HAL_HCD_HC_ClearHubInfo()
1257 hhcd->hc[ch_num].hub_addr = 0U; in HAL_HCD_HC_ClearHubInfo()
1258 hhcd->hc[ch_num].hub_port_nbr = 0U; in HAL_HCD_HC_ClearHubInfo()
1280 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
1282 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_HC_IN_IRQHandler()
1286 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_IN_IRQHandler()
1289 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1290 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1292 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) in HCD_HC_IN_IRQHandler()
1295 hhcd->hc[chnum].state = HC_BBLERR; in HCD_HC_IN_IRQHandler()
1296 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1298 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_IN_IRQHandler()
1301 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_IN_IRQHandler()
1302 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1304 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_IN_IRQHandler()
1307 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_IN_IRQHandler()
1308 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1310 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_IN_IRQHandler()
1313 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1314 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1321 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_IN_IRQHandler()
1323 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1326 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_IN_IRQHandler()
1331 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1333 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1337 if (hhcd->Init.dma_enable != 0U) in HCD_HC_IN_IRQHandler()
1339 …hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].XferSize - (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_X… in HCD_HC_IN_IRQHandler()
1342 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_IN_IRQHandler()
1343 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1346 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1347 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1349 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1352 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || in HCD_HC_IN_IRQHandler()
1353 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) in HCD_HC_IN_IRQHandler()
1356 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1359 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1361 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1369 if (hhcd->Init.dma_enable == 1U) in HCD_HC_IN_IRQHandler()
1371 …if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet)… in HCD_HC_IN_IRQHandler()
1373 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1378 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1381 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_IN_IRQHandler()
1385 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1387 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_IN_IRQHandler()
1388 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_IN_IRQHandler()
1390 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1393 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_IN_IRQHandler()
1397 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_IN_IRQHandler()
1399 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1400 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1402 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_IN_IRQHandler()
1404 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1405 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_IN_IRQHandler()
1407 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_IN_IRQHandler()
1408 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_IN_IRQHandler()
1410 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1411 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1412 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1414 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1416 if (hhcd->hc[chnum].do_ssplit == 1U) in HCD_HC_IN_IRQHandler()
1418 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1419 hhcd->hc[chnum].ep_ss_schedule = 0U; in HCD_HC_IN_IRQHandler()
1423 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1427 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1429 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1430 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1440 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_IN_IRQHandler()
1442 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1444 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1446 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1448 hhcd->hc[chnum].NyetErrCnt++; in HCD_HC_IN_IRQHandler()
1449 if (hhcd->hc[chnum].NyetErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1451 hhcd->hc[chnum].NyetErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1452 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1454 if (hhcd->hc[chnum].ErrCnt < 3U) in HCD_HC_IN_IRQHandler()
1456 hhcd->hc[chnum].ep_ss_schedule = 1U; in HCD_HC_IN_IRQHandler()
1459 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1463 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1468 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1471 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1472 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1482 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_IN_IRQHandler()
1484 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1486 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1488 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1495 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1496 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1506 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_IN_IRQHandler()
1508 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1509 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1511 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1512 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1521 else if (hhcd->hc[chnum].state == HC_BBLERR) in HCD_HC_IN_IRQHandler()
1523 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1524 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1525 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1529 if (hhcd->hc[chnum].state == HC_HALTED) in HCD_HC_IN_IRQHandler()
1536 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1538 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1541 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_IN_IRQHandler()
1544 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_IN_IRQHandler()
1546 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_IN_IRQHandler()
1548 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1551 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1553 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_IN_IRQHandler()
1555 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1557 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1558 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1559 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1561 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1562 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1564 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1566 if ((hhcd->Init.dma_enable == 0U) || (hhcd->hc[chnum].do_csplit == 1U)) in HCD_HC_IN_IRQHandler()
1568 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1569 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1577 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_IN_IRQHandler()
1579 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_IN_IRQHandler()
1599 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
1601 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_HC_OUT_IRQHandler()
1606 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_OUT_IRQHandler()
1609 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1610 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1612 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_OUT_IRQHandler()
1616 if (hhcd->hc[chnum].do_ping == 1U) in HCD_HC_OUT_IRQHandler()
1618 hhcd->hc[chnum].do_ping = 0U; in HCD_HC_OUT_IRQHandler()
1619 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1620 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1621 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1624 if ((hhcd->hc[chnum].do_ssplit == 1U) && (hhcd->hc[chnum].do_csplit == 0U)) in HCD_HC_OUT_IRQHandler()
1626 if (hhcd->hc[chnum].ep_type != EP_TYPE_ISOC) in HCD_HC_OUT_IRQHandler()
1628 hhcd->hc[chnum].do_csplit = 1U; in HCD_HC_OUT_IRQHandler()
1631 hhcd->hc[chnum].state = HC_ACK; in HCD_HC_OUT_IRQHandler()
1632 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1635 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1638 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_OUT_IRQHandler()
1641 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1643 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_OUT_IRQHandler()
1645 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1648 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1650 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1654 if (hhcd->hc[chnum].do_csplit != 0U) in HCD_HC_OUT_IRQHandler()
1656 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1661 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_OUT_IRQHandler()
1662 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1664 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_OUT_IRQHandler()
1666 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_OUT_IRQHandler()
1668 if (hhcd->hc[chnum].do_ssplit == 0U) in HCD_HC_OUT_IRQHandler()
1670 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1673 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1674 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1677 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_OUT_IRQHandler()
1680 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_OUT_IRQHandler()
1681 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1683 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_OUT_IRQHandler()
1685 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1686 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_OUT_IRQHandler()
1688 if (hhcd->hc[chnum].do_ping == 0U) in HCD_HC_OUT_IRQHandler()
1690 if (hhcd->hc[chnum].speed == HCD_DEVICE_SPEED_HIGH) in HCD_HC_OUT_IRQHandler()
1692 hhcd->hc[chnum].do_ping = 1U; in HCD_HC_OUT_IRQHandler()
1696 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1699 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_OUT_IRQHandler()
1701 if (hhcd->Init.dma_enable == 0U) in HCD_HC_OUT_IRQHandler()
1703 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1704 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1708 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1709 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1711 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1712 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1715 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1717 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1722 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1733 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_OUT_IRQHandler()
1735 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_OUT_IRQHandler()
1736 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1739 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_OUT_IRQHandler()
1743 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_OUT_IRQHandler()
1745 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1746 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_OUT_IRQHandler()
1748 if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || in HCD_HC_OUT_IRQHandler()
1749 (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) in HCD_HC_OUT_IRQHandler()
1751 if (hhcd->Init.dma_enable == 0U) in HCD_HC_OUT_IRQHandler()
1753 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1756 if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) in HCD_HC_OUT_IRQHandler()
1758 …num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_p… in HCD_HC_OUT_IRQHandler()
1762 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1767 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_OUT_IRQHandler()
1769 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1771 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1773 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1776 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_OUT_IRQHandler()
1778 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1779 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1781 if (hhcd->hc[chnum].do_csplit == 1U) in HCD_HC_OUT_IRQHandler()
1783 hhcd->hc[chnum].do_csplit = 0U; in HCD_HC_OUT_IRQHandler()
1787 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_OUT_IRQHandler()
1789 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1790 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1792 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_OUT_IRQHandler()
1794 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1795 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_OUT_IRQHandler()
1797 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_OUT_IRQHandler()
1798 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_OUT_IRQHandler()
1800 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1801 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1802 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1804 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1805 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1809 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1824 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1826 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1840 static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd) in HCD_RXQLVL_IRQHandler() argument
1842 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_RXQLVL_IRQHandler()
1851 GrxstspReg = hhcd->Instance->GRXSTSP; in HCD_RXQLVL_IRQHandler()
1860 if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) in HCD_RXQLVL_IRQHandler()
1862 if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) in HCD_RXQLVL_IRQHandler()
1864 (void)USB_ReadPacket(hhcd->Instance, in HCD_RXQLVL_IRQHandler()
1865 hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt); in HCD_RXQLVL_IRQHandler()
1868 hhcd->hc[chnum].xfer_buff += pktcnt; in HCD_RXQLVL_IRQHandler()
1869 hhcd->hc[chnum].xfer_count += pktcnt; in HCD_RXQLVL_IRQHandler()
1874 if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) in HCD_RXQLVL_IRQHandler()
1881 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_RXQLVL_IRQHandler()
1886 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_RXQLVL_IRQHandler()
1906 static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd) in HCD_Port_IRQHandler() argument
1908 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_Port_IRQHandler()
1926 hhcd->ConnectCallback(hhcd); in HCD_Port_IRQHandler()
1928 HAL_HCD_Connect_Callback(hhcd); in HCD_Port_IRQHandler()
1941 if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) in HCD_Port_IRQHandler()
1945 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_6_MHZ); in HCD_Port_IRQHandler()
1949 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); in HCD_Port_IRQHandler()
1954 if (hhcd->Init.speed == HCD_SPEED_FULL) in HCD_Port_IRQHandler()
1960 hhcd->PortEnabledCallback(hhcd); in HCD_Port_IRQHandler()
1962 HAL_HCD_PortEnabled_Callback(hhcd); in HCD_Port_IRQHandler()
1969 hhcd->PortDisabledCallback(hhcd); in HCD_Port_IRQHandler()
1971 HAL_HCD_PortDisabled_Callback(hhcd); in HCD_Port_IRQHandler()