Lines Matching refs:hpcd
91 static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum);
92 static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum);
93 static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum);
97 static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd);
99 static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, PCD_EPTypeDef *ep, uint16_…
100 static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, PCD_EPTypeDef *ep, uint16_t wEPVal);
131 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) in HAL_PCD_Init() argument
136 if (hpcd == NULL) in HAL_PCD_Init()
142 assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); in HAL_PCD_Init()
144 if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_Init()
147 hpcd->Lock = HAL_UNLOCKED; in HAL_PCD_Init()
150 hpcd->SOFCallback = HAL_PCD_SOFCallback; in HAL_PCD_Init()
151 hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; in HAL_PCD_Init()
152 hpcd->ResetCallback = HAL_PCD_ResetCallback; in HAL_PCD_Init()
153 hpcd->SuspendCallback = HAL_PCD_SuspendCallback; in HAL_PCD_Init()
154 hpcd->ResumeCallback = HAL_PCD_ResumeCallback; in HAL_PCD_Init()
155 hpcd->ConnectCallback = HAL_PCD_ConnectCallback; in HAL_PCD_Init()
156 hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; in HAL_PCD_Init()
157 hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; in HAL_PCD_Init()
158 hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; in HAL_PCD_Init()
159 hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; in HAL_PCD_Init()
160 hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; in HAL_PCD_Init()
161 hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; in HAL_PCD_Init()
162 hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; in HAL_PCD_Init()
164 if (hpcd->MspInitCallback == NULL) in HAL_PCD_Init()
166 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_Init()
170 hpcd->MspInitCallback(hpcd); in HAL_PCD_Init()
173 HAL_PCD_MspInit(hpcd); in HAL_PCD_Init()
177 hpcd->State = HAL_PCD_STATE_BUSY; in HAL_PCD_Init()
180 hpcd->Init.dma_enable = 0U; in HAL_PCD_Init()
183 __HAL_PCD_DISABLE(hpcd); in HAL_PCD_Init()
186 if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) in HAL_PCD_Init()
188 hpcd->State = HAL_PCD_STATE_ERROR; in HAL_PCD_Init()
193 if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK) in HAL_PCD_Init()
195 hpcd->State = HAL_PCD_STATE_ERROR; in HAL_PCD_Init()
200 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_Init()
203 hpcd->IN_ep[i].is_in = 1U; in HAL_PCD_Init()
204 hpcd->IN_ep[i].num = i; in HAL_PCD_Init()
206 hpcd->IN_ep[i].tx_fifo_num = i; in HAL_PCD_Init()
209 hpcd->IN_ep[i].type = EP_TYPE_CTRL; in HAL_PCD_Init()
210 hpcd->IN_ep[i].maxpacket = 0U; in HAL_PCD_Init()
211 hpcd->IN_ep[i].xfer_buff = 0U; in HAL_PCD_Init()
212 hpcd->IN_ep[i].xfer_len = 0U; in HAL_PCD_Init()
215 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_Init()
217 hpcd->OUT_ep[i].is_in = 0U; in HAL_PCD_Init()
218 hpcd->OUT_ep[i].num = i; in HAL_PCD_Init()
220 hpcd->OUT_ep[i].type = EP_TYPE_CTRL; in HAL_PCD_Init()
221 hpcd->OUT_ep[i].maxpacket = 0U; in HAL_PCD_Init()
222 hpcd->OUT_ep[i].xfer_buff = 0U; in HAL_PCD_Init()
223 hpcd->OUT_ep[i].xfer_len = 0U; in HAL_PCD_Init()
227 if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) in HAL_PCD_Init()
229 hpcd->State = HAL_PCD_STATE_ERROR; in HAL_PCD_Init()
233 hpcd->USB_Address = 0U; in HAL_PCD_Init()
234 hpcd->State = HAL_PCD_STATE_READY; in HAL_PCD_Init()
237 if (hpcd->Init.lpm_enable == 1U) in HAL_PCD_Init()
239 (void)HAL_PCDEx_ActivateLPM(hpcd); in HAL_PCD_Init()
242 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_Init()
252 HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_DeInit() argument
255 if (hpcd == NULL) in HAL_PCD_DeInit()
260 hpcd->State = HAL_PCD_STATE_BUSY; in HAL_PCD_DeInit()
263 if (USB_StopDevice(hpcd->Instance) != HAL_OK) in HAL_PCD_DeInit()
269 if (hpcd->MspDeInitCallback == NULL) in HAL_PCD_DeInit()
271 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; /* Legacy weak MspDeInit */ in HAL_PCD_DeInit()
275 hpcd->MspDeInitCallback(hpcd); in HAL_PCD_DeInit()
278 HAL_PCD_MspDeInit(hpcd); in HAL_PCD_DeInit()
281 hpcd->State = HAL_PCD_STATE_RESET; in HAL_PCD_DeInit()
291 __weak void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_MspInit() argument
294 UNUSED(hpcd); in HAL_PCD_MspInit()
306 __weak void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_MspDeInit() argument
309 UNUSED(hpcd); in HAL_PCD_MspDeInit()
335 HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterCallback() argument
344 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
348 __HAL_LOCK(hpcd); in HAL_PCD_RegisterCallback()
350 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterCallback()
355 hpcd->SOFCallback = pCallback; in HAL_PCD_RegisterCallback()
359 hpcd->SetupStageCallback = pCallback; in HAL_PCD_RegisterCallback()
363 hpcd->ResetCallback = pCallback; in HAL_PCD_RegisterCallback()
367 hpcd->SuspendCallback = pCallback; in HAL_PCD_RegisterCallback()
371 hpcd->ResumeCallback = pCallback; in HAL_PCD_RegisterCallback()
375 hpcd->ConnectCallback = pCallback; in HAL_PCD_RegisterCallback()
379 hpcd->DisconnectCallback = pCallback; in HAL_PCD_RegisterCallback()
383 hpcd->MspInitCallback = pCallback; in HAL_PCD_RegisterCallback()
387 hpcd->MspDeInitCallback = pCallback; in HAL_PCD_RegisterCallback()
392 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
398 else if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_RegisterCallback()
403 hpcd->MspInitCallback = pCallback; in HAL_PCD_RegisterCallback()
407 hpcd->MspDeInitCallback = pCallback; in HAL_PCD_RegisterCallback()
412 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
421 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
427 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterCallback()
448 HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef Cal… in HAL_PCD_UnRegisterCallback() argument
453 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterCallback()
456 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterCallback()
461 hpcd->SOFCallback = HAL_PCD_SOFCallback; in HAL_PCD_UnRegisterCallback()
465 hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; in HAL_PCD_UnRegisterCallback()
469 hpcd->ResetCallback = HAL_PCD_ResetCallback; in HAL_PCD_UnRegisterCallback()
473 hpcd->SuspendCallback = HAL_PCD_SuspendCallback; in HAL_PCD_UnRegisterCallback()
477 hpcd->ResumeCallback = HAL_PCD_ResumeCallback; in HAL_PCD_UnRegisterCallback()
481 hpcd->ConnectCallback = HAL_PCD_ConnectCallback; in HAL_PCD_UnRegisterCallback()
485 hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; in HAL_PCD_UnRegisterCallback()
489 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_UnRegisterCallback()
493 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; in HAL_PCD_UnRegisterCallback()
498 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
505 else if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_UnRegisterCallback()
510 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_UnRegisterCallback()
514 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; in HAL_PCD_UnRegisterCallback()
519 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
529 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
536 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterCallback()
547 HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterDataOutStageCallback() argument
555 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataOutStageCallback()
561 __HAL_LOCK(hpcd); in HAL_PCD_RegisterDataOutStageCallback()
563 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterDataOutStageCallback()
565 hpcd->DataOutStageCallback = pCallback; in HAL_PCD_RegisterDataOutStageCallback()
570 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataOutStageCallback()
577 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterDataOutStageCallback()
588 HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterDataOutStageCallback() argument
593 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterDataOutStageCallback()
595 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterDataOutStageCallback()
597 … hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; /* Legacy weak DataOutStageCallback */ in HAL_PCD_UnRegisterDataOutStageCallback()
602 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterDataOutStageCallback()
609 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterDataOutStageCallback()
621 HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterDataInStageCallback() argument
629 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataInStageCallback()
635 __HAL_LOCK(hpcd); in HAL_PCD_RegisterDataInStageCallback()
637 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterDataInStageCallback()
639 hpcd->DataInStageCallback = pCallback; in HAL_PCD_RegisterDataInStageCallback()
644 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataInStageCallback()
651 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterDataInStageCallback()
662 HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterDataInStageCallback() argument
667 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterDataInStageCallback()
669 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterDataInStageCallback()
671 hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; /* Legacy weak DataInStageCallback */ in HAL_PCD_UnRegisterDataInStageCallback()
676 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterDataInStageCallback()
683 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterDataInStageCallback()
695 HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterIsoOutIncpltCallback() argument
703 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoOutIncpltCallback()
709 __HAL_LOCK(hpcd); in HAL_PCD_RegisterIsoOutIncpltCallback()
711 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterIsoOutIncpltCallback()
713 hpcd->ISOOUTIncompleteCallback = pCallback; in HAL_PCD_RegisterIsoOutIncpltCallback()
718 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoOutIncpltCallback()
725 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterIsoOutIncpltCallback()
737 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterIsoOutIncpltCallback() argument
742 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterIsoOutIncpltCallback()
744 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterIsoOutIncpltCallback()
746 …hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; /* Legacy weak ISOOUTIncomplete… in HAL_PCD_UnRegisterIsoOutIncpltCallback()
751 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterIsoOutIncpltCallback()
758 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterIsoOutIncpltCallback()
770 HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterIsoInIncpltCallback() argument
778 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoInIncpltCallback()
784 __HAL_LOCK(hpcd); in HAL_PCD_RegisterIsoInIncpltCallback()
786 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterIsoInIncpltCallback()
788 hpcd->ISOINIncompleteCallback = pCallback; in HAL_PCD_RegisterIsoInIncpltCallback()
793 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoInIncpltCallback()
800 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterIsoInIncpltCallback()
812 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterIsoInIncpltCallback() argument
817 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterIsoInIncpltCallback()
819 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterIsoInIncpltCallback()
821 …hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; /* Legacy weak ISOINIncompleteCal… in HAL_PCD_UnRegisterIsoInIncpltCallback()
826 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterIsoInIncpltCallback()
833 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterIsoInIncpltCallback()
845 HAL_StatusTypeDef HAL_PCD_RegisterBcdCallback(PCD_HandleTypeDef *hpcd, pPCD_BcdCallbackTypeDef pCal… in HAL_PCD_RegisterBcdCallback() argument
852 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterBcdCallback()
858 __HAL_LOCK(hpcd); in HAL_PCD_RegisterBcdCallback()
860 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterBcdCallback()
862 hpcd->BCDCallback = pCallback; in HAL_PCD_RegisterBcdCallback()
867 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterBcdCallback()
874 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterBcdCallback()
885 HAL_StatusTypeDef HAL_PCD_UnRegisterBcdCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterBcdCallback() argument
890 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterBcdCallback()
892 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterBcdCallback()
894 hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; /* Legacy weak HAL_PCDEx_BCD_Callback */ in HAL_PCD_UnRegisterBcdCallback()
899 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterBcdCallback()
906 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterBcdCallback()
918 HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd, pPCD_LpmCallbackTypeDef pCal… in HAL_PCD_RegisterLpmCallback() argument
925 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterLpmCallback()
931 __HAL_LOCK(hpcd); in HAL_PCD_RegisterLpmCallback()
933 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterLpmCallback()
935 hpcd->LPMCallback = pCallback; in HAL_PCD_RegisterLpmCallback()
940 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterLpmCallback()
947 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterLpmCallback()
958 HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterLpmCallback() argument
963 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterLpmCallback()
965 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterLpmCallback()
967 hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; /* Legacy weak HAL_PCDEx_LPM_Callback */ in HAL_PCD_UnRegisterLpmCallback()
972 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterLpmCallback()
979 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterLpmCallback()
1009 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) in HAL_PCD_Start() argument
1012 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_Start()
1015 __HAL_LOCK(hpcd); in HAL_PCD_Start()
1017 if (hpcd->Init.battery_charging_enable == 1U) in HAL_PCD_Start()
1023 __HAL_PCD_ENABLE(hpcd); in HAL_PCD_Start()
1024 (void)USB_DevConnect(hpcd->Instance); in HAL_PCD_Start()
1025 __HAL_UNLOCK(hpcd); in HAL_PCD_Start()
1035 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd) in HAL_PCD_Stop() argument
1038 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_Stop()
1041 __HAL_LOCK(hpcd); in HAL_PCD_Stop()
1042 __HAL_PCD_DISABLE(hpcd); in HAL_PCD_Stop()
1043 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_Stop()
1046 (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); in HAL_PCD_Stop()
1048 if (hpcd->Init.battery_charging_enable == 1U) in HAL_PCD_Stop()
1055 __HAL_UNLOCK(hpcd); in HAL_PCD_Stop()
1066 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) in HAL_PCD_IRQHandler() argument
1068 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_IRQHandler()
1079 if (USB_GetMode(hpcd->Instance) == USB_OTG_MODE_DEVICE) in HAL_PCD_IRQHandler()
1082 if (__HAL_PCD_IS_INVALID_INTERRUPT(hpcd)) in HAL_PCD_IRQHandler()
1088 hpcd->FrameNumber = (USBx_DEVICE->DSTS & USB_OTG_DSTS_FNSOF_Msk) >> USB_OTG_DSTS_FNSOF_Pos; in HAL_PCD_IRQHandler()
1090 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_MMIS)) in HAL_PCD_IRQHandler()
1093 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS); in HAL_PCD_IRQHandler()
1097 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL)) in HAL_PCD_IRQHandler()
1099 USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_PCD_IRQHandler()
1103 ep = &hpcd->OUT_ep[RegVal & USB_OTG_GRXSTSP_EPNUM]; in HAL_PCD_IRQHandler()
1118 (void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U); in HAL_PCD_IRQHandler()
1126 USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_PCD_IRQHandler()
1129 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT)) in HAL_PCD_IRQHandler()
1134 ep_intr = USB_ReadDevAllOutEpInterrupt(hpcd->Instance); in HAL_PCD_IRQHandler()
1140 epint = USB_ReadDevOutEPInterrupt(hpcd->Instance, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1145 (void)PCD_EP_OutXfrComplete_int(hpcd, epnum); in HAL_PCD_IRQHandler()
1152 (void)PCD_EP_OutSetupPacket_int(hpcd, epnum); in HAL_PCD_IRQHandler()
1168 ep = &hpcd->OUT_ep[epnum]; in HAL_PCD_IRQHandler()
1175 hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1177 HAL_PCD_ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1201 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IEPINT)) in HAL_PCD_IRQHandler()
1204 ep_intr = USB_ReadDevAllInEpInterrupt(hpcd->Instance); in HAL_PCD_IRQHandler()
1212 epint = USB_ReadDevInEPInterrupt(hpcd->Instance, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1222 hpcd->DataInStageCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1224 HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1243 ep = &hpcd->IN_ep[epnum]; in HAL_PCD_IRQHandler()
1250 hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1252 HAL_PCD_ISOINIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1260 (void)PCD_WriteEmptyTxFifo(hpcd, epnum); in HAL_PCD_IRQHandler()
1269 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT)) in HAL_PCD_IRQHandler()
1274 if (hpcd->LPM_State == LPM_L1) in HAL_PCD_IRQHandler()
1276 hpcd->LPM_State = LPM_L0; in HAL_PCD_IRQHandler()
1279 hpcd->LPMCallback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1281 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1287 hpcd->ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1289 HAL_PCD_ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1293 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT); in HAL_PCD_IRQHandler()
1297 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP)) in HAL_PCD_IRQHandler()
1302 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1304 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1307 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP); in HAL_PCD_IRQHandler()
1311 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_LPMINT)) in HAL_PCD_IRQHandler()
1313 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_LPMINT); in HAL_PCD_IRQHandler()
1315 if (hpcd->LPM_State == LPM_L0) in HAL_PCD_IRQHandler()
1317 hpcd->LPM_State = LPM_L1; in HAL_PCD_IRQHandler()
1318 hpcd->BESL = (hpcd->Instance->GLPMCFG & USB_OTG_GLPMCFG_BESL) >> 2U; in HAL_PCD_IRQHandler()
1321 hpcd->LPMCallback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1323 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1329 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1331 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1337 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBRST)) in HAL_PCD_IRQHandler()
1340 (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); in HAL_PCD_IRQHandler()
1342 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_IRQHandler()
1352 if (hpcd->Init.use_dedicated_ep1 != 0U) in HAL_PCD_IRQHandler()
1379 (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); in HAL_PCD_IRQHandler()
1381 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBRST); in HAL_PCD_IRQHandler()
1385 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE)) in HAL_PCD_IRQHandler()
1387 (void)USB_ActivateSetup(hpcd->Instance); in HAL_PCD_IRQHandler()
1388 hpcd->Init.speed = USB_GetDevSpeed(hpcd->Instance); in HAL_PCD_IRQHandler()
1391 (void)USB_SetTurnaroundTime(hpcd->Instance, in HAL_PCD_IRQHandler()
1393 (uint8_t)hpcd->Init.speed); in HAL_PCD_IRQHandler()
1396 hpcd->ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1398 HAL_PCD_ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1401 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE); in HAL_PCD_IRQHandler()
1405 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF)) in HAL_PCD_IRQHandler()
1408 hpcd->SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1410 HAL_PCD_SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1413 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SOF); in HAL_PCD_IRQHandler()
1417 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_BOUTNAKEFF)) in HAL_PCD_IRQHandler()
1421 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1423 if (hpcd->OUT_ep[epnum].is_iso_incomplete == 1U) in HAL_PCD_IRQHandler()
1426 (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1432 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR)) in HAL_PCD_IRQHandler()
1434 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1438 if ((hpcd->IN_ep[epnum].type == EP_TYPE_ISOC) && in HAL_PCD_IRQHandler()
1441 hpcd->IN_ep[epnum].is_iso_incomplete = 1U; in HAL_PCD_IRQHandler()
1444 (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)(epnum | 0x80U)); in HAL_PCD_IRQHandler()
1448 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR); in HAL_PCD_IRQHandler()
1452 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) in HAL_PCD_IRQHandler()
1454 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1458 if ((hpcd->OUT_ep[epnum].type == EP_TYPE_ISOC) && in HAL_PCD_IRQHandler()
1460 ((RegVal & (0x1U << 16)) == (hpcd->FrameNumber & 0x1U))) in HAL_PCD_IRQHandler()
1462 hpcd->OUT_ep[epnum].is_iso_incomplete = 1U; in HAL_PCD_IRQHandler()
1474 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); in HAL_PCD_IRQHandler()
1478 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT)) in HAL_PCD_IRQHandler()
1481 hpcd->ConnectCallback(hpcd); in HAL_PCD_IRQHandler()
1483 HAL_PCD_ConnectCallback(hpcd); in HAL_PCD_IRQHandler()
1486 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT); in HAL_PCD_IRQHandler()
1490 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OTGINT)) in HAL_PCD_IRQHandler()
1492 RegVal = hpcd->Instance->GOTGINT; in HAL_PCD_IRQHandler()
1497 hpcd->DisconnectCallback(hpcd); in HAL_PCD_IRQHandler()
1499 HAL_PCD_DisconnectCallback(hpcd); in HAL_PCD_IRQHandler()
1502 hpcd->Instance->GOTGINT |= RegVal; in HAL_PCD_IRQHandler()
1514 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) in HAL_PCD_IRQHandler() argument
1516 uint32_t wIstr = USB_ReadInterrupts(hpcd->Instance); in HAL_PCD_IRQHandler()
1522 (void)PCD_EP_ISR_Handler(hpcd); in HAL_PCD_IRQHandler()
1529 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); in HAL_PCD_IRQHandler()
1532 hpcd->ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1534 HAL_PCD_ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1537 (void)HAL_PCD_SetAddress(hpcd, 0U); in HAL_PCD_IRQHandler()
1544 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); in HAL_PCD_IRQHandler()
1551 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); in HAL_PCD_IRQHandler()
1558 hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LPMODE); in HAL_PCD_IRQHandler()
1559 hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP); in HAL_PCD_IRQHandler()
1561 if (hpcd->LPM_State == LPM_L1) in HAL_PCD_IRQHandler()
1563 hpcd->LPM_State = LPM_L0; in HAL_PCD_IRQHandler()
1565 hpcd->LPMCallback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1567 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1572 hpcd->ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1574 HAL_PCD_ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1577 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); in HAL_PCD_IRQHandler()
1585 hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP; in HAL_PCD_IRQHandler()
1588 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); in HAL_PCD_IRQHandler()
1590 hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LPMODE; in HAL_PCD_IRQHandler()
1593 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1595 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1604 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_L1REQ); in HAL_PCD_IRQHandler()
1605 if (hpcd->LPM_State == LPM_L0) in HAL_PCD_IRQHandler()
1608 hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LPMODE; in HAL_PCD_IRQHandler()
1609 hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP; in HAL_PCD_IRQHandler()
1611 hpcd->LPM_State = LPM_L1; in HAL_PCD_IRQHandler()
1612 hpcd->BESL = ((uint32_t)hpcd->Instance->LPMCSR & USB_LPMCSR_BESL) >> 2; in HAL_PCD_IRQHandler()
1614 hpcd->LPMCallback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1616 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1622 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1624 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1633 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); in HAL_PCD_IRQHandler()
1636 hpcd->SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1638 HAL_PCD_SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1647 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); in HAL_PCD_IRQHandler()
1660 __weak void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_DataOutStageCallback() argument
1663 UNUSED(hpcd); in HAL_PCD_DataOutStageCallback()
1677 __weak void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_DataInStageCallback() argument
1680 UNUSED(hpcd); in HAL_PCD_DataInStageCallback()
1692 __weak void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SetupStageCallback() argument
1695 UNUSED(hpcd); in HAL_PCD_SetupStageCallback()
1707 __weak void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SOFCallback() argument
1710 UNUSED(hpcd); in HAL_PCD_SOFCallback()
1722 __weak void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ResetCallback() argument
1725 UNUSED(hpcd); in HAL_PCD_ResetCallback()
1737 __weak void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SuspendCallback() argument
1740 UNUSED(hpcd); in HAL_PCD_SuspendCallback()
1752 __weak void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ResumeCallback() argument
1755 UNUSED(hpcd); in HAL_PCD_ResumeCallback()
1768 __weak void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_ISOOUTIncompleteCallback() argument
1771 UNUSED(hpcd); in HAL_PCD_ISOOUTIncompleteCallback()
1785 __weak void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_ISOINIncompleteCallback() argument
1788 UNUSED(hpcd); in HAL_PCD_ISOINIncompleteCallback()
1801 __weak void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ConnectCallback() argument
1804 UNUSED(hpcd); in HAL_PCD_ConnectCallback()
1816 __weak void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_DisconnectCallback() argument
1819 UNUSED(hpcd); in HAL_PCD_DisconnectCallback()
1850 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd) in HAL_PCD_DevConnect() argument
1853 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_DevConnect()
1856 __HAL_LOCK(hpcd); in HAL_PCD_DevConnect()
1859 if (hpcd->Init.battery_charging_enable == 1U) in HAL_PCD_DevConnect()
1866 (void)USB_DevConnect(hpcd->Instance); in HAL_PCD_DevConnect()
1867 __HAL_UNLOCK(hpcd); in HAL_PCD_DevConnect()
1877 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd) in HAL_PCD_DevDisconnect() argument
1880 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_DevDisconnect()
1883 __HAL_LOCK(hpcd); in HAL_PCD_DevDisconnect()
1884 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_DevDisconnect()
1887 if (hpcd->Init.battery_charging_enable == 1U) in HAL_PCD_DevDisconnect()
1894 __HAL_UNLOCK(hpcd); in HAL_PCD_DevDisconnect()
1905 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) in HAL_PCD_SetAddress() argument
1907 __HAL_LOCK(hpcd); in HAL_PCD_SetAddress()
1908 hpcd->USB_Address = address; in HAL_PCD_SetAddress()
1909 (void)USB_SetDevAddress(hpcd->Instance, address); in HAL_PCD_SetAddress()
1910 __HAL_UNLOCK(hpcd); in HAL_PCD_SetAddress()
1922 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, in HAL_PCD_EP_Open() argument
1930 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Open()
1935 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Open()
1957 __HAL_LOCK(hpcd); in HAL_PCD_EP_Open()
1958 (void)USB_ActivateEndpoint(hpcd->Instance, ep); in HAL_PCD_EP_Open()
1959 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Open()
1970 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Close() argument
1976 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Close()
1981 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Close()
1986 __HAL_LOCK(hpcd); in HAL_PCD_EP_Close()
1987 (void)USB_DeactivateEndpoint(hpcd->Instance, ep); in HAL_PCD_EP_Close()
1988 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Close()
2001 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint3… in HAL_PCD_EP_Receive() argument
2005 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Receive()
2014 (void)USB_EPStartXfer(hpcd->Instance, ep); in HAL_PCD_EP_Receive()
2025 uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr) in HAL_PCD_EP_GetRxCount() argument
2027 return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; in HAL_PCD_EP_GetRxCount()
2037 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint… in HAL_PCD_EP_Transmit() argument
2041 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Transmit()
2054 (void)USB_EPStartXfer(hpcd->Instance, ep); in HAL_PCD_EP_Transmit()
2065 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_SetStall() argument
2069 if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) in HAL_PCD_EP_SetStall()
2076 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_SetStall()
2081 ep = &hpcd->OUT_ep[ep_addr]; in HAL_PCD_EP_SetStall()
2088 __HAL_LOCK(hpcd); in HAL_PCD_EP_SetStall()
2090 (void)USB_EPSetStall(hpcd->Instance, ep); in HAL_PCD_EP_SetStall()
2094 (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); in HAL_PCD_EP_SetStall()
2097 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_SetStall()
2108 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_ClrStall() argument
2112 if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) in HAL_PCD_EP_ClrStall()
2119 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_ClrStall()
2124 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_ClrStall()
2131 __HAL_LOCK(hpcd); in HAL_PCD_EP_ClrStall()
2132 (void)USB_EPClearStall(hpcd->Instance, ep); in HAL_PCD_EP_ClrStall()
2133 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_ClrStall()
2144 HAL_StatusTypeDef HAL_PCD_EP_Abort(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Abort() argument
2151 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Abort()
2155 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Abort()
2159 ret = USB_EPStopXfer(hpcd->Instance, ep); in HAL_PCD_EP_Abort()
2170 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Flush() argument
2172 __HAL_LOCK(hpcd); in HAL_PCD_EP_Flush()
2176 (void)USB_FlushTxFifo(hpcd->Instance, (uint32_t)ep_addr & EP_ADDR_MSK); in HAL_PCD_EP_Flush()
2180 (void)USB_FlushRxFifo(hpcd->Instance); in HAL_PCD_EP_Flush()
2183 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Flush()
2193 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) in HAL_PCD_ActivateRemoteWakeup() argument
2195 return (USB_ActivateRemoteWakeup(hpcd->Instance)); in HAL_PCD_ActivateRemoteWakeup()
2203 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) in HAL_PCD_DeActivateRemoteWakeup() argument
2205 return (USB_DeActivateRemoteWakeup(hpcd->Instance)); in HAL_PCD_DeActivateRemoteWakeup()
2232 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef const *hpcd) in HAL_PCD_GetState() argument
2234 return hpcd->State; in HAL_PCD_GetState()
2256 static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_WriteEmptyTxFifo() argument
2258 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_WriteEmptyTxFifo()
2265 ep = &hpcd->IN_ep[epnum]; in PCD_WriteEmptyTxFifo()
2315 static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_EP_OutXfrComplete_int() argument
2317 const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_EP_OutXfrComplete_int()
2337 hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2339 HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2346 hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2348 HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2362 static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_EP_OutSetupPacket_int() argument
2364 const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_EP_OutSetupPacket_int()
2377 hpcd->SetupStageCallback(hpcd); in PCD_EP_OutSetupPacket_int()
2379 HAL_PCD_SetupStageCallback(hpcd); in PCD_EP_OutSetupPacket_int()
2392 static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) in PCD_EP_ISR_Handler() argument
2406 while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) in PCD_EP_ISR_Handler()
2408 wIstr = hpcd->Instance->ISTR; in PCD_EP_ISR_Handler()
2424 PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2425 ep = &hpcd->IN_ep[0]; in PCD_EP_ISR_Handler()
2427 ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2432 hpcd->DataInStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
2434 HAL_PCD_DataInStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
2437 if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) in PCD_EP_ISR_Handler()
2439 hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); in PCD_EP_ISR_Handler()
2440 hpcd->USB_Address = 0U; in PCD_EP_ISR_Handler()
2449 ep = &hpcd->OUT_ep[0]; in PCD_EP_ISR_Handler()
2450 wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2455 ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2457 USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, in PCD_EP_ISR_Handler()
2461 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2465 hpcd->SetupStageCallback(hpcd); in PCD_EP_ISR_Handler()
2467 HAL_PCD_SetupStageCallback(hpcd); in PCD_EP_ISR_Handler()
2472 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2475 ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2479 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, in PCD_EP_ISR_Handler()
2486 hpcd->DataOutStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
2488 HAL_PCD_DataOutStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
2492 wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2496 PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); in PCD_EP_ISR_Handler()
2505 wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
2510 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
2511 ep = &hpcd->OUT_ep[epindex]; in PCD_EP_ISR_Handler()
2516 count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2520 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); in PCD_EP_ISR_Handler()
2529 count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); in PCD_EP_ISR_Handler()
2534 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in PCD_EP_ISR_Handler()
2536 if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) in PCD_EP_ISR_Handler()
2539 count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2543 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); in PCD_EP_ISR_Handler()
2549 count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2553 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); in PCD_EP_ISR_Handler()
2568 hpcd->DataOutStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2570 HAL_PCD_DataOutStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2575 (void)USB_EPStartXfer(hpcd->Instance, ep); in PCD_EP_ISR_Handler()
2581 ep = &hpcd->IN_ep[epindex]; in PCD_EP_ISR_Handler()
2584 PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
2595 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in PCD_EP_ISR_Handler()
2599 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in PCD_EP_ISR_Handler()
2606 hpcd->DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2608 HAL_PCD_DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2617 TxPctSize = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2633 hpcd->DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2635 HAL_PCD_DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2643 (void)USB_EPStartXfer(hpcd->Instance, ep); in PCD_EP_ISR_Handler()
2650 (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); in PCD_EP_ISR_Handler()
2670 static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, in HAL_PCD_EP_DB_Receive() argument
2679 count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Receive()
2693 PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); in HAL_PCD_EP_DB_Receive()
2699 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in HAL_PCD_EP_DB_Receive()
2704 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); in HAL_PCD_EP_DB_Receive()
2711 count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Receive()
2725 PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); in HAL_PCD_EP_DB_Receive()
2731 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in HAL_PCD_EP_DB_Receive()
2736 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); in HAL_PCD_EP_DB_Receive()
2751 static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, in HAL_PCD_EP_DB_Transmit() argument
2761 TxPctSize = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Transmit()
2775 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2776 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2781 PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_NAK); in HAL_PCD_EP_DB_Transmit()
2786 hpcd->DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2788 HAL_PCD_DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2793 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2803 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2832 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); in HAL_PCD_EP_DB_Transmit()
2835 USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); in HAL_PCD_EP_DB_Transmit()
2842 TxPctSize = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Transmit()
2856 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2857 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2862 PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_NAK); in HAL_PCD_EP_DB_Transmit()
2867 hpcd->DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2869 HAL_PCD_DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2875 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2885 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2913 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); in HAL_PCD_EP_DB_Transmit()
2916 USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); in HAL_PCD_EP_DB_Transmit()
2922 PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); in HAL_PCD_EP_DB_Transmit()