Lines Matching refs:hpcd

92 static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum);
93 static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum);
94 static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum);
98 static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd);
100 static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, PCD_EPTypeDef *ep, uint16_…
101 static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, PCD_EPTypeDef *ep, uint16_t wEPVal);
132 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) in HAL_PCD_Init() argument
140 if (hpcd == NULL) in HAL_PCD_Init()
146 assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); in HAL_PCD_Init()
149 USBx = hpcd->Instance; in HAL_PCD_Init()
152 if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_Init()
155 hpcd->Lock = HAL_UNLOCKED; in HAL_PCD_Init()
158 hpcd->SOFCallback = HAL_PCD_SOFCallback; in HAL_PCD_Init()
159 hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; in HAL_PCD_Init()
160 hpcd->ResetCallback = HAL_PCD_ResetCallback; in HAL_PCD_Init()
161 hpcd->SuspendCallback = HAL_PCD_SuspendCallback; in HAL_PCD_Init()
162 hpcd->ResumeCallback = HAL_PCD_ResumeCallback; in HAL_PCD_Init()
163 hpcd->ConnectCallback = HAL_PCD_ConnectCallback; in HAL_PCD_Init()
164 hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; in HAL_PCD_Init()
165 hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; in HAL_PCD_Init()
166 hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; in HAL_PCD_Init()
167 hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; in HAL_PCD_Init()
168 hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; in HAL_PCD_Init()
169 hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; in HAL_PCD_Init()
170 hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; in HAL_PCD_Init()
172 if (hpcd->MspInitCallback == NULL) in HAL_PCD_Init()
174 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_Init()
178 hpcd->MspInitCallback(hpcd); in HAL_PCD_Init()
181 HAL_PCD_MspInit(hpcd); in HAL_PCD_Init()
185 hpcd->State = HAL_PCD_STATE_BUSY; in HAL_PCD_Init()
191 hpcd->Init.dma_enable = 0U; in HAL_PCD_Init()
196 __HAL_PCD_DISABLE(hpcd); in HAL_PCD_Init()
199 if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) in HAL_PCD_Init()
201 hpcd->State = HAL_PCD_STATE_ERROR; in HAL_PCD_Init()
206 if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK) in HAL_PCD_Init()
208 hpcd->State = HAL_PCD_STATE_ERROR; in HAL_PCD_Init()
213 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_Init()
216 hpcd->IN_ep[i].is_in = 1U; in HAL_PCD_Init()
217 hpcd->IN_ep[i].num = i; in HAL_PCD_Init()
219 hpcd->IN_ep[i].tx_fifo_num = i; in HAL_PCD_Init()
222 hpcd->IN_ep[i].type = EP_TYPE_CTRL; in HAL_PCD_Init()
223 hpcd->IN_ep[i].maxpacket = 0U; in HAL_PCD_Init()
224 hpcd->IN_ep[i].xfer_buff = 0U; in HAL_PCD_Init()
225 hpcd->IN_ep[i].xfer_len = 0U; in HAL_PCD_Init()
228 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_Init()
230 hpcd->OUT_ep[i].is_in = 0U; in HAL_PCD_Init()
231 hpcd->OUT_ep[i].num = i; in HAL_PCD_Init()
233 hpcd->OUT_ep[i].type = EP_TYPE_CTRL; in HAL_PCD_Init()
234 hpcd->OUT_ep[i].maxpacket = 0U; in HAL_PCD_Init()
235 hpcd->OUT_ep[i].xfer_buff = 0U; in HAL_PCD_Init()
236 hpcd->OUT_ep[i].xfer_len = 0U; in HAL_PCD_Init()
240 if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) in HAL_PCD_Init()
242 hpcd->State = HAL_PCD_STATE_ERROR; in HAL_PCD_Init()
246 hpcd->USB_Address = 0U; in HAL_PCD_Init()
247 hpcd->State = HAL_PCD_STATE_READY; in HAL_PCD_Init()
250 if (hpcd->Init.lpm_enable == 1U) in HAL_PCD_Init()
252 (void)HAL_PCDEx_ActivateLPM(hpcd); in HAL_PCD_Init()
255 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_Init()
265 HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_DeInit() argument
268 if (hpcd == NULL) in HAL_PCD_DeInit()
273 hpcd->State = HAL_PCD_STATE_BUSY; in HAL_PCD_DeInit()
276 if (USB_StopDevice(hpcd->Instance) != HAL_OK) in HAL_PCD_DeInit()
282 if (hpcd->MspDeInitCallback == NULL) in HAL_PCD_DeInit()
284 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; /* Legacy weak MspDeInit */ in HAL_PCD_DeInit()
288 hpcd->MspDeInitCallback(hpcd); in HAL_PCD_DeInit()
291 HAL_PCD_MspDeInit(hpcd); in HAL_PCD_DeInit()
294 hpcd->State = HAL_PCD_STATE_RESET; in HAL_PCD_DeInit()
304 __weak void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_MspInit() argument
307 UNUSED(hpcd); in HAL_PCD_MspInit()
319 __weak void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_MspDeInit() argument
322 UNUSED(hpcd); in HAL_PCD_MspDeInit()
348 HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterCallback() argument
357 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
361 __HAL_LOCK(hpcd); in HAL_PCD_RegisterCallback()
363 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterCallback()
368 hpcd->SOFCallback = pCallback; in HAL_PCD_RegisterCallback()
372 hpcd->SetupStageCallback = pCallback; in HAL_PCD_RegisterCallback()
376 hpcd->ResetCallback = pCallback; in HAL_PCD_RegisterCallback()
380 hpcd->SuspendCallback = pCallback; in HAL_PCD_RegisterCallback()
384 hpcd->ResumeCallback = pCallback; in HAL_PCD_RegisterCallback()
388 hpcd->ConnectCallback = pCallback; in HAL_PCD_RegisterCallback()
392 hpcd->DisconnectCallback = pCallback; 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()
411 else if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_RegisterCallback()
416 hpcd->MspInitCallback = pCallback; in HAL_PCD_RegisterCallback()
420 hpcd->MspDeInitCallback = pCallback; in HAL_PCD_RegisterCallback()
425 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
434 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
440 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterCallback()
461 HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef Cal… in HAL_PCD_UnRegisterCallback() argument
466 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterCallback()
469 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterCallback()
474 hpcd->SOFCallback = HAL_PCD_SOFCallback; in HAL_PCD_UnRegisterCallback()
478 hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; in HAL_PCD_UnRegisterCallback()
482 hpcd->ResetCallback = HAL_PCD_ResetCallback; in HAL_PCD_UnRegisterCallback()
486 hpcd->SuspendCallback = HAL_PCD_SuspendCallback; in HAL_PCD_UnRegisterCallback()
490 hpcd->ResumeCallback = HAL_PCD_ResumeCallback; in HAL_PCD_UnRegisterCallback()
494 hpcd->ConnectCallback = HAL_PCD_ConnectCallback; in HAL_PCD_UnRegisterCallback()
498 hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; in HAL_PCD_UnRegisterCallback()
502 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_UnRegisterCallback()
506 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; in HAL_PCD_UnRegisterCallback()
511 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
518 else if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_UnRegisterCallback()
523 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_UnRegisterCallback()
527 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; in HAL_PCD_UnRegisterCallback()
532 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
542 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
549 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterCallback()
560 HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterDataOutStageCallback() argument
568 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataOutStageCallback()
574 __HAL_LOCK(hpcd); in HAL_PCD_RegisterDataOutStageCallback()
576 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterDataOutStageCallback()
578 hpcd->DataOutStageCallback = pCallback; in HAL_PCD_RegisterDataOutStageCallback()
583 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataOutStageCallback()
590 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterDataOutStageCallback()
601 HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterDataOutStageCallback() argument
606 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterDataOutStageCallback()
608 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterDataOutStageCallback()
610hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; /* Legacy weak DataOutStageCallback */ in HAL_PCD_UnRegisterDataOutStageCallback()
615 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterDataOutStageCallback()
622 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterDataOutStageCallback()
634 HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterDataInStageCallback() argument
642 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataInStageCallback()
648 __HAL_LOCK(hpcd); in HAL_PCD_RegisterDataInStageCallback()
650 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterDataInStageCallback()
652 hpcd->DataInStageCallback = pCallback; in HAL_PCD_RegisterDataInStageCallback()
657 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataInStageCallback()
664 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterDataInStageCallback()
675 HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterDataInStageCallback() argument
680 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterDataInStageCallback()
682 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterDataInStageCallback()
684 hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; /* Legacy weak DataInStageCallback */ in HAL_PCD_UnRegisterDataInStageCallback()
689 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterDataInStageCallback()
696 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterDataInStageCallback()
708 HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterIsoOutIncpltCallback() argument
716 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoOutIncpltCallback()
722 __HAL_LOCK(hpcd); in HAL_PCD_RegisterIsoOutIncpltCallback()
724 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterIsoOutIncpltCallback()
726 hpcd->ISOOUTIncompleteCallback = pCallback; in HAL_PCD_RegisterIsoOutIncpltCallback()
731 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoOutIncpltCallback()
738 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterIsoOutIncpltCallback()
750 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterIsoOutIncpltCallback() argument
755 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterIsoOutIncpltCallback()
757 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterIsoOutIncpltCallback()
759hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; /* Legacy weak ISOOUTIncomplete… in HAL_PCD_UnRegisterIsoOutIncpltCallback()
764 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterIsoOutIncpltCallback()
771 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterIsoOutIncpltCallback()
783 HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterIsoInIncpltCallback() argument
791 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoInIncpltCallback()
797 __HAL_LOCK(hpcd); in HAL_PCD_RegisterIsoInIncpltCallback()
799 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterIsoInIncpltCallback()
801 hpcd->ISOINIncompleteCallback = pCallback; in HAL_PCD_RegisterIsoInIncpltCallback()
806 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoInIncpltCallback()
813 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterIsoInIncpltCallback()
825 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterIsoInIncpltCallback() argument
830 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterIsoInIncpltCallback()
832 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterIsoInIncpltCallback()
834hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; /* Legacy weak ISOINIncompleteCal… in HAL_PCD_UnRegisterIsoInIncpltCallback()
839 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterIsoInIncpltCallback()
846 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterIsoInIncpltCallback()
858 HAL_StatusTypeDef HAL_PCD_RegisterBcdCallback(PCD_HandleTypeDef *hpcd, pPCD_BcdCallbackTypeDef pCal… in HAL_PCD_RegisterBcdCallback() argument
865 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterBcdCallback()
871 __HAL_LOCK(hpcd); in HAL_PCD_RegisterBcdCallback()
873 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterBcdCallback()
875 hpcd->BCDCallback = pCallback; in HAL_PCD_RegisterBcdCallback()
880 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterBcdCallback()
887 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterBcdCallback()
898 HAL_StatusTypeDef HAL_PCD_UnRegisterBcdCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterBcdCallback() argument
903 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterBcdCallback()
905 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterBcdCallback()
907 hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; /* Legacy weak HAL_PCDEx_BCD_Callback */ in HAL_PCD_UnRegisterBcdCallback()
912 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterBcdCallback()
919 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterBcdCallback()
931 HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd, pPCD_LpmCallbackTypeDef pCal… in HAL_PCD_RegisterLpmCallback() argument
938 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterLpmCallback()
944 __HAL_LOCK(hpcd); in HAL_PCD_RegisterLpmCallback()
946 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterLpmCallback()
948 hpcd->LPMCallback = pCallback; in HAL_PCD_RegisterLpmCallback()
953 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterLpmCallback()
960 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterLpmCallback()
971 HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterLpmCallback() argument
976 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterLpmCallback()
978 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterLpmCallback()
980 hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; /* Legacy weak HAL_PCDEx_LPM_Callback */ in HAL_PCD_UnRegisterLpmCallback()
985 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterLpmCallback()
992 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterLpmCallback()
1022 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) in HAL_PCD_Start() argument
1025 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_Start()
1028 __HAL_LOCK(hpcd); in HAL_PCD_Start()
1030 if (hpcd->Init.battery_charging_enable == 1U) in HAL_PCD_Start()
1036 __HAL_PCD_ENABLE(hpcd); in HAL_PCD_Start()
1037 (void)USB_DevConnect(hpcd->Instance); in HAL_PCD_Start()
1038 __HAL_UNLOCK(hpcd); in HAL_PCD_Start()
1048 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd) in HAL_PCD_Stop() argument
1051 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_Stop()
1054 __HAL_LOCK(hpcd); in HAL_PCD_Stop()
1055 __HAL_PCD_DISABLE(hpcd); in HAL_PCD_Stop()
1056 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_Stop()
1059 (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); in HAL_PCD_Stop()
1063 if (hpcd->Init.battery_charging_enable == 1U) in HAL_PCD_Stop()
1070 __HAL_UNLOCK(hpcd); in HAL_PCD_Stop()
1081 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) in HAL_PCD_IRQHandler() argument
1083 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_IRQHandler()
1094 if (USB_GetMode(hpcd->Instance) == USB_OTG_MODE_DEVICE) in HAL_PCD_IRQHandler()
1097 if (__HAL_PCD_IS_INVALID_INTERRUPT(hpcd)) in HAL_PCD_IRQHandler()
1103 hpcd->FrameNumber = (USBx_DEVICE->DSTS & USB_OTG_DSTS_FNSOF_Msk) >> USB_OTG_DSTS_FNSOF_Pos; in HAL_PCD_IRQHandler()
1105 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_MMIS)) in HAL_PCD_IRQHandler()
1108 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS); in HAL_PCD_IRQHandler()
1112 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL)) in HAL_PCD_IRQHandler()
1114 USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_PCD_IRQHandler()
1118 ep = &hpcd->OUT_ep[RegVal & USB_OTG_GRXSTSP_EPNUM]; in HAL_PCD_IRQHandler()
1133 (void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U); in HAL_PCD_IRQHandler()
1141 USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); in HAL_PCD_IRQHandler()
1144 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT)) in HAL_PCD_IRQHandler()
1149 ep_intr = USB_ReadDevAllOutEpInterrupt(hpcd->Instance); in HAL_PCD_IRQHandler()
1155 epint = USB_ReadDevOutEPInterrupt(hpcd->Instance, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1160 (void)PCD_EP_OutXfrComplete_int(hpcd, epnum); in HAL_PCD_IRQHandler()
1167 (void)PCD_EP_OutSetupPacket_int(hpcd, epnum); in HAL_PCD_IRQHandler()
1183 ep = &hpcd->OUT_ep[epnum]; in HAL_PCD_IRQHandler()
1190 hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1192 HAL_PCD_ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1216 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IEPINT)) in HAL_PCD_IRQHandler()
1219 ep_intr = USB_ReadDevAllInEpInterrupt(hpcd->Instance); in HAL_PCD_IRQHandler()
1227 epint = USB_ReadDevInEPInterrupt(hpcd->Instance, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1236 if (hpcd->Init.dma_enable == 1U) in HAL_PCD_IRQHandler()
1238 hpcd->IN_ep[epnum].xfer_buff += hpcd->IN_ep[epnum].maxpacket; in HAL_PCD_IRQHandler()
1241 if ((epnum == 0U) && (hpcd->IN_ep[epnum].xfer_len == 0U)) in HAL_PCD_IRQHandler()
1244 (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); in HAL_PCD_IRQHandler()
1249 hpcd->DataInStageCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1251 HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1270 ep = &hpcd->IN_ep[epnum]; in HAL_PCD_IRQHandler()
1277 hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1279 HAL_PCD_ISOINIncompleteCallback(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1287 (void)PCD_WriteEmptyTxFifo(hpcd, epnum); in HAL_PCD_IRQHandler()
1296 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT)) in HAL_PCD_IRQHandler()
1301 if (hpcd->LPM_State == LPM_L1) in HAL_PCD_IRQHandler()
1303 hpcd->LPM_State = LPM_L0; in HAL_PCD_IRQHandler()
1306 hpcd->LPMCallback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1308 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1314 hpcd->ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1316 HAL_PCD_ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1320 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT); in HAL_PCD_IRQHandler()
1324 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP)) in HAL_PCD_IRQHandler()
1329 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1331 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1334 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP); in HAL_PCD_IRQHandler()
1338 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_LPMINT)) in HAL_PCD_IRQHandler()
1340 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_LPMINT); in HAL_PCD_IRQHandler()
1342 if (hpcd->LPM_State == LPM_L0) in HAL_PCD_IRQHandler()
1344 hpcd->LPM_State = LPM_L1; in HAL_PCD_IRQHandler()
1345 hpcd->BESL = (hpcd->Instance->GLPMCFG & USB_OTG_GLPMCFG_BESL) >> 2U; in HAL_PCD_IRQHandler()
1348 hpcd->LPMCallback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1350 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1356 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1358 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1364 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBRST)) in HAL_PCD_IRQHandler()
1367 (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); in HAL_PCD_IRQHandler()
1369 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_IRQHandler()
1379 if (hpcd->Init.use_dedicated_ep1 != 0U) in HAL_PCD_IRQHandler()
1406 (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t)hpcd->Init.dma_enable, in HAL_PCD_IRQHandler()
1407 (uint8_t *)hpcd->Setup); in HAL_PCD_IRQHandler()
1409 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBRST); in HAL_PCD_IRQHandler()
1413 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE)) in HAL_PCD_IRQHandler()
1415 (void)USB_ActivateSetup(hpcd->Instance); in HAL_PCD_IRQHandler()
1416 hpcd->Init.speed = USB_GetDevSpeed(hpcd->Instance); in HAL_PCD_IRQHandler()
1419 (void)USB_SetTurnaroundTime(hpcd->Instance, in HAL_PCD_IRQHandler()
1421 (uint8_t)hpcd->Init.speed); in HAL_PCD_IRQHandler()
1424 hpcd->ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1426 HAL_PCD_ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1429 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE); in HAL_PCD_IRQHandler()
1433 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF)) in HAL_PCD_IRQHandler()
1436 hpcd->SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1438 HAL_PCD_SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1441 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SOF); in HAL_PCD_IRQHandler()
1445 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_BOUTNAKEFF)) in HAL_PCD_IRQHandler()
1449 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1451 if (hpcd->OUT_ep[epnum].is_iso_incomplete == 1U) in HAL_PCD_IRQHandler()
1454 (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)epnum); in HAL_PCD_IRQHandler()
1460 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR)) in HAL_PCD_IRQHandler()
1462 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1466 if ((hpcd->IN_ep[epnum].type == EP_TYPE_ISOC) && in HAL_PCD_IRQHandler()
1469 hpcd->IN_ep[epnum].is_iso_incomplete = 1U; in HAL_PCD_IRQHandler()
1472 (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)(epnum | 0x80U)); in HAL_PCD_IRQHandler()
1476 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR); in HAL_PCD_IRQHandler()
1480 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) in HAL_PCD_IRQHandler()
1482 for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) in HAL_PCD_IRQHandler()
1486 if ((hpcd->OUT_ep[epnum].type == EP_TYPE_ISOC) && in HAL_PCD_IRQHandler()
1488 (((RegVal & (0x1U << 16)) >> 16U) == (hpcd->FrameNumber & 0x1U))) in HAL_PCD_IRQHandler()
1490 hpcd->OUT_ep[epnum].is_iso_incomplete = 1U; in HAL_PCD_IRQHandler()
1502 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); in HAL_PCD_IRQHandler()
1506 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT)) in HAL_PCD_IRQHandler()
1509 hpcd->ConnectCallback(hpcd); in HAL_PCD_IRQHandler()
1511 HAL_PCD_ConnectCallback(hpcd); in HAL_PCD_IRQHandler()
1514 __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT); in HAL_PCD_IRQHandler()
1518 if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OTGINT)) in HAL_PCD_IRQHandler()
1520 RegVal = hpcd->Instance->GOTGINT; in HAL_PCD_IRQHandler()
1525 hpcd->DisconnectCallback(hpcd); in HAL_PCD_IRQHandler()
1527 HAL_PCD_DisconnectCallback(hpcd); in HAL_PCD_IRQHandler()
1530 hpcd->Instance->GOTGINT |= RegVal; in HAL_PCD_IRQHandler()
1542 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) in HAL_PCD_IRQHandler() argument
1544 uint32_t wIstr = USB_ReadInterrupts(hpcd->Instance); in HAL_PCD_IRQHandler()
1550 (void)PCD_EP_ISR_Handler(hpcd); in HAL_PCD_IRQHandler()
1557 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); in HAL_PCD_IRQHandler()
1560 hpcd->ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1562 HAL_PCD_ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1565 (void)HAL_PCD_SetAddress(hpcd, 0U); in HAL_PCD_IRQHandler()
1572 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); in HAL_PCD_IRQHandler()
1579 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); in HAL_PCD_IRQHandler()
1586 hpcd->Instance->CNTR &= ~(USB_CNTR_SUSPRDY); in HAL_PCD_IRQHandler()
1587 hpcd->Instance->CNTR &= ~(USB_CNTR_SUSPEN); in HAL_PCD_IRQHandler()
1589 if (hpcd->LPM_State == LPM_L1) in HAL_PCD_IRQHandler()
1591 hpcd->LPM_State = LPM_L0; in HAL_PCD_IRQHandler()
1593 hpcd->LPMCallback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1595 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1600 hpcd->ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1602 HAL_PCD_ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1605 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); in HAL_PCD_IRQHandler()
1613 hpcd->Instance->CNTR |= USB_CNTR_SUSPEN; in HAL_PCD_IRQHandler()
1616 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); in HAL_PCD_IRQHandler()
1618 hpcd->Instance->CNTR |= USB_CNTR_SUSPRDY; in HAL_PCD_IRQHandler()
1621 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1623 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1632 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_L1REQ); in HAL_PCD_IRQHandler()
1633 if (hpcd->LPM_State == LPM_L0) in HAL_PCD_IRQHandler()
1636 hpcd->Instance->CNTR |= USB_CNTR_SUSPRDY; in HAL_PCD_IRQHandler()
1637 hpcd->Instance->CNTR |= USB_CNTR_SUSPEN; in HAL_PCD_IRQHandler()
1639 hpcd->LPM_State = LPM_L1; in HAL_PCD_IRQHandler()
1640 hpcd->BESL = ((uint32_t)hpcd->Instance->LPMCSR & USB_LPMCSR_BESL) >> 2; in HAL_PCD_IRQHandler()
1642 hpcd->LPMCallback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1644 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1650 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1652 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1661 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); in HAL_PCD_IRQHandler()
1664 hpcd->SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1666 HAL_PCD_SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1675 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); in HAL_PCD_IRQHandler()
1688 __weak void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_DataOutStageCallback() argument
1691 UNUSED(hpcd); in HAL_PCD_DataOutStageCallback()
1705 __weak void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_DataInStageCallback() argument
1708 UNUSED(hpcd); in HAL_PCD_DataInStageCallback()
1720 __weak void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SetupStageCallback() argument
1723 UNUSED(hpcd); in HAL_PCD_SetupStageCallback()
1735 __weak void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SOFCallback() argument
1738 UNUSED(hpcd); in HAL_PCD_SOFCallback()
1750 __weak void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ResetCallback() argument
1753 UNUSED(hpcd); in HAL_PCD_ResetCallback()
1765 __weak void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SuspendCallback() argument
1768 UNUSED(hpcd); in HAL_PCD_SuspendCallback()
1780 __weak void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ResumeCallback() argument
1783 UNUSED(hpcd); in HAL_PCD_ResumeCallback()
1796 __weak void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_ISOOUTIncompleteCallback() argument
1799 UNUSED(hpcd); in HAL_PCD_ISOOUTIncompleteCallback()
1813 __weak void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_ISOINIncompleteCallback() argument
1816 UNUSED(hpcd); in HAL_PCD_ISOINIncompleteCallback()
1829 __weak void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ConnectCallback() argument
1832 UNUSED(hpcd); in HAL_PCD_ConnectCallback()
1844 __weak void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_DisconnectCallback() argument
1847 UNUSED(hpcd); in HAL_PCD_DisconnectCallback()
1878 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd) in HAL_PCD_DevConnect() argument
1881 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_DevConnect()
1884 __HAL_LOCK(hpcd); in HAL_PCD_DevConnect()
1887 if (hpcd->Init.battery_charging_enable == 1U) in HAL_PCD_DevConnect()
1894 (void)USB_DevConnect(hpcd->Instance); in HAL_PCD_DevConnect()
1895 __HAL_UNLOCK(hpcd); in HAL_PCD_DevConnect()
1905 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd) in HAL_PCD_DevDisconnect() argument
1908 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_DevDisconnect()
1911 __HAL_LOCK(hpcd); in HAL_PCD_DevDisconnect()
1912 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_DevDisconnect()
1915 if (hpcd->Init.battery_charging_enable == 1U) in HAL_PCD_DevDisconnect()
1922 __HAL_UNLOCK(hpcd); in HAL_PCD_DevDisconnect()
1933 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) in HAL_PCD_SetAddress() argument
1935 __HAL_LOCK(hpcd); in HAL_PCD_SetAddress()
1936 hpcd->USB_Address = address; in HAL_PCD_SetAddress()
1937 (void)USB_SetDevAddress(hpcd->Instance, address); in HAL_PCD_SetAddress()
1938 __HAL_UNLOCK(hpcd); in HAL_PCD_SetAddress()
1950 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, in HAL_PCD_EP_Open() argument
1958 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Open()
1963 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Open()
1985 __HAL_LOCK(hpcd); in HAL_PCD_EP_Open()
1986 (void)USB_ActivateEndpoint(hpcd->Instance, ep); in HAL_PCD_EP_Open()
1987 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Open()
1998 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Close() argument
2004 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Close()
2009 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Close()
2014 __HAL_LOCK(hpcd); in HAL_PCD_EP_Close()
2015 (void)USB_DeactivateEndpoint(hpcd->Instance, ep); in HAL_PCD_EP_Close()
2016 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Close()
2029 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint3… in HAL_PCD_EP_Receive() argument
2033 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Receive()
2043 if (hpcd->Init.dma_enable == 1U) in HAL_PCD_EP_Receive()
2048 (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable); in HAL_PCD_EP_Receive()
2050 (void)USB_EPStartXfer(hpcd->Instance, ep); in HAL_PCD_EP_Receive()
2062 uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr) in HAL_PCD_EP_GetRxCount() argument
2064 return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; in HAL_PCD_EP_GetRxCount()
2074 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint… in HAL_PCD_EP_Transmit() argument
2078 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Transmit()
2092 if (hpcd->Init.dma_enable == 1U) in HAL_PCD_EP_Transmit()
2097 (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable); in HAL_PCD_EP_Transmit()
2099 (void)USB_EPStartXfer(hpcd->Instance, ep); in HAL_PCD_EP_Transmit()
2111 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_SetStall() argument
2115 if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) in HAL_PCD_EP_SetStall()
2122 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_SetStall()
2127 ep = &hpcd->OUT_ep[ep_addr]; in HAL_PCD_EP_SetStall()
2134 __HAL_LOCK(hpcd); in HAL_PCD_EP_SetStall()
2136 (void)USB_EPSetStall(hpcd->Instance, ep); in HAL_PCD_EP_SetStall()
2141 (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t)hpcd->Init.dma_enable, (uint8_t *)hpcd->Setup); in HAL_PCD_EP_SetStall()
2145 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_SetStall()
2156 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_ClrStall() argument
2160 if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) in HAL_PCD_EP_ClrStall()
2167 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_ClrStall()
2172 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_ClrStall()
2179 __HAL_LOCK(hpcd); in HAL_PCD_EP_ClrStall()
2180 (void)USB_EPClearStall(hpcd->Instance, ep); in HAL_PCD_EP_ClrStall()
2181 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_ClrStall()
2192 HAL_StatusTypeDef HAL_PCD_EP_Abort(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Abort() argument
2199 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Abort()
2203 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Abort()
2207 ret = USB_EPStopXfer(hpcd->Instance, ep); in HAL_PCD_EP_Abort()
2218 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Flush() argument
2220 __HAL_LOCK(hpcd); in HAL_PCD_EP_Flush()
2224 (void)USB_FlushTxFifo(hpcd->Instance, (uint32_t)ep_addr & EP_ADDR_MSK); in HAL_PCD_EP_Flush()
2228 (void)USB_FlushRxFifo(hpcd->Instance); in HAL_PCD_EP_Flush()
2231 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Flush()
2241 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) in HAL_PCD_ActivateRemoteWakeup() argument
2243 return (USB_ActivateRemoteWakeup(hpcd->Instance)); in HAL_PCD_ActivateRemoteWakeup()
2251 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) in HAL_PCD_DeActivateRemoteWakeup() argument
2253 return (USB_DeActivateRemoteWakeup(hpcd->Instance)); in HAL_PCD_DeActivateRemoteWakeup()
2280 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef const *hpcd) in HAL_PCD_GetState() argument
2282 return hpcd->State; in HAL_PCD_GetState()
2292 HAL_StatusTypeDef HAL_PCD_SetTestMode(const PCD_HandleTypeDef *hpcd, uint8_t testmode) in HAL_PCD_SetTestMode() argument
2294 const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in HAL_PCD_SetTestMode()
2333 static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_WriteEmptyTxFifo() argument
2335 USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_WriteEmptyTxFifo()
2342 ep = &hpcd->IN_ep[epnum]; in PCD_WriteEmptyTxFifo()
2371 (uint8_t)hpcd->Init.dma_enable); in PCD_WriteEmptyTxFifo()
2393 static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_EP_OutXfrComplete_int() argument
2396 const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_EP_OutXfrComplete_int()
2401 if (hpcd->Init.dma_enable == 1U) in PCD_EP_OutXfrComplete_int()
2426 ep = &hpcd->OUT_ep[epnum]; in PCD_EP_OutXfrComplete_int()
2436 (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); in PCD_EP_OutXfrComplete_int()
2445 hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2447 HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2473 hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2475 HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2481 if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U)) in PCD_EP_OutXfrComplete_int()
2484 (void)USB_EP0_OutStart(hpcd->Instance, 0U, (uint8_t *)hpcd->Setup); in PCD_EP_OutXfrComplete_int()
2488 hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2490 HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); in PCD_EP_OutXfrComplete_int()
2505 static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) in PCD_EP_OutSetupPacket_int() argument
2507 const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; in PCD_EP_OutSetupPacket_int()
2520 hpcd->SetupStageCallback(hpcd); in PCD_EP_OutSetupPacket_int()
2522 HAL_PCD_SetupStageCallback(hpcd); in PCD_EP_OutSetupPacket_int()
2525 if ((gSNPSiD > USB_OTG_CORE_ID_300A) && (hpcd->Init.dma_enable == 1U)) in PCD_EP_OutSetupPacket_int()
2527 (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); in PCD_EP_OutSetupPacket_int()
2540 static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) in PCD_EP_ISR_Handler() argument
2554 while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) in PCD_EP_ISR_Handler()
2556 wIstr = (uint16_t)hpcd->Instance->ISTR; in PCD_EP_ISR_Handler()
2572 PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2573 ep = &hpcd->IN_ep[0]; in PCD_EP_ISR_Handler()
2575 ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2580 hpcd->DataInStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
2582 HAL_PCD_DataInStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
2585 if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) in PCD_EP_ISR_Handler()
2587 hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); in PCD_EP_ISR_Handler()
2588 hpcd->USB_Address = 0U; in PCD_EP_ISR_Handler()
2597 ep = &hpcd->OUT_ep[0]; in PCD_EP_ISR_Handler()
2598 wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2603 ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2605 USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, in PCD_EP_ISR_Handler()
2609 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2613 hpcd->SetupStageCallback(hpcd); in PCD_EP_ISR_Handler()
2615 HAL_PCD_SetupStageCallback(hpcd); in PCD_EP_ISR_Handler()
2620 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2623 ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2627 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, in PCD_EP_ISR_Handler()
2634 hpcd->DataOutStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
2636 HAL_PCD_DataOutStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
2640 wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
2644 PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); in PCD_EP_ISR_Handler()
2653 wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
2658 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
2659 ep = &hpcd->OUT_ep[epindex]; in PCD_EP_ISR_Handler()
2664 count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2668 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); in PCD_EP_ISR_Handler()
2677 count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); in PCD_EP_ISR_Handler()
2682 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in PCD_EP_ISR_Handler()
2684 if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) in PCD_EP_ISR_Handler()
2687 count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2691 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); in PCD_EP_ISR_Handler()
2697 count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2701 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); in PCD_EP_ISR_Handler()
2716 hpcd->DataOutStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2718 HAL_PCD_DataOutStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2723 (void)USB_EPStartXfer(hpcd->Instance, ep); in PCD_EP_ISR_Handler()
2729 ep = &hpcd->IN_ep[epindex]; in PCD_EP_ISR_Handler()
2732 PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
2743 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in PCD_EP_ISR_Handler()
2747 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in PCD_EP_ISR_Handler()
2754 hpcd->DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2756 HAL_PCD_DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2765 TxPctSize = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
2781 hpcd->DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2783 HAL_PCD_DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
2791 (void)USB_EPStartXfer(hpcd->Instance, ep); in PCD_EP_ISR_Handler()
2798 (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); in PCD_EP_ISR_Handler()
2818 static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, in HAL_PCD_EP_DB_Receive() argument
2827 count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Receive()
2841 PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); in HAL_PCD_EP_DB_Receive()
2847 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in HAL_PCD_EP_DB_Receive()
2852 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); in HAL_PCD_EP_DB_Receive()
2859 count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Receive()
2873 PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); in HAL_PCD_EP_DB_Receive()
2879 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in HAL_PCD_EP_DB_Receive()
2884 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); in HAL_PCD_EP_DB_Receive()
2899 static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, in HAL_PCD_EP_DB_Transmit() argument
2909 TxPctSize = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Transmit()
2923 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2924 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2929 PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_NAK); in HAL_PCD_EP_DB_Transmit()
2934 hpcd->DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2936 HAL_PCD_DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2941 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2951 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2980 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); in HAL_PCD_EP_DB_Transmit()
2983 USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); in HAL_PCD_EP_DB_Transmit()
2990 TxPctSize = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Transmit()
3004 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
3005 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
3010 PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_NAK); in HAL_PCD_EP_DB_Transmit()
3015 hpcd->DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
3017 HAL_PCD_DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
3023 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
3033 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
3061 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); in HAL_PCD_EP_DB_Transmit()
3064 USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); in HAL_PCD_EP_DB_Transmit()
3070 PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); in HAL_PCD_EP_DB_Transmit()