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);
123 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) in HAL_PCD_Init() argument
131 if (hpcd == NULL) in HAL_PCD_Init()
137 assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); in HAL_PCD_Init()
140 USBx = hpcd->Instance; in HAL_PCD_Init()
143 if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_Init()
146 hpcd->Lock = HAL_UNLOCKED; in HAL_PCD_Init()
149 hpcd->SOFCallback = HAL_PCD_SOFCallback; in HAL_PCD_Init()
150 hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; in HAL_PCD_Init()
151 hpcd->ResetCallback = HAL_PCD_ResetCallback; in HAL_PCD_Init()
152 hpcd->SuspendCallback = HAL_PCD_SuspendCallback; in HAL_PCD_Init()
153 hpcd->ResumeCallback = HAL_PCD_ResumeCallback; in HAL_PCD_Init()
154 hpcd->ConnectCallback = HAL_PCD_ConnectCallback; in HAL_PCD_Init()
155 hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; in HAL_PCD_Init()
156 hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; in HAL_PCD_Init()
157 hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; in HAL_PCD_Init()
158 hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; in HAL_PCD_Init()
159 hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; in HAL_PCD_Init()
161 if (hpcd->MspInitCallback == NULL) in HAL_PCD_Init()
163 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_Init()
167 hpcd->MspInitCallback(hpcd); in HAL_PCD_Init()
170 HAL_PCD_MspInit(hpcd); in HAL_PCD_Init()
174 hpcd->State = HAL_PCD_STATE_BUSY; in HAL_PCD_Init()
180 hpcd->Init.dma_enable = 0U; in HAL_PCD_Init()
185 __HAL_PCD_DISABLE(hpcd); in HAL_PCD_Init()
188 if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) in HAL_PCD_Init()
190 hpcd->State = HAL_PCD_STATE_ERROR; in HAL_PCD_Init()
195 if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK) in HAL_PCD_Init()
197 hpcd->State = HAL_PCD_STATE_ERROR; in HAL_PCD_Init()
202 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_Init()
205 hpcd->IN_ep[i].is_in = 1U; in HAL_PCD_Init()
206 hpcd->IN_ep[i].num = i; in HAL_PCD_Init()
207 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()
235 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_Init()
245 HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_DeInit() argument
248 if (hpcd == NULL) in HAL_PCD_DeInit()
253 hpcd->State = HAL_PCD_STATE_BUSY; in HAL_PCD_DeInit()
256 if (USB_StopDevice(hpcd->Instance) != HAL_OK) in HAL_PCD_DeInit()
262 if (hpcd->MspDeInitCallback == NULL) in HAL_PCD_DeInit()
264 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; /* Legacy weak MspDeInit */ in HAL_PCD_DeInit()
268 hpcd->MspDeInitCallback(hpcd); in HAL_PCD_DeInit()
271 HAL_PCD_MspDeInit(hpcd); in HAL_PCD_DeInit()
274 hpcd->State = HAL_PCD_STATE_RESET; in HAL_PCD_DeInit()
284 __weak void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_MspInit() argument
287 UNUSED(hpcd); in HAL_PCD_MspInit()
299 __weak void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_MspDeInit() argument
302 UNUSED(hpcd); in HAL_PCD_MspDeInit()
328 HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterCallback() argument
337 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
341 __HAL_LOCK(hpcd); in HAL_PCD_RegisterCallback()
343 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterCallback()
348 hpcd->SOFCallback = pCallback; in HAL_PCD_RegisterCallback()
352 hpcd->SetupStageCallback = pCallback; in HAL_PCD_RegisterCallback()
356 hpcd->ResetCallback = pCallback; in HAL_PCD_RegisterCallback()
360 hpcd->SuspendCallback = pCallback; in HAL_PCD_RegisterCallback()
364 hpcd->ResumeCallback = pCallback; in HAL_PCD_RegisterCallback()
368 hpcd->ConnectCallback = pCallback; in HAL_PCD_RegisterCallback()
372 hpcd->DisconnectCallback = pCallback; in HAL_PCD_RegisterCallback()
376 hpcd->MspInitCallback = pCallback; in HAL_PCD_RegisterCallback()
380 hpcd->MspDeInitCallback = pCallback; in HAL_PCD_RegisterCallback()
385 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
391 else if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_RegisterCallback()
396 hpcd->MspInitCallback = pCallback; in HAL_PCD_RegisterCallback()
400 hpcd->MspDeInitCallback = pCallback; in HAL_PCD_RegisterCallback()
405 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
414 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
420 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterCallback()
441 HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef Cal… in HAL_PCD_UnRegisterCallback() argument
446 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterCallback()
449 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterCallback()
454 hpcd->SOFCallback = HAL_PCD_SOFCallback; in HAL_PCD_UnRegisterCallback()
458 hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; in HAL_PCD_UnRegisterCallback()
462 hpcd->ResetCallback = HAL_PCD_ResetCallback; in HAL_PCD_UnRegisterCallback()
466 hpcd->SuspendCallback = HAL_PCD_SuspendCallback; in HAL_PCD_UnRegisterCallback()
470 hpcd->ResumeCallback = HAL_PCD_ResumeCallback; in HAL_PCD_UnRegisterCallback()
474 hpcd->ConnectCallback = HAL_PCD_ConnectCallback; in HAL_PCD_UnRegisterCallback()
478 hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; in HAL_PCD_UnRegisterCallback()
482 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_UnRegisterCallback()
486 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; in HAL_PCD_UnRegisterCallback()
491 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
498 else if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_UnRegisterCallback()
503 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_UnRegisterCallback()
507 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; in HAL_PCD_UnRegisterCallback()
512 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
522 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
529 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterCallback()
540 HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterDataOutStageCallback() argument
548 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataOutStageCallback()
554 __HAL_LOCK(hpcd); in HAL_PCD_RegisterDataOutStageCallback()
556 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterDataOutStageCallback()
558 hpcd->DataOutStageCallback = pCallback; in HAL_PCD_RegisterDataOutStageCallback()
563 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataOutStageCallback()
570 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterDataOutStageCallback()
581 HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterDataOutStageCallback() argument
586 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterDataOutStageCallback()
588 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterDataOutStageCallback()
590hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; /* Legacy weak DataOutStageCallback */ in HAL_PCD_UnRegisterDataOutStageCallback()
595 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterDataOutStageCallback()
602 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterDataOutStageCallback()
614 HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterDataInStageCallback() argument
622 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataInStageCallback()
628 __HAL_LOCK(hpcd); in HAL_PCD_RegisterDataInStageCallback()
630 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterDataInStageCallback()
632 hpcd->DataInStageCallback = pCallback; in HAL_PCD_RegisterDataInStageCallback()
637 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataInStageCallback()
644 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterDataInStageCallback()
655 HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterDataInStageCallback() argument
660 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterDataInStageCallback()
662 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterDataInStageCallback()
664 hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; /* Legacy weak DataInStageCallback */ in HAL_PCD_UnRegisterDataInStageCallback()
669 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterDataInStageCallback()
676 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterDataInStageCallback()
688 HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterIsoOutIncpltCallback() argument
696 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoOutIncpltCallback()
702 __HAL_LOCK(hpcd); in HAL_PCD_RegisterIsoOutIncpltCallback()
704 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterIsoOutIncpltCallback()
706 hpcd->ISOOUTIncompleteCallback = pCallback; in HAL_PCD_RegisterIsoOutIncpltCallback()
711 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoOutIncpltCallback()
718 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterIsoOutIncpltCallback()
730 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterIsoOutIncpltCallback() argument
735 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterIsoOutIncpltCallback()
737 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterIsoOutIncpltCallback()
739hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; /* Legacy weak ISOOUTIncomplete… in HAL_PCD_UnRegisterIsoOutIncpltCallback()
744 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterIsoOutIncpltCallback()
751 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterIsoOutIncpltCallback()
763 HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterIsoInIncpltCallback() argument
771 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoInIncpltCallback()
777 __HAL_LOCK(hpcd); in HAL_PCD_RegisterIsoInIncpltCallback()
779 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterIsoInIncpltCallback()
781 hpcd->ISOINIncompleteCallback = pCallback; in HAL_PCD_RegisterIsoInIncpltCallback()
786 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoInIncpltCallback()
793 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterIsoInIncpltCallback()
805 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterIsoInIncpltCallback() argument
810 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterIsoInIncpltCallback()
812 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterIsoInIncpltCallback()
814hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; /* Legacy weak ISOINIncompleteCal… in HAL_PCD_UnRegisterIsoInIncpltCallback()
819 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterIsoInIncpltCallback()
826 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterIsoInIncpltCallback()
857 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) in HAL_PCD_Start() argument
859 __HAL_LOCK(hpcd); in HAL_PCD_Start()
860 __HAL_PCD_ENABLE(hpcd); in HAL_PCD_Start()
861 (void)USB_DevConnect(hpcd->Instance); in HAL_PCD_Start()
862 __HAL_UNLOCK(hpcd); in HAL_PCD_Start()
872 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd) in HAL_PCD_Stop() argument
874 __HAL_LOCK(hpcd); in HAL_PCD_Stop()
875 __HAL_PCD_DISABLE(hpcd); in HAL_PCD_Stop()
876 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_Stop()
878 (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); in HAL_PCD_Stop()
880 __HAL_UNLOCK(hpcd); in HAL_PCD_Stop()
891 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) in HAL_PCD_IRQHandler() argument
893 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_IRQHandler()
904 if (USB_GetMode(hpcd->Instance) == USB_OTG_MODE_DEVICE) in HAL_PCD_IRQHandler()
907 if (__HAL_PCD_IS_INVALID_INTERRUPT(hpcd)) in HAL_PCD_IRQHandler()
913 hpcd->FrameNumber = (USBx_DEVICE->DSTS & USB_OTG_DSTS_FNSOF_Msk) >> USB_OTG_DSTS_FNSOF_Pos; in HAL_PCD_IRQHandler()
915 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_MMIS)) in HAL_PCD_IRQHandler()
918 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS); in HAL_PCD_IRQHandler()
922 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL)) in HAL_PCD_IRQHandler()
924 USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_PCD_IRQHandler()
928 ep = &hpcd->OUT_ep[RegVal & USB_OTG_GRXSTSP_EPNUM]; in HAL_PCD_IRQHandler()
943 (void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U); in HAL_PCD_IRQHandler()
951 USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_PCD_IRQHandler()
954 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT)) in HAL_PCD_IRQHandler()
959 ep_intr = USB_ReadDevAllOutEpInterrupt(hpcd->Instance); in HAL_PCD_IRQHandler()
965 epint = USB_ReadDevOutEPInterrupt(hpcd->Instance, (uint8_t)epnum); in HAL_PCD_IRQHandler()
970 (void)PCD_EP_OutXfrComplete_int(hpcd, epnum); in HAL_PCD_IRQHandler()
977 (void)PCD_EP_OutSetupPacket_int(hpcd, epnum); in HAL_PCD_IRQHandler()
993 ep = &hpcd->OUT_ep[epnum]; in HAL_PCD_IRQHandler()
1000 hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1002 HAL_PCD_ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1026 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IEPINT)) in HAL_PCD_IRQHandler()
1029 ep_intr = USB_ReadDevAllInEpInterrupt(hpcd->Instance); in HAL_PCD_IRQHandler()
1037 epint = USB_ReadDevInEPInterrupt(hpcd->Instance, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1046 if (hpcd->Init.dma_enable == 1U) in HAL_PCD_IRQHandler()
1048 hpcd->IN_ep[epnum].xfer_buff += hpcd->IN_ep[epnum].maxpacket; in HAL_PCD_IRQHandler()
1051 if ((epnum == 0U) && (hpcd->IN_ep[epnum].xfer_len == 0U)) in HAL_PCD_IRQHandler()
1054 (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); in HAL_PCD_IRQHandler()
1059 hpcd->DataInStageCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1061 HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1080 ep = &hpcd->IN_ep[epnum]; in HAL_PCD_IRQHandler()
1087 hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1089 HAL_PCD_ISOINIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1097 (void)PCD_WriteEmptyTxFifo(hpcd, epnum); in HAL_PCD_IRQHandler()
1106 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT)) in HAL_PCD_IRQHandler()
1112 hpcd->ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1114 HAL_PCD_ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1117 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT); in HAL_PCD_IRQHandler()
1121 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP)) in HAL_PCD_IRQHandler()
1126 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1128 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1131 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP); in HAL_PCD_IRQHandler()
1134 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBRST)) in HAL_PCD_IRQHandler()
1137 (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); in HAL_PCD_IRQHandler()
1139 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_IRQHandler()
1149 if (hpcd->Init.use_dedicated_ep1 != 0U) in HAL_PCD_IRQHandler()
1176 (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t)hpcd->Init.dma_enable, in HAL_PCD_IRQHandler()
1177 (uint8_t *)hpcd->Setup); in HAL_PCD_IRQHandler()
1179 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBRST); in HAL_PCD_IRQHandler()
1183 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE)) in HAL_PCD_IRQHandler()
1185 (void)USB_ActivateSetup(hpcd->Instance); in HAL_PCD_IRQHandler()
1186 hpcd->Init.speed = USB_GetDevSpeed(hpcd->Instance); in HAL_PCD_IRQHandler()
1189 (void)USB_SetTurnaroundTime(hpcd->Instance, in HAL_PCD_IRQHandler()
1191 (uint8_t)hpcd->Init.speed); in HAL_PCD_IRQHandler()
1194 hpcd->ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1196 HAL_PCD_ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1199 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE); in HAL_PCD_IRQHandler()
1203 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF)) in HAL_PCD_IRQHandler()
1206 hpcd->SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1208 HAL_PCD_SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1211 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SOF); in HAL_PCD_IRQHandler()
1215 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_BOUTNAKEFF)) in HAL_PCD_IRQHandler()
1219 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1221 if (hpcd->OUT_ep[epnum].is_iso_incomplete == 1U) in HAL_PCD_IRQHandler()
1224 (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1230 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR)) in HAL_PCD_IRQHandler()
1232 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1236 if ((hpcd->IN_ep[epnum].type == EP_TYPE_ISOC) && in HAL_PCD_IRQHandler()
1239 hpcd->IN_ep[epnum].is_iso_incomplete = 1U; in HAL_PCD_IRQHandler()
1242 (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)(epnum | 0x80U)); in HAL_PCD_IRQHandler()
1246 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR); in HAL_PCD_IRQHandler()
1250 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) in HAL_PCD_IRQHandler()
1252 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1256 if ((hpcd->OUT_ep[epnum].type == EP_TYPE_ISOC) && in HAL_PCD_IRQHandler()
1258 ((RegVal & (0x1U << 16)) == (hpcd->FrameNumber & 0x1U))) in HAL_PCD_IRQHandler()
1260 hpcd->OUT_ep[epnum].is_iso_incomplete = 1U; in HAL_PCD_IRQHandler()
1272 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); in HAL_PCD_IRQHandler()
1276 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT)) in HAL_PCD_IRQHandler()
1279 hpcd->ConnectCallback(hpcd); in HAL_PCD_IRQHandler()
1281 HAL_PCD_ConnectCallback(hpcd); in HAL_PCD_IRQHandler()
1284 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT); in HAL_PCD_IRQHandler()
1288 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OTGINT)) in HAL_PCD_IRQHandler()
1290 RegVal = hpcd->Instance->GOTGINT; in HAL_PCD_IRQHandler()
1295 hpcd->DisconnectCallback(hpcd); in HAL_PCD_IRQHandler()
1297 HAL_PCD_DisconnectCallback(hpcd); in HAL_PCD_IRQHandler()
1300 hpcd->Instance->GOTGINT |= RegVal; in HAL_PCD_IRQHandler()
1311 void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd) in HAL_PCD_WKUP_IRQHandler() argument
1315 USBx = hpcd->Instance; in HAL_PCD_WKUP_IRQHandler()
1338 __weak void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_DataOutStageCallback() argument
1341 UNUSED(hpcd); in HAL_PCD_DataOutStageCallback()
1355 __weak void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_DataInStageCallback() argument
1358 UNUSED(hpcd); in HAL_PCD_DataInStageCallback()
1370 __weak void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SetupStageCallback() argument
1373 UNUSED(hpcd); in HAL_PCD_SetupStageCallback()
1385 __weak void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SOFCallback() argument
1388 UNUSED(hpcd); in HAL_PCD_SOFCallback()
1400 __weak void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ResetCallback() argument
1403 UNUSED(hpcd); in HAL_PCD_ResetCallback()
1415 __weak void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SuspendCallback() argument
1418 UNUSED(hpcd); in HAL_PCD_SuspendCallback()
1430 __weak void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ResumeCallback() argument
1433 UNUSED(hpcd); in HAL_PCD_ResumeCallback()
1446 __weak void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_ISOOUTIncompleteCallback() argument
1449 UNUSED(hpcd); in HAL_PCD_ISOOUTIncompleteCallback()
1463 __weak void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_ISOINIncompleteCallback() argument
1466 UNUSED(hpcd); in HAL_PCD_ISOINIncompleteCallback()
1479 __weak void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ConnectCallback() argument
1482 UNUSED(hpcd); in HAL_PCD_ConnectCallback()
1494 __weak void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_DisconnectCallback() argument
1497 UNUSED(hpcd); in HAL_PCD_DisconnectCallback()
1528 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd) in HAL_PCD_DevConnect() argument
1530 __HAL_LOCK(hpcd); in HAL_PCD_DevConnect()
1531 (void)USB_DevConnect(hpcd->Instance); in HAL_PCD_DevConnect()
1532 __HAL_UNLOCK(hpcd); in HAL_PCD_DevConnect()
1542 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd) in HAL_PCD_DevDisconnect() argument
1544 __HAL_LOCK(hpcd); in HAL_PCD_DevDisconnect()
1545 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_DevDisconnect()
1546 __HAL_UNLOCK(hpcd); in HAL_PCD_DevDisconnect()
1557 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) in HAL_PCD_SetAddress() argument
1559 __HAL_LOCK(hpcd); in HAL_PCD_SetAddress()
1560 hpcd->USB_Address = address; in HAL_PCD_SetAddress()
1561 (void)USB_SetDevAddress(hpcd->Instance, address); in HAL_PCD_SetAddress()
1562 __HAL_UNLOCK(hpcd); in HAL_PCD_SetAddress()
1574 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, in HAL_PCD_EP_Open() argument
1582 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Open()
1587 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Open()
1607 __HAL_LOCK(hpcd); in HAL_PCD_EP_Open()
1608 (void)USB_ActivateEndpoint(hpcd->Instance, ep); in HAL_PCD_EP_Open()
1609 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Open()
1620 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Close() argument
1626 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Close()
1631 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Close()
1636 __HAL_LOCK(hpcd); in HAL_PCD_EP_Close()
1637 (void)USB_DeactivateEndpoint(hpcd->Instance, ep); in HAL_PCD_EP_Close()
1638 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Close()
1651 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint3… in HAL_PCD_EP_Receive() argument
1655 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Receive()
1664 if (hpcd->Init.dma_enable == 1U) in HAL_PCD_EP_Receive()
1669 (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable); in HAL_PCD_EP_Receive()
1680 uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr) in HAL_PCD_EP_GetRxCount() argument
1682 return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; in HAL_PCD_EP_GetRxCount()
1692 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint… in HAL_PCD_EP_Transmit() argument
1696 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Transmit()
1705 if (hpcd->Init.dma_enable == 1U) in HAL_PCD_EP_Transmit()
1710 (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable); in HAL_PCD_EP_Transmit()
1721 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_SetStall() argument
1725 if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) in HAL_PCD_EP_SetStall()
1732 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_SetStall()
1737 ep = &hpcd->OUT_ep[ep_addr]; in HAL_PCD_EP_SetStall()
1744 __HAL_LOCK(hpcd); in HAL_PCD_EP_SetStall()
1746 (void)USB_EPSetStall(hpcd->Instance, ep); in HAL_PCD_EP_SetStall()
1750 (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t)hpcd->Init.dma_enable, (uint8_t *)hpcd->Setup); in HAL_PCD_EP_SetStall()
1753 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_SetStall()
1764 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_ClrStall() argument
1768 if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) in HAL_PCD_EP_ClrStall()
1775 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_ClrStall()
1780 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_ClrStall()
1787 __HAL_LOCK(hpcd); in HAL_PCD_EP_ClrStall()
1788 (void)USB_EPClearStall(hpcd->Instance, ep); in HAL_PCD_EP_ClrStall()
1789 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_ClrStall()
1800 HAL_StatusTypeDef HAL_PCD_EP_Abort(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Abort() argument
1807 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Abort()
1811 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Abort()
1815 ret = USB_EPStopXfer(hpcd->Instance, ep); in HAL_PCD_EP_Abort()
1826 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Flush() argument
1828 __HAL_LOCK(hpcd); in HAL_PCD_EP_Flush()
1832 (void)USB_FlushTxFifo(hpcd->Instance, (uint32_t)ep_addr & EP_ADDR_MSK); in HAL_PCD_EP_Flush()
1836 (void)USB_FlushRxFifo(hpcd->Instance); in HAL_PCD_EP_Flush()
1839 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Flush()
1849 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) in HAL_PCD_ActivateRemoteWakeup() argument
1851 return (USB_ActivateRemoteWakeup(hpcd->Instance)); in HAL_PCD_ActivateRemoteWakeup()
1859 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) in HAL_PCD_DeActivateRemoteWakeup() argument
1861 return (USB_DeActivateRemoteWakeup(hpcd->Instance)); in HAL_PCD_DeActivateRemoteWakeup()
1888 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef const *hpcd) in HAL_PCD_GetState() argument
1890 return hpcd->State; in HAL_PCD_GetState()
1900 HAL_StatusTypeDef HAL_PCD_SetTestMode(const PCD_HandleTypeDef *hpcd, uint8_t testmode) in HAL_PCD_SetTestMode() argument
1902 const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_SetTestMode()
1941 static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_WriteEmptyTxFifo() argument
1943 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_WriteEmptyTxFifo()
1950 ep = &hpcd->IN_ep[epnum]; in PCD_WriteEmptyTxFifo()
1979 (uint8_t)hpcd->Init.dma_enable); in PCD_WriteEmptyTxFifo()
2001 static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_EP_OutXfrComplete_int() argument
2004 const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_EP_OutXfrComplete_int()
2009 if (hpcd->Init.dma_enable == 1U) in PCD_EP_OutXfrComplete_int()
2034 ep = &hpcd->OUT_ep[epnum]; in PCD_EP_OutXfrComplete_int()
2044 (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); in PCD_EP_OutXfrComplete_int()
2053 hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2055 HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2081 hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2083 HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2089 if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U)) in PCD_EP_OutXfrComplete_int()
2092 (void)USB_EP0_OutStart(hpcd->Instance, 0U, (uint8_t *)hpcd->Setup); in PCD_EP_OutXfrComplete_int()
2096 hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2098 HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2113 static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_EP_OutSetupPacket_int() argument
2115 const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_EP_OutSetupPacket_int()
2128 hpcd->SetupStageCallback(hpcd); in PCD_EP_OutSetupPacket_int()
2130 HAL_PCD_SetupStageCallback(hpcd); in PCD_EP_OutSetupPacket_int()
2133 if ((gSNPSiD > USB_OTG_CORE_ID_300A) && (hpcd->Init.dma_enable == 1U)) in PCD_EP_OutSetupPacket_int()
2135 (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); in PCD_EP_OutSetupPacket_int()