Lines Matching refs:hpcd
90 static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd);
92 static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, PCD_EPTypeDef *ep, uint16_…
93 static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, PCD_EPTypeDef *ep, uint16_t wEPVal);
124 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) in HAL_PCD_Init() argument
129 if (hpcd == NULL) in HAL_PCD_Init()
135 assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); in HAL_PCD_Init()
137 if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_Init()
140 hpcd->Lock = HAL_UNLOCKED; in HAL_PCD_Init()
143 hpcd->SOFCallback = HAL_PCD_SOFCallback; in HAL_PCD_Init()
144 hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; in HAL_PCD_Init()
145 hpcd->ResetCallback = HAL_PCD_ResetCallback; in HAL_PCD_Init()
146 hpcd->SuspendCallback = HAL_PCD_SuspendCallback; in HAL_PCD_Init()
147 hpcd->ResumeCallback = HAL_PCD_ResumeCallback; in HAL_PCD_Init()
148 hpcd->ConnectCallback = HAL_PCD_ConnectCallback; in HAL_PCD_Init()
149 hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; in HAL_PCD_Init()
150 hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; in HAL_PCD_Init()
151 hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; in HAL_PCD_Init()
152 hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; in HAL_PCD_Init()
153 hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; in HAL_PCD_Init()
154 hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; in HAL_PCD_Init()
155 hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; in HAL_PCD_Init()
157 if (hpcd->MspInitCallback == NULL) in HAL_PCD_Init()
159 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_Init()
163 hpcd->MspInitCallback(hpcd); in HAL_PCD_Init()
166 HAL_PCD_MspInit(hpcd); in HAL_PCD_Init()
170 hpcd->State = HAL_PCD_STATE_BUSY; in HAL_PCD_Init()
173 __HAL_PCD_DISABLE(hpcd); in HAL_PCD_Init()
176 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_Init()
179 hpcd->IN_ep[i].is_in = 1U; in HAL_PCD_Init()
180 hpcd->IN_ep[i].num = i; in HAL_PCD_Init()
182 hpcd->IN_ep[i].type = EP_TYPE_CTRL; in HAL_PCD_Init()
183 hpcd->IN_ep[i].maxpacket = 0U; in HAL_PCD_Init()
184 hpcd->IN_ep[i].xfer_buff = 0U; in HAL_PCD_Init()
185 hpcd->IN_ep[i].xfer_len = 0U; in HAL_PCD_Init()
188 for (i = 0U; i < hpcd->Init.dev_endpoints; i++) in HAL_PCD_Init()
190 hpcd->OUT_ep[i].is_in = 0U; in HAL_PCD_Init()
191 hpcd->OUT_ep[i].num = i; in HAL_PCD_Init()
193 hpcd->OUT_ep[i].type = EP_TYPE_CTRL; in HAL_PCD_Init()
194 hpcd->OUT_ep[i].maxpacket = 0U; in HAL_PCD_Init()
195 hpcd->OUT_ep[i].xfer_buff = 0U; in HAL_PCD_Init()
196 hpcd->OUT_ep[i].xfer_len = 0U; in HAL_PCD_Init()
200 (void)USB_DevInit(hpcd->Instance, hpcd->Init); in HAL_PCD_Init()
202 hpcd->USB_Address = 0U; in HAL_PCD_Init()
203 hpcd->State = HAL_PCD_STATE_READY; in HAL_PCD_Init()
206 if (hpcd->Init.lpm_enable == 1U) in HAL_PCD_Init()
208 (void)HAL_PCDEx_ActivateLPM(hpcd); in HAL_PCD_Init()
219 HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_DeInit() argument
222 if (hpcd == NULL) in HAL_PCD_DeInit()
227 hpcd->State = HAL_PCD_STATE_BUSY; in HAL_PCD_DeInit()
230 if (USB_StopDevice(hpcd->Instance) != HAL_OK) in HAL_PCD_DeInit()
236 if (hpcd->MspDeInitCallback == NULL) in HAL_PCD_DeInit()
238 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; /* Legacy weak MspDeInit */ in HAL_PCD_DeInit()
242 hpcd->MspDeInitCallback(hpcd); in HAL_PCD_DeInit()
245 HAL_PCD_MspDeInit(hpcd); in HAL_PCD_DeInit()
248 hpcd->State = HAL_PCD_STATE_RESET; in HAL_PCD_DeInit()
258 __weak void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_MspInit() argument
261 UNUSED(hpcd); in HAL_PCD_MspInit()
273 __weak void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd) in HAL_PCD_MspDeInit() argument
276 UNUSED(hpcd); in HAL_PCD_MspDeInit()
302 HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterCallback() argument
311 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
315 __HAL_LOCK(hpcd); in HAL_PCD_RegisterCallback()
317 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterCallback()
322 hpcd->SOFCallback = pCallback; in HAL_PCD_RegisterCallback()
326 hpcd->SetupStageCallback = pCallback; in HAL_PCD_RegisterCallback()
330 hpcd->ResetCallback = pCallback; in HAL_PCD_RegisterCallback()
334 hpcd->SuspendCallback = pCallback; in HAL_PCD_RegisterCallback()
338 hpcd->ResumeCallback = pCallback; in HAL_PCD_RegisterCallback()
342 hpcd->ConnectCallback = pCallback; in HAL_PCD_RegisterCallback()
346 hpcd->DisconnectCallback = pCallback; in HAL_PCD_RegisterCallback()
350 hpcd->MspInitCallback = pCallback; in HAL_PCD_RegisterCallback()
354 hpcd->MspDeInitCallback = pCallback; in HAL_PCD_RegisterCallback()
359 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
365 else if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_RegisterCallback()
370 hpcd->MspInitCallback = pCallback; in HAL_PCD_RegisterCallback()
374 hpcd->MspDeInitCallback = pCallback; in HAL_PCD_RegisterCallback()
379 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
388 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterCallback()
394 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterCallback()
415 HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef Cal… in HAL_PCD_UnRegisterCallback() argument
420 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterCallback()
423 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterCallback()
428 hpcd->SOFCallback = HAL_PCD_SOFCallback; in HAL_PCD_UnRegisterCallback()
432 hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; in HAL_PCD_UnRegisterCallback()
436 hpcd->ResetCallback = HAL_PCD_ResetCallback; in HAL_PCD_UnRegisterCallback()
440 hpcd->SuspendCallback = HAL_PCD_SuspendCallback; in HAL_PCD_UnRegisterCallback()
444 hpcd->ResumeCallback = HAL_PCD_ResumeCallback; in HAL_PCD_UnRegisterCallback()
448 hpcd->ConnectCallback = HAL_PCD_ConnectCallback; in HAL_PCD_UnRegisterCallback()
452 hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; in HAL_PCD_UnRegisterCallback()
456 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_UnRegisterCallback()
460 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; in HAL_PCD_UnRegisterCallback()
465 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
472 else if (hpcd->State == HAL_PCD_STATE_RESET) in HAL_PCD_UnRegisterCallback()
477 hpcd->MspInitCallback = HAL_PCD_MspInit; in HAL_PCD_UnRegisterCallback()
481 hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; in HAL_PCD_UnRegisterCallback()
486 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
496 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterCallback()
503 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterCallback()
514 HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterDataOutStageCallback() argument
522 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataOutStageCallback()
528 __HAL_LOCK(hpcd); in HAL_PCD_RegisterDataOutStageCallback()
530 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterDataOutStageCallback()
532 hpcd->DataOutStageCallback = pCallback; in HAL_PCD_RegisterDataOutStageCallback()
537 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataOutStageCallback()
544 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterDataOutStageCallback()
555 HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterDataOutStageCallback() argument
560 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterDataOutStageCallback()
562 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterDataOutStageCallback()
564 … hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; /* Legacy weak DataOutStageCallback */ in HAL_PCD_UnRegisterDataOutStageCallback()
569 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterDataOutStageCallback()
576 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterDataOutStageCallback()
588 HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterDataInStageCallback() argument
596 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataInStageCallback()
602 __HAL_LOCK(hpcd); in HAL_PCD_RegisterDataInStageCallback()
604 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterDataInStageCallback()
606 hpcd->DataInStageCallback = pCallback; in HAL_PCD_RegisterDataInStageCallback()
611 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterDataInStageCallback()
618 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterDataInStageCallback()
629 HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterDataInStageCallback() argument
634 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterDataInStageCallback()
636 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterDataInStageCallback()
638 hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; /* Legacy weak DataInStageCallback */ in HAL_PCD_UnRegisterDataInStageCallback()
643 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterDataInStageCallback()
650 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterDataInStageCallback()
662 HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterIsoOutIncpltCallback() argument
670 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoOutIncpltCallback()
676 __HAL_LOCK(hpcd); in HAL_PCD_RegisterIsoOutIncpltCallback()
678 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterIsoOutIncpltCallback()
680 hpcd->ISOOUTIncompleteCallback = pCallback; in HAL_PCD_RegisterIsoOutIncpltCallback()
685 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoOutIncpltCallback()
692 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterIsoOutIncpltCallback()
704 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterIsoOutIncpltCallback() argument
709 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterIsoOutIncpltCallback()
711 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterIsoOutIncpltCallback()
713 …hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; /* Legacy weak ISOOUTIncomplete… in HAL_PCD_UnRegisterIsoOutIncpltCallback()
718 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterIsoOutIncpltCallback()
725 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterIsoOutIncpltCallback()
737 HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, in HAL_PCD_RegisterIsoInIncpltCallback() argument
745 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoInIncpltCallback()
751 __HAL_LOCK(hpcd); in HAL_PCD_RegisterIsoInIncpltCallback()
753 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterIsoInIncpltCallback()
755 hpcd->ISOINIncompleteCallback = pCallback; in HAL_PCD_RegisterIsoInIncpltCallback()
760 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterIsoInIncpltCallback()
767 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterIsoInIncpltCallback()
779 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterIsoInIncpltCallback() argument
784 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterIsoInIncpltCallback()
786 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterIsoInIncpltCallback()
788 …hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; /* Legacy weak ISOINIncompleteCal… in HAL_PCD_UnRegisterIsoInIncpltCallback()
793 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterIsoInIncpltCallback()
800 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterIsoInIncpltCallback()
812 HAL_StatusTypeDef HAL_PCD_RegisterBcdCallback(PCD_HandleTypeDef *hpcd, pPCD_BcdCallbackTypeDef pCal… in HAL_PCD_RegisterBcdCallback() argument
819 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterBcdCallback()
825 __HAL_LOCK(hpcd); in HAL_PCD_RegisterBcdCallback()
827 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterBcdCallback()
829 hpcd->BCDCallback = pCallback; in HAL_PCD_RegisterBcdCallback()
834 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterBcdCallback()
841 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterBcdCallback()
852 HAL_StatusTypeDef HAL_PCD_UnRegisterBcdCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterBcdCallback() argument
857 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterBcdCallback()
859 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterBcdCallback()
861 hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; /* Legacy weak HAL_PCDEx_BCD_Callback */ in HAL_PCD_UnRegisterBcdCallback()
866 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterBcdCallback()
873 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterBcdCallback()
885 HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd, pPCD_LpmCallbackTypeDef pCal… in HAL_PCD_RegisterLpmCallback() argument
892 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterLpmCallback()
898 __HAL_LOCK(hpcd); in HAL_PCD_RegisterLpmCallback()
900 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_RegisterLpmCallback()
902 hpcd->LPMCallback = pCallback; in HAL_PCD_RegisterLpmCallback()
907 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_RegisterLpmCallback()
914 __HAL_UNLOCK(hpcd); in HAL_PCD_RegisterLpmCallback()
925 HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_UnRegisterLpmCallback() argument
930 __HAL_LOCK(hpcd); in HAL_PCD_UnRegisterLpmCallback()
932 if (hpcd->State == HAL_PCD_STATE_READY) in HAL_PCD_UnRegisterLpmCallback()
934 hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; /* Legacy weak HAL_PCDEx_LPM_Callback */ in HAL_PCD_UnRegisterLpmCallback()
939 hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; in HAL_PCD_UnRegisterLpmCallback()
946 __HAL_UNLOCK(hpcd); in HAL_PCD_UnRegisterLpmCallback()
976 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) in HAL_PCD_Start() argument
978 __HAL_LOCK(hpcd); in HAL_PCD_Start()
979 __HAL_PCD_ENABLE(hpcd); in HAL_PCD_Start()
980 (void)USB_DevConnect(hpcd->Instance); in HAL_PCD_Start()
981 __HAL_UNLOCK(hpcd); in HAL_PCD_Start()
991 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd) in HAL_PCD_Stop() argument
993 __HAL_LOCK(hpcd); in HAL_PCD_Stop()
994 __HAL_PCD_DISABLE(hpcd); in HAL_PCD_Stop()
995 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_Stop()
996 __HAL_UNLOCK(hpcd); in HAL_PCD_Stop()
1007 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) in HAL_PCD_IRQHandler() argument
1009 uint32_t wIstr = USB_ReadInterrupts(hpcd->Instance); in HAL_PCD_IRQHandler()
1021 (void)PCD_EP_ISR_Handler(hpcd); in HAL_PCD_IRQHandler()
1028 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); in HAL_PCD_IRQHandler()
1031 hpcd->ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1033 HAL_PCD_ResetCallback(hpcd); in HAL_PCD_IRQHandler()
1036 (void)HAL_PCD_SetAddress(hpcd, 0U); in HAL_PCD_IRQHandler()
1043 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); in HAL_PCD_IRQHandler()
1050 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); in HAL_PCD_IRQHandler()
1057 hpcd->Instance->CNTR &= ~(USB_CNTR_SUSPRDY); in HAL_PCD_IRQHandler()
1058 hpcd->Instance->CNTR &= ~(USB_CNTR_SUSPEN); in HAL_PCD_IRQHandler()
1060 if (hpcd->LPM_State == LPM_L1) in HAL_PCD_IRQHandler()
1062 hpcd->LPM_State = LPM_L0; in HAL_PCD_IRQHandler()
1064 hpcd->LPMCallback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1066 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L0_ACTIVE); in HAL_PCD_IRQHandler()
1071 hpcd->ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1073 HAL_PCD_ResumeCallback(hpcd); in HAL_PCD_IRQHandler()
1076 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); in HAL_PCD_IRQHandler()
1084 hpcd->Instance->CNTR |= USB_CNTR_SUSPEN; in HAL_PCD_IRQHandler()
1087 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); in HAL_PCD_IRQHandler()
1089 hpcd->Instance->CNTR |= USB_CNTR_SUSPRDY; in HAL_PCD_IRQHandler()
1092 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1094 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1103 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_L1REQ); in HAL_PCD_IRQHandler()
1104 if (hpcd->LPM_State == LPM_L0) in HAL_PCD_IRQHandler()
1107 hpcd->Instance->CNTR |= USB_CNTR_SUSPRDY; in HAL_PCD_IRQHandler()
1108 hpcd->Instance->CNTR |= USB_CNTR_SUSPEN; in HAL_PCD_IRQHandler()
1110 hpcd->LPM_State = LPM_L1; in HAL_PCD_IRQHandler()
1111 hpcd->BESL = ((uint32_t)hpcd->Instance->LPMCSR & USB_LPMCSR_BESL) >> 2; in HAL_PCD_IRQHandler()
1113 hpcd->LPMCallback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1115 HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L1_ACTIVE); in HAL_PCD_IRQHandler()
1121 hpcd->SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1123 HAL_PCD_SuspendCallback(hpcd); in HAL_PCD_IRQHandler()
1132 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); in HAL_PCD_IRQHandler()
1135 hpcd->SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1137 HAL_PCD_SOFCallback(hpcd); in HAL_PCD_IRQHandler()
1146 __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); in HAL_PCD_IRQHandler()
1159 __weak void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_DataOutStageCallback() argument
1162 UNUSED(hpcd); in HAL_PCD_DataOutStageCallback()
1176 __weak void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_DataInStageCallback() argument
1179 UNUSED(hpcd); in HAL_PCD_DataInStageCallback()
1191 __weak void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SetupStageCallback() argument
1194 UNUSED(hpcd); in HAL_PCD_SetupStageCallback()
1206 __weak void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SOFCallback() argument
1209 UNUSED(hpcd); in HAL_PCD_SOFCallback()
1221 __weak void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ResetCallback() argument
1224 UNUSED(hpcd); in HAL_PCD_ResetCallback()
1236 __weak void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_SuspendCallback() argument
1239 UNUSED(hpcd); in HAL_PCD_SuspendCallback()
1251 __weak void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ResumeCallback() argument
1254 UNUSED(hpcd); in HAL_PCD_ResumeCallback()
1267 __weak void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_ISOOUTIncompleteCallback() argument
1270 UNUSED(hpcd); in HAL_PCD_ISOOUTIncompleteCallback()
1284 __weak void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) in HAL_PCD_ISOINIncompleteCallback() argument
1287 UNUSED(hpcd); in HAL_PCD_ISOINIncompleteCallback()
1300 __weak void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_ConnectCallback() argument
1303 UNUSED(hpcd); in HAL_PCD_ConnectCallback()
1315 __weak void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) in HAL_PCD_DisconnectCallback() argument
1318 UNUSED(hpcd); in HAL_PCD_DisconnectCallback()
1349 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd) in HAL_PCD_DevConnect() argument
1351 __HAL_LOCK(hpcd); in HAL_PCD_DevConnect()
1352 (void)USB_DevConnect(hpcd->Instance); in HAL_PCD_DevConnect()
1353 __HAL_UNLOCK(hpcd); in HAL_PCD_DevConnect()
1363 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd) in HAL_PCD_DevDisconnect() argument
1365 __HAL_LOCK(hpcd); in HAL_PCD_DevDisconnect()
1366 (void)USB_DevDisconnect(hpcd->Instance); in HAL_PCD_DevDisconnect()
1367 __HAL_UNLOCK(hpcd); in HAL_PCD_DevDisconnect()
1378 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) in HAL_PCD_SetAddress() argument
1380 __HAL_LOCK(hpcd); in HAL_PCD_SetAddress()
1381 hpcd->USB_Address = address; in HAL_PCD_SetAddress()
1382 (void)USB_SetDevAddress(hpcd->Instance, address); in HAL_PCD_SetAddress()
1383 __HAL_UNLOCK(hpcd); in HAL_PCD_SetAddress()
1395 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, in HAL_PCD_EP_Open() argument
1403 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Open()
1408 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Open()
1422 __HAL_LOCK(hpcd); in HAL_PCD_EP_Open()
1423 (void)USB_ActivateEndpoint(hpcd->Instance, ep); in HAL_PCD_EP_Open()
1424 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Open()
1435 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Close() argument
1441 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Close()
1446 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Close()
1451 __HAL_LOCK(hpcd); in HAL_PCD_EP_Close()
1452 (void)USB_DeactivateEndpoint(hpcd->Instance, ep); in HAL_PCD_EP_Close()
1453 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Close()
1466 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint3… in HAL_PCD_EP_Receive() argument
1470 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Receive()
1479 (void)USB_EPStartXfer(hpcd->Instance, ep); in HAL_PCD_EP_Receive()
1490 uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr) in HAL_PCD_EP_GetRxCount() argument
1492 return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; in HAL_PCD_EP_GetRxCount()
1502 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint… in HAL_PCD_EP_Transmit() argument
1506 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Transmit()
1517 (void)USB_EPStartXfer(hpcd->Instance, ep); in HAL_PCD_EP_Transmit()
1528 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_SetStall() argument
1532 if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) in HAL_PCD_EP_SetStall()
1539 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_SetStall()
1544 ep = &hpcd->OUT_ep[ep_addr]; in HAL_PCD_EP_SetStall()
1551 __HAL_LOCK(hpcd); in HAL_PCD_EP_SetStall()
1553 (void)USB_EPSetStall(hpcd->Instance, ep); in HAL_PCD_EP_SetStall()
1555 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_SetStall()
1566 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_ClrStall() argument
1570 if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) in HAL_PCD_EP_ClrStall()
1577 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_ClrStall()
1582 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_ClrStall()
1589 __HAL_LOCK(hpcd); in HAL_PCD_EP_ClrStall()
1590 (void)USB_EPClearStall(hpcd->Instance, ep); in HAL_PCD_EP_ClrStall()
1591 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_ClrStall()
1602 HAL_StatusTypeDef HAL_PCD_EP_Abort(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Abort() argument
1609 ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Abort()
1613 ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; in HAL_PCD_EP_Abort()
1617 ret = USB_EPStopXfer(hpcd->Instance, ep); in HAL_PCD_EP_Abort()
1628 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) in HAL_PCD_EP_Flush() argument
1630 __HAL_LOCK(hpcd); in HAL_PCD_EP_Flush()
1634 (void)USB_FlushTxFifo(hpcd->Instance, (uint32_t)ep_addr & EP_ADDR_MSK); in HAL_PCD_EP_Flush()
1638 (void)USB_FlushRxFifo(hpcd->Instance); in HAL_PCD_EP_Flush()
1641 __HAL_UNLOCK(hpcd); in HAL_PCD_EP_Flush()
1651 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) in HAL_PCD_ActivateRemoteWakeup() argument
1653 return (USB_ActivateRemoteWakeup(hpcd->Instance)); in HAL_PCD_ActivateRemoteWakeup()
1661 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) in HAL_PCD_DeActivateRemoteWakeup() argument
1663 return (USB_DeActivateRemoteWakeup(hpcd->Instance)); in HAL_PCD_DeActivateRemoteWakeup()
1690 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef const *hpcd) in HAL_PCD_GetState() argument
1692 return hpcd->State; in HAL_PCD_GetState()
1714 static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) in PCD_EP_ISR_Handler() argument
1728 while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) in PCD_EP_ISR_Handler()
1730 wIstr = (uint16_t)hpcd->Instance->ISTR; in PCD_EP_ISR_Handler()
1746 PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
1747 ep = &hpcd->IN_ep[0]; in PCD_EP_ISR_Handler()
1749 ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
1754 hpcd->DataInStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
1756 HAL_PCD_DataInStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
1759 if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) in PCD_EP_ISR_Handler()
1761 hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); in PCD_EP_ISR_Handler()
1762 hpcd->USB_Address = 0U; in PCD_EP_ISR_Handler()
1771 ep = &hpcd->OUT_ep[0]; in PCD_EP_ISR_Handler()
1772 wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
1777 ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
1779 USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, in PCD_EP_ISR_Handler()
1783 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
1787 hpcd->SetupStageCallback(hpcd); in PCD_EP_ISR_Handler()
1789 HAL_PCD_SetupStageCallback(hpcd); in PCD_EP_ISR_Handler()
1794 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
1797 ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
1801 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, in PCD_EP_ISR_Handler()
1808 hpcd->DataOutStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
1810 HAL_PCD_DataOutStageCallback(hpcd, 0U); in PCD_EP_ISR_Handler()
1814 wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); in PCD_EP_ISR_Handler()
1818 PCD_SET_EP_RX_CNT(hpcd->Instance, PCD_ENDP0, ep->maxpacket); in PCD_EP_ISR_Handler()
1819 PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); in PCD_EP_ISR_Handler()
1828 wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
1833 PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
1834 ep = &hpcd->OUT_ep[epindex]; in PCD_EP_ISR_Handler()
1839 count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
1843 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); in PCD_EP_ISR_Handler()
1852 count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); in PCD_EP_ISR_Handler()
1857 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in PCD_EP_ISR_Handler()
1859 if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) in PCD_EP_ISR_Handler()
1862 count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
1866 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); in PCD_EP_ISR_Handler()
1872 count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
1876 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); in PCD_EP_ISR_Handler()
1891 hpcd->DataOutStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
1893 HAL_PCD_DataOutStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
1898 (void)USB_EPStartXfer(hpcd->Instance, ep); in PCD_EP_ISR_Handler()
1904 ep = &hpcd->IN_ep[epindex]; in PCD_EP_ISR_Handler()
1907 PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); in PCD_EP_ISR_Handler()
1918 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in PCD_EP_ISR_Handler()
1922 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in PCD_EP_ISR_Handler()
1929 hpcd->DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
1931 HAL_PCD_DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
1940 TxPctSize = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); in PCD_EP_ISR_Handler()
1956 hpcd->DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
1958 HAL_PCD_DataInStageCallback(hpcd, ep->num); in PCD_EP_ISR_Handler()
1966 (void)USB_EPStartXfer(hpcd->Instance, ep); in PCD_EP_ISR_Handler()
1973 (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); in PCD_EP_ISR_Handler()
1993 static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, in HAL_PCD_EP_DB_Receive() argument
2002 count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Receive()
2016 PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); in HAL_PCD_EP_DB_Receive()
2022 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in HAL_PCD_EP_DB_Receive()
2027 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); in HAL_PCD_EP_DB_Receive()
2034 count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Receive()
2048 PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); in HAL_PCD_EP_DB_Receive()
2054 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); in HAL_PCD_EP_DB_Receive()
2059 USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); in HAL_PCD_EP_DB_Receive()
2074 static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, in HAL_PCD_EP_DB_Transmit() argument
2084 TxPctSize = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Transmit()
2098 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2099 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2103 hpcd->DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2105 HAL_PCD_DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2110 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2118 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2147 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); in HAL_PCD_EP_DB_Transmit()
2150 USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); in HAL_PCD_EP_DB_Transmit()
2157 TxPctSize = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); in HAL_PCD_EP_DB_Transmit()
2171 PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2172 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); in HAL_PCD_EP_DB_Transmit()
2176 hpcd->DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2178 HAL_PCD_DataInStageCallback(hpcd, ep->num); in HAL_PCD_EP_DB_Transmit()
2184 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2192 PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); in HAL_PCD_EP_DB_Transmit()
2220 PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); in HAL_PCD_EP_DB_Transmit()
2223 USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); in HAL_PCD_EP_DB_Transmit()
2229 PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); in HAL_PCD_EP_DB_Transmit()