Lines Matching refs:hhcd

76 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
77 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum);
78 static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd);
79 static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd);
107 HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd) in HAL_HCD_Init() argument
110 if (hhcd == NULL) in HAL_HCD_Init()
116 assert_param(IS_HCD_ALL_INSTANCE(hhcd->Instance)); in HAL_HCD_Init()
118 if (hhcd->State == HAL_HCD_STATE_RESET) in HAL_HCD_Init()
121 hhcd->Lock = HAL_UNLOCKED; in HAL_HCD_Init()
124 hhcd->SOFCallback = HAL_HCD_SOF_Callback; in HAL_HCD_Init()
125 hhcd->ConnectCallback = HAL_HCD_Connect_Callback; in HAL_HCD_Init()
126 hhcd->DisconnectCallback = HAL_HCD_Disconnect_Callback; in HAL_HCD_Init()
127 hhcd->PortEnabledCallback = HAL_HCD_PortEnabled_Callback; in HAL_HCD_Init()
128 hhcd->PortDisabledCallback = HAL_HCD_PortDisabled_Callback; in HAL_HCD_Init()
129 hhcd->HC_NotifyURBChangeCallback = HAL_HCD_HC_NotifyURBChange_Callback; in HAL_HCD_Init()
131 if (hhcd->MspInitCallback == NULL) in HAL_HCD_Init()
133 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_Init()
137 hhcd->MspInitCallback(hhcd); in HAL_HCD_Init()
140 HAL_HCD_MspInit(hhcd); in HAL_HCD_Init()
144 hhcd->State = HAL_HCD_STATE_BUSY; in HAL_HCD_Init()
147 hhcd->Init.dma_enable = 0U; 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()
201 HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, uint8_t ch_num, uint8_t epnum, in HAL_HCD_HC_Init() argument
207 __HAL_LOCK(hhcd); in HAL_HCD_HC_Init()
208 hhcd->hc[ch_num].do_ping = 0U; in HAL_HCD_HC_Init()
209 hhcd->hc[ch_num].dev_addr = dev_address; in HAL_HCD_HC_Init()
210 hhcd->hc[ch_num].ch_num = ch_num; in HAL_HCD_HC_Init()
211 hhcd->hc[ch_num].ep_type = ep_type; in HAL_HCD_HC_Init()
212 hhcd->hc[ch_num].ep_num = epnum & 0x7FU; in HAL_HCD_HC_Init()
214 (void)HAL_HCD_HC_ClearHubInfo(hhcd, ch_num); in HAL_HCD_HC_Init()
218 hhcd->hc[ch_num].ep_is_in = 1U; in HAL_HCD_HC_Init()
222 hhcd->hc[ch_num].ep_is_in = 0U; in HAL_HCD_HC_Init()
225 hhcd->hc[ch_num].speed = speed; in HAL_HCD_HC_Init()
226 hhcd->hc[ch_num].max_packet = (uint16_t)HCcharMps; in HAL_HCD_HC_Init()
228 status = USB_HC_Init(hhcd->Instance, ch_num, epnum, in HAL_HCD_HC_Init()
231 __HAL_UNLOCK(hhcd); in HAL_HCD_HC_Init()
243 HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num) in HAL_HCD_HC_Halt() argument
247 __HAL_LOCK(hhcd); in HAL_HCD_HC_Halt()
248 (void)USB_HC_Halt(hhcd->Instance, ch_num); in HAL_HCD_HC_Halt()
249 __HAL_UNLOCK(hhcd); in HAL_HCD_HC_Halt()
259 HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_DeInit() argument
262 if (hhcd == NULL) in HAL_HCD_DeInit()
267 hhcd->State = HAL_HCD_STATE_BUSY; in HAL_HCD_DeInit()
270 if (hhcd->MspDeInitCallback == NULL) in HAL_HCD_DeInit()
272 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; /* Legacy weak MspDeInit */ in HAL_HCD_DeInit()
276 hhcd->MspDeInitCallback(hhcd); in HAL_HCD_DeInit()
279 HAL_HCD_MspDeInit(hhcd); in HAL_HCD_DeInit()
282 __HAL_HCD_DISABLE(hhcd); in HAL_HCD_DeInit()
284 hhcd->State = HAL_HCD_STATE_RESET; in HAL_HCD_DeInit()
294 __weak void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_MspInit() argument
297 UNUSED(hhcd); in HAL_HCD_MspInit()
309 __weak void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd) in HAL_HCD_MspDeInit() argument
312 UNUSED(hhcd); in HAL_HCD_MspDeInit()
361 HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd, in HAL_HCD_HC_SubmitRequest() argument
370 hhcd->hc[ch_num].ep_is_in = direction; in HAL_HCD_HC_SubmitRequest()
371 hhcd->hc[ch_num].ep_type = ep_type; in HAL_HCD_HC_SubmitRequest()
375 hhcd->hc[ch_num].data_pid = HC_PID_SETUP; in HAL_HCD_HC_SubmitRequest()
376 hhcd->hc[ch_num].do_ping = do_ping; in HAL_HCD_HC_SubmitRequest()
380 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
394 hhcd->hc[ch_num].toggle_out = 1U; in HAL_HCD_HC_SubmitRequest()
398 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
401 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
406 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
416 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
419 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
424 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
429 if (hhcd->hc[ch_num].toggle_in == 0U) in HAL_HCD_HC_SubmitRequest()
431 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
435 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
444 if (hhcd->hc[ch_num].toggle_out == 0U) in HAL_HCD_HC_SubmitRequest()
447 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()
457 if (hhcd->hc[ch_num].toggle_in == 0U) in HAL_HCD_HC_SubmitRequest()
459 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
463 hhcd->hc[ch_num].data_pid = HC_PID_DATA1; in HAL_HCD_HC_SubmitRequest()
469 hhcd->hc[ch_num].data_pid = HC_PID_DATA0; in HAL_HCD_HC_SubmitRequest()
476 hhcd->hc[ch_num].xfer_buff = pbuff; in HAL_HCD_HC_SubmitRequest()
477 hhcd->hc[ch_num].xfer_len = length; in HAL_HCD_HC_SubmitRequest()
478 hhcd->hc[ch_num].urb_state = URB_IDLE; in HAL_HCD_HC_SubmitRequest()
479 hhcd->hc[ch_num].xfer_count = 0U; in HAL_HCD_HC_SubmitRequest()
480 hhcd->hc[ch_num].ch_num = ch_num; in HAL_HCD_HC_SubmitRequest()
481 hhcd->hc[ch_num].state = HC_IDLE; in HAL_HCD_HC_SubmitRequest()
483 return USB_HC_StartXfer(hhcd->Instance, &hhcd->hc[ch_num]); in HAL_HCD_HC_SubmitRequest()
491 void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd) in HAL_HCD_IRQHandler() argument
493 USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HAL_HCD_IRQHandler()
499 if (USB_GetMode(hhcd->Instance) == USB_OTG_MODE_HOST) in HAL_HCD_IRQHandler()
502 if (__HAL_HCD_IS_INVALID_INTERRUPT(hhcd)) in HAL_HCD_IRQHandler()
507 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) in HAL_HCD_IRQHandler()
510 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); in HAL_HCD_IRQHandler()
513 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR)) in HAL_HCD_IRQHandler()
516 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR); in HAL_HCD_IRQHandler()
519 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE)) in HAL_HCD_IRQHandler()
522 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE); in HAL_HCD_IRQHandler()
525 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_MMIS)) in HAL_HCD_IRQHandler()
528 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_MMIS); in HAL_HCD_IRQHandler()
532 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT)) in HAL_HCD_IRQHandler()
534 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT); in HAL_HCD_IRQHandler()
542 if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) in HAL_HCD_IRQHandler()
545 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); in HAL_HCD_IRQHandler()
550 hhcd->DisconnectCallback(hhcd); in HAL_HCD_IRQHandler()
552 HAL_HCD_Disconnect_Callback(hhcd); in HAL_HCD_IRQHandler()
558 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HPRTINT)) in HAL_HCD_IRQHandler()
560 HCD_Port_IRQHandler(hhcd); in HAL_HCD_IRQHandler()
564 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_SOF)) in HAL_HCD_IRQHandler()
567 hhcd->SOFCallback(hhcd); in HAL_HCD_IRQHandler()
569 HAL_HCD_SOF_Callback(hhcd); in HAL_HCD_IRQHandler()
572 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_SOF); in HAL_HCD_IRQHandler()
576 if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HCINT)) in HAL_HCD_IRQHandler()
578 interrupt = USB_HC_ReadInterrupt(hhcd->Instance); in HAL_HCD_IRQHandler()
579 for (i = 0U; i < hhcd->Init.Host_channels; i++) in HAL_HCD_IRQHandler()
585 HCD_HC_IN_IRQHandler(hhcd, (uint8_t)i); in HAL_HCD_IRQHandler()
589 HCD_HC_OUT_IRQHandler(hhcd, (uint8_t)i); in HAL_HCD_IRQHandler()
593 __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_HCINT); in HAL_HCD_IRQHandler()
597 if ((__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_RXFLVL)) != 0U) in HAL_HCD_IRQHandler()
599 USB_MASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_HCD_IRQHandler()
601 HCD_RXQLVL_IRQHandler(hhcd); in HAL_HCD_IRQHandler()
603 USB_UNMASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_HCD_IRQHandler()
614 void HAL_HCD_WKUP_IRQHandler(HCD_HandleTypeDef *hhcd) in HAL_HCD_WKUP_IRQHandler() argument
616 UNUSED(hhcd); in HAL_HCD_WKUP_IRQHandler()
625 __weak void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_SOF_Callback() argument
628 UNUSED(hhcd); in HAL_HCD_SOF_Callback()
640 __weak void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_Connect_Callback() argument
643 UNUSED(hhcd); in HAL_HCD_Connect_Callback()
655 __weak void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_Disconnect_Callback() argument
658 UNUSED(hhcd); in HAL_HCD_Disconnect_Callback()
670 __weak void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_PortEnabled_Callback() argument
673 UNUSED(hhcd); in HAL_HCD_PortEnabled_Callback()
685 __weak void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd) in HAL_HCD_PortDisabled_Callback() argument
688 UNUSED(hhcd); in HAL_HCD_PortDisabled_Callback()
710 __weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStat… in HAL_HCD_HC_NotifyURBChange_Callback() argument
713 UNUSED(hhcd); in HAL_HCD_HC_NotifyURBChange_Callback()
739 HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd, in HAL_HCD_RegisterCallback() argument
748 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
752 __HAL_LOCK(hhcd); in HAL_HCD_RegisterCallback()
754 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_RegisterCallback()
759 hhcd->SOFCallback = pCallback; in HAL_HCD_RegisterCallback()
763 hhcd->ConnectCallback = pCallback; in HAL_HCD_RegisterCallback()
767 hhcd->DisconnectCallback = pCallback; in HAL_HCD_RegisterCallback()
771 hhcd->PortEnabledCallback = pCallback; in HAL_HCD_RegisterCallback()
775 hhcd->PortDisabledCallback = pCallback; in HAL_HCD_RegisterCallback()
779 hhcd->MspInitCallback = pCallback; in HAL_HCD_RegisterCallback()
783 hhcd->MspDeInitCallback = pCallback; in HAL_HCD_RegisterCallback()
788 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
794 else if (hhcd->State == HAL_HCD_STATE_RESET) 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()
817 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterCallback()
823 __HAL_UNLOCK(hhcd); in HAL_HCD_RegisterCallback()
842 HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd, HAL_HCD_CallbackIDTypeDef Cal… in HAL_HCD_UnRegisterCallback() argument
847 __HAL_LOCK(hhcd); in HAL_HCD_UnRegisterCallback()
850 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_UnRegisterCallback()
855 hhcd->SOFCallback = HAL_HCD_SOF_Callback; in HAL_HCD_UnRegisterCallback()
859 hhcd->ConnectCallback = HAL_HCD_Connect_Callback; in HAL_HCD_UnRegisterCallback()
863 hhcd->DisconnectCallback = HAL_HCD_Disconnect_Callback; in HAL_HCD_UnRegisterCallback()
867 hhcd->PortEnabledCallback = HAL_HCD_PortEnabled_Callback; in HAL_HCD_UnRegisterCallback()
871 hhcd->PortDisabledCallback = HAL_HCD_PortDisabled_Callback; in HAL_HCD_UnRegisterCallback()
875 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_UnRegisterCallback()
879 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; in HAL_HCD_UnRegisterCallback()
884 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
891 else if (hhcd->State == HAL_HCD_STATE_RESET) in HAL_HCD_UnRegisterCallback()
896 hhcd->MspInitCallback = HAL_HCD_MspInit; in HAL_HCD_UnRegisterCallback()
900 hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; in HAL_HCD_UnRegisterCallback()
905 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
915 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterCallback()
922 __HAL_UNLOCK(hhcd); in HAL_HCD_UnRegisterCallback()
933 HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd, in HAL_HCD_RegisterHC_NotifyURBChangeCallback() argument
941 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
947 __HAL_LOCK(hhcd); in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
949 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
951 hhcd->HC_NotifyURBChangeCallback = pCallback; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
956 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
963 __HAL_UNLOCK(hhcd); in HAL_HCD_RegisterHC_NotifyURBChangeCallback()
975 HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd) in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback() argument
980 __HAL_LOCK(hhcd); in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
982 if (hhcd->State == HAL_HCD_STATE_READY) in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
984hhcd->HC_NotifyURBChangeCallback = HAL_HCD_HC_NotifyURBChange_Callback; /* Legacy weak DataOutStag… in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
989 hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
996 __HAL_UNLOCK(hhcd); in HAL_HCD_UnRegisterHC_NotifyURBChangeCallback()
1026 HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd) in HAL_HCD_Start() argument
1028 __HAL_LOCK(hhcd); in HAL_HCD_Start()
1030 (void)USB_DriveVbus(hhcd->Instance, 1U); in HAL_HCD_Start()
1033 __HAL_HCD_ENABLE(hhcd); in HAL_HCD_Start()
1034 __HAL_UNLOCK(hhcd); in HAL_HCD_Start()
1045 HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd) in HAL_HCD_Stop() argument
1047 __HAL_LOCK(hhcd); in HAL_HCD_Stop()
1048 (void)USB_StopHost(hhcd->Instance); in HAL_HCD_Stop()
1049 __HAL_UNLOCK(hhcd); in HAL_HCD_Stop()
1059 HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd) in HAL_HCD_ResetPort() argument
1061 return (USB_ResetPort(hhcd->Instance)); in HAL_HCD_ResetPort()
1088 HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef const *hhcd) in HAL_HCD_GetState() argument
1090 return hhcd->State; in HAL_HCD_GetState()
1107 HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetURBState() argument
1109 return hhcd->hc[chnum].urb_state; in HAL_HCD_HC_GetURBState()
1120 uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetXferCount() argument
1122 return hhcd->hc[chnum].xfer_count; in HAL_HCD_HC_GetXferCount()
1142 HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum) in HAL_HCD_HC_GetState() argument
1144 return hhcd->hc[chnum].state; in HAL_HCD_HC_GetState()
1152 uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd) in HAL_HCD_GetCurrentFrame() argument
1154 return (USB_GetCurrentFrame(hhcd->Instance)); in HAL_HCD_GetCurrentFrame()
1162 uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd) in HAL_HCD_GetCurrentSpeed() argument
1164 return (USB_GetHostSpeed(hhcd->Instance)); in HAL_HCD_GetCurrentSpeed()
1176 HAL_StatusTypeDef HAL_HCD_HC_SetHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num, in HAL_HCD_HC_SetHubInfo() argument
1179 hhcd->hc[ch_num].hub_addr = addr; in HAL_HCD_HC_SetHubInfo()
1180 hhcd->hc[ch_num].hub_port_nbr = PortNbr; in HAL_HCD_HC_SetHubInfo()
1193 HAL_StatusTypeDef HAL_HCD_HC_ClearHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num) in HAL_HCD_HC_ClearHubInfo() argument
1195 hhcd->hc[ch_num].hub_addr = 0U; in HAL_HCD_HC_ClearHubInfo()
1196 hhcd->hc[ch_num].hub_port_nbr = 0U; in HAL_HCD_HC_ClearHubInfo()
1218 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_IN_IRQHandler() argument
1220 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_HC_IN_IRQHandler()
1224 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_IN_IRQHandler()
1227 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1228 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1230 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) in HCD_HC_IN_IRQHandler()
1233 hhcd->hc[chnum].state = HC_BBLERR; in HCD_HC_IN_IRQHandler()
1234 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1236 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_IN_IRQHandler()
1239 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_IN_IRQHandler()
1240 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1242 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_IN_IRQHandler()
1245 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_IN_IRQHandler()
1246 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1248 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_IN_IRQHandler()
1251 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_IN_IRQHandler()
1252 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1259 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_IN_IRQHandler()
1261 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1264 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_IN_IRQHandler()
1266 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_IN_IRQHandler()
1267 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1270 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1271 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1273 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1276 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || in HCD_HC_IN_IRQHandler()
1277 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) in HCD_HC_IN_IRQHandler()
1280 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1283 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1285 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1293 if (hhcd->Init.dma_enable == 1U) in HCD_HC_IN_IRQHandler()
1295 …if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet)… in HCD_HC_IN_IRQHandler()
1297 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1302 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_HC_IN_IRQHandler()
1305 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_IN_IRQHandler()
1309 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_IN_IRQHandler()
1313 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_IN_IRQHandler()
1315 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1316 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_IN_IRQHandler()
1318 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_IN_IRQHandler()
1320 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1321 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_IN_IRQHandler()
1323 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_IN_IRQHandler()
1324 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_IN_IRQHandler()
1326 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1327 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1328 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_IN_IRQHandler()
1330 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1331 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1335 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1337 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1338 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1348 else if (hhcd->hc[chnum].state == HC_NYET) in HCD_HC_IN_IRQHandler()
1350 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1352 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_IN_IRQHandler()
1354 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1356 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_IN_IRQHandler()
1358 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1359 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_IN_IRQHandler()
1361 if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1362 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1371 else if (hhcd->hc[chnum].state == HC_BBLERR) in HCD_HC_IN_IRQHandler()
1373 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_IN_IRQHandler()
1374 hhcd->hc[chnum].ErrCnt++; in HCD_HC_IN_IRQHandler()
1375 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_IN_IRQHandler()
1379 if (hhcd->hc[chnum].state == HC_HALTED) in HCD_HC_IN_IRQHandler()
1386 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1388 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_IN_IRQHandler()
1391 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) in HCD_HC_IN_IRQHandler()
1394 hhcd->hc[chnum].state = HC_NYET; in HCD_HC_IN_IRQHandler()
1395 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1397 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1399 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_IN_IRQHandler()
1401 if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) in HCD_HC_IN_IRQHandler()
1403 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1404 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1405 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1407 else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || in HCD_HC_IN_IRQHandler()
1408 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) in HCD_HC_IN_IRQHandler()
1410 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_IN_IRQHandler()
1411 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_IN_IRQHandler()
1412 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_IN_IRQHandler()
1434 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) in HCD_HC_OUT_IRQHandler() argument
1436 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_HC_OUT_IRQHandler()
1441 if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) in HCD_HC_OUT_IRQHandler()
1444 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1445 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1447 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) in HCD_HC_OUT_IRQHandler()
1451 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) in HCD_HC_OUT_IRQHandler()
1454 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1456 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) in HCD_HC_OUT_IRQHandler()
1458 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1461 hhcd->hc[chnum].state = HC_XFRC; in HCD_HC_OUT_IRQHandler()
1462 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1464 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) in HCD_HC_OUT_IRQHandler()
1467 hhcd->hc[chnum].state = HC_STALL; in HCD_HC_OUT_IRQHandler()
1468 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1470 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) in HCD_HC_OUT_IRQHandler()
1472 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1473 hhcd->hc[chnum].state = HC_NAK; in HCD_HC_OUT_IRQHandler()
1475 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1478 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) in HCD_HC_OUT_IRQHandler()
1480 hhcd->hc[chnum].state = HC_XACTERR; in HCD_HC_OUT_IRQHandler()
1481 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1484 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) in HCD_HC_OUT_IRQHandler()
1486 hhcd->hc[chnum].state = HC_DATATGLERR; in HCD_HC_OUT_IRQHandler()
1487 (void)USB_HC_Halt(hhcd->Instance, chnum); in HCD_HC_OUT_IRQHandler()
1490 else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) in HCD_HC_OUT_IRQHandler()
1494 if (hhcd->hc[chnum].state == HC_XFRC) in HCD_HC_OUT_IRQHandler()
1496 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1497 hhcd->hc[chnum].urb_state = URB_DONE; in HCD_HC_OUT_IRQHandler()
1499 if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || in HCD_HC_OUT_IRQHandler()
1500 (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) in HCD_HC_OUT_IRQHandler()
1502 if (hhcd->Init.dma_enable == 0U) in HCD_HC_OUT_IRQHandler()
1504 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1507 if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) in HCD_HC_OUT_IRQHandler()
1509 …num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_p… in HCD_HC_OUT_IRQHandler()
1513 hhcd->hc[chnum].toggle_out ^= 1U; in HCD_HC_OUT_IRQHandler()
1518 else if (hhcd->hc[chnum].state == HC_ACK) in HCD_HC_OUT_IRQHandler()
1520 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1522 else if (hhcd->hc[chnum].state == HC_NAK) in HCD_HC_OUT_IRQHandler()
1524 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1525 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1527 else if (hhcd->hc[chnum].state == HC_STALL) in HCD_HC_OUT_IRQHandler()
1529 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1530 hhcd->hc[chnum].urb_state = URB_STALL; in HCD_HC_OUT_IRQHandler()
1532 else if ((hhcd->hc[chnum].state == HC_XACTERR) || in HCD_HC_OUT_IRQHandler()
1533 (hhcd->hc[chnum].state == HC_DATATGLERR)) in HCD_HC_OUT_IRQHandler()
1535 hhcd->hc[chnum].state = HC_HALTED; in HCD_HC_OUT_IRQHandler()
1536 hhcd->hc[chnum].ErrCnt++; in HCD_HC_OUT_IRQHandler()
1537 if (hhcd->hc[chnum].ErrCnt > 2U) in HCD_HC_OUT_IRQHandler()
1539 hhcd->hc[chnum].ErrCnt = 0U; in HCD_HC_OUT_IRQHandler()
1540 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_HC_OUT_IRQHandler()
1544 hhcd->hc[chnum].urb_state = URB_NOTREADY; in HCD_HC_OUT_IRQHandler()
1559 hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1561 HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); in HCD_HC_OUT_IRQHandler()
1575 static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd) in HCD_RXQLVL_IRQHandler() argument
1577 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_RXQLVL_IRQHandler()
1586 GrxstspReg = hhcd->Instance->GRXSTSP; in HCD_RXQLVL_IRQHandler()
1595 if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) in HCD_RXQLVL_IRQHandler()
1597 if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) in HCD_RXQLVL_IRQHandler()
1599 (void)USB_ReadPacket(hhcd->Instance, in HCD_RXQLVL_IRQHandler()
1600 hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt); in HCD_RXQLVL_IRQHandler()
1603 hhcd->hc[chnum].xfer_buff += pktcnt; in HCD_RXQLVL_IRQHandler()
1604 hhcd->hc[chnum].xfer_count += pktcnt; in HCD_RXQLVL_IRQHandler()
1609 if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) in HCD_RXQLVL_IRQHandler()
1616 hhcd->hc[chnum].toggle_in ^= 1U; in HCD_RXQLVL_IRQHandler()
1621 hhcd->hc[chnum].urb_state = URB_ERROR; in HCD_RXQLVL_IRQHandler()
1641 static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd) in HCD_Port_IRQHandler() argument
1643 const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; in HCD_Port_IRQHandler()
1661 hhcd->ConnectCallback(hhcd); in HCD_Port_IRQHandler()
1663 HAL_HCD_Connect_Callback(hhcd); in HCD_Port_IRQHandler()
1676 if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) in HCD_Port_IRQHandler()
1680 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_6_MHZ); in HCD_Port_IRQHandler()
1684 (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); in HCD_Port_IRQHandler()
1689 if (hhcd->Init.speed == HCD_SPEED_FULL) in HCD_Port_IRQHandler()
1695 hhcd->PortEnabledCallback(hhcd); in HCD_Port_IRQHandler()
1697 HAL_HCD_PortEnabled_Callback(hhcd); in HCD_Port_IRQHandler()
1704 hhcd->PortDisabledCallback(hhcd); in HCD_Port_IRQHandler()
1706 HAL_HCD_PortDisabled_Callback(hhcd); in HCD_Port_IRQHandler()