Lines Matching refs:hsdio

276 static HAL_StatusTypeDef SDIO_InitCard(SDIO_HandleTypeDef *hsdio);
277 static HAL_StatusTypeDef SDIO_ReadDirect(SDIO_HandleTypeDef *hsdio, uint32_t addr, uint32_t raw, ui…
279 static HAL_StatusTypeDef SDIO_WriteDirect(SDIO_HandleTypeDef *hsdio, uint32_t addr, uint32_t raw, u…
281 static HAL_StatusTypeDef SDIO_WriteExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef…
283 static uint8_t SDIO_Convert_Block_Size(SDIO_HandleTypeDef *hsdio, uint32_t block_size);
284 static HAL_StatusTypeDef SDIO_IOFunction_IRQHandler(SDIO_HandleTypeDef *hsdio);
313 HAL_StatusTypeDef HAL_SDIO_Init(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_Init() argument
320 assert_param(hsdio != NULL); in HAL_SDIO_Init()
321 assert_param(IS_SDMMC_ALL_INSTANCE(hsdio->Instance)); in HAL_SDIO_Init()
322 assert_param(IS_SDMMC_CLOCK_EDGE(hsdio->Init.ClockEdge)); in HAL_SDIO_Init()
323 assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hsdio->Init.ClockPowerSave)); in HAL_SDIO_Init()
324 assert_param(IS_SDMMC_BUS_WIDE(hsdio->Init.BusWide)); in HAL_SDIO_Init()
325 assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hsdio->Init.HardwareFlowControl)); in HAL_SDIO_Init()
326 assert_param(IS_SDMMC_CLKDIV(hsdio->Init.ClockDiv)); in HAL_SDIO_Init()
329 if (hsdio == NULL) in HAL_SDIO_Init()
334 if (hsdio->State == HAL_SDIO_STATE_RESET) in HAL_SDIO_Init()
338 hsdio->TxCpltCallback = HAL_SDIO_TxCpltCallback; in HAL_SDIO_Init()
339 hsdio->RxCpltCallback = HAL_SDIO_RxCpltCallback; in HAL_SDIO_Init()
340 hsdio->ErrorCallback = HAL_SDIO_ErrorCallback; in HAL_SDIO_Init()
342 if (hsdio->Init.TranceiverPresent == SDMMC_TRANSCEIVER_PRESENT) in HAL_SDIO_Init()
344 hsdio->DriveTransceiver_1_8V_Callback = HAL_SDIO_DriveTransceiver_1_8V_Callback; in HAL_SDIO_Init()
348 if (hsdio->MspInitCallback == NULL) in HAL_SDIO_Init()
350 hsdio->MspInitCallback = HAL_SDIO_MspInit; in HAL_SDIO_Init()
353 hsdio->MspInitCallback(hsdio); in HAL_SDIO_Init()
356 HAL_SDIO_MspInit(hsdio); in HAL_SDIO_Init()
368 hsdio->ErrorCode = SDMMC_ERROR_INVALID_PARAMETER; in HAL_SDIO_Init()
373 (void)SDMMC_Init(hsdio->Instance, Init); in HAL_SDIO_Init()
376 (void)SDMMC_PowerState_ON(hsdio->Instance); in HAL_SDIO_Init()
382 if (hsdio->SDIO_IdentifyCard == NULL) in HAL_SDIO_Init()
384 hsdio->SDIO_IdentifyCard = SDIO_InitCard; in HAL_SDIO_Init()
387 if (hsdio->SDIO_IdentifyCard(hsdio) != HAL_OK) in HAL_SDIO_Init()
389 hsdio->State = HAL_SDIO_STATE_RESET; in HAL_SDIO_Init()
394 Init.ClockEdge = hsdio->Init.ClockEdge; in HAL_SDIO_Init()
395 Init.ClockPowerSave = hsdio->Init.ClockPowerSave; in HAL_SDIO_Init()
396 Init.BusWide = hsdio->Init.BusWide; in HAL_SDIO_Init()
397 Init.HardwareFlowControl = hsdio->Init.HardwareFlowControl; in HAL_SDIO_Init()
398 Init.ClockDiv = hsdio->Init.ClockDiv; in HAL_SDIO_Init()
399 (void)SDMMC_Init(hsdio->Instance, Init); in HAL_SDIO_Init()
401 data = (hsdio->Init.BusWide == HAL_SDIO_4_WIRES_MODE) ? 2U : 0U; in HAL_SDIO_Init()
402 …if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR4_SD_BYTE3, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &data… in HAL_SDIO_Init()
407 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_Init()
408 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_Init()
418 HAL_StatusTypeDef HAL_SDIO_DeInit(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_DeInit() argument
421 assert_param(IS_SDMMC_ALL_INSTANCE(hsdio->Instance)); in HAL_SDIO_DeInit()
424 if (hsdio == NULL) in HAL_SDIO_DeInit()
430 (void)SDMMC_PowerState_OFF(hsdio->Instance); in HAL_SDIO_DeInit()
433 if (hsdio->MspDeInitCallback == NULL) in HAL_SDIO_DeInit()
435 hsdio->MspDeInitCallback = HAL_SDIO_MspDeInit; in HAL_SDIO_DeInit()
439 hsdio->MspDeInitCallback(hsdio); in HAL_SDIO_DeInit()
442 HAL_SDIO_MspDeInit(hsdio); in HAL_SDIO_DeInit()
445 hsdio->ErrorCode = HAL_SDIO_ERROR_NONE; in HAL_SDIO_DeInit()
446 hsdio->State = HAL_SDIO_STATE_RESET; in HAL_SDIO_DeInit()
456 __weak void HAL_SDIO_MspInit(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_MspInit() argument
459 UNUSED(hsdio); in HAL_SDIO_MspInit()
471 __weak void HAL_SDIO_MspDeInit(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_MspDeInit() argument
474 UNUSED(hsdio); in HAL_SDIO_MspDeInit()
507 HAL_StatusTypeDef HAL_SDIO_SetDataBusWidth(SDIO_HandleTypeDef *hsdio, uint32_t BusWide) in HAL_SDIO_SetDataBusWidth() argument
513 assert_param(hsdio != NULL); in HAL_SDIO_SetDataBusWidth()
516 if (hsdio == NULL) in HAL_SDIO_SetDataBusWidth()
521 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_SetDataBusWidth()
524 MODIFY_REG(hsdio->Instance->CLKCR, SDMMC_CLKCR_WIDBUS, in HAL_SDIO_SetDataBusWidth()
527 …if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR4_SD_BYTE3, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &data… in HAL_SDIO_SetDataBusWidth()
546 HAL_StatusTypeDef HAL_SDIO_ConfigFrequency(SDIO_HandleTypeDef *hsdio, uint32_t ClockSpeed) in HAL_SDIO_ConfigFrequency() argument
551 assert_param(hsdio != NULL); in HAL_SDIO_ConfigFrequency()
554 if (hsdio == NULL) in HAL_SDIO_ConfigFrequency()
559 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_ConfigFrequency()
562 MODIFY_REG(hsdio->Instance->CLKCR, SDMMC_CLKCR_CLKDIV, ClockDiv); in HAL_SDIO_ConfigFrequency()
580 HAL_StatusTypeDef HAL_SDIO_SetBlockSize(SDIO_HandleTypeDef *hsdio, uint8_t function_nbr, uint16_t B… in HAL_SDIO_SetBlockSize() argument
585 assert_param(hsdio != NULL); in HAL_SDIO_SetBlockSize()
590 if (hsdio == NULL) in HAL_SDIO_SetBlockSize()
600 if (SDIO_WriteExtended(hsdio, &cmd53, (uint8_t *)(&BlockSize), 2U) != HAL_OK) in HAL_SDIO_SetBlockSize()
605 hsdio->block_size = BlockSize; in HAL_SDIO_SetBlockSize()
616 HAL_StatusTypeDef HAL_SDIO_SetSpeedMode(SDIO_HandleTypeDef *hsdio, uint32_t DataRate) in HAL_SDIO_SetSpeedMode() argument
622 assert_param(hsdio != NULL); in HAL_SDIO_SetSpeedMode()
625 if (hsdio == NULL) in HAL_SDIO_SetSpeedMode()
634 …errorstate = SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR16_SD_BYTE3, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTIO… in HAL_SDIO_SetSpeedMode()
639 …errorstate = SDIO_WriteDirect(hsdio, ((SDIO_FUNCTION_0 << 2U) | (SDIO_FUNCTION_0 << 1U) | (SDIO_FU… in HAL_SDIO_SetSpeedMode()
641 MODIFY_REG(hsdio->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED, SDMMC_CLKCR_BUSSPEED); in HAL_SDIO_SetSpeedMode()
646 …errorstate = SDIO_WriteDirect(hsdio, ((SDIO_FUNCTION_0 << 2) | (SDIO_FUNCTION_0 << 1) | (SDIO_FUNC… in HAL_SDIO_SetSpeedMode()
648 MODIFY_REG(hsdio->Instance->CLKCR, SDMMC_CLKCR_DDR | SDMMC_CLKCR_BUSSPEED, in HAL_SDIO_SetSpeedMode()
663 HAL_StatusTypeDef HAL_SDIO_CardReset(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_CardReset() argument
668 assert_param(hsdio != NULL); in HAL_SDIO_CardReset()
671 if (hsdio == NULL) in HAL_SDIO_CardReset()
681 …if (SDIO_WriteDirect(hsdio, ((SDIO_FUNCTION_0 << 2) | (SDIO_FUNCTION_0 << 1) | (SDIO_FUNCTION_0 <<… in HAL_SDIO_CardReset()
690 hsdio->State = HAL_SDIO_STATE_RESET; in HAL_SDIO_CardReset()
701 HAL_StatusTypeDef HAL_SDIO_GetCardCommonControlRegister(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CCCR_Ty… in HAL_SDIO_GetCardCommonControlRegister() argument
706 assert_param(hsdio != NULL); in HAL_SDIO_GetCardCommonControlRegister()
709 if ((hsdio == NULL) || (pCccr == NULL)) in HAL_SDIO_GetCardCommonControlRegister()
716 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR0 + count, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &tempBu… in HAL_SDIO_GetCardCommonControlRegister()
742 HAL_StatusTypeDef HAL_SDIO_GetCardFBRRegister(SDIO_HandleTypeDef *hsdio, HAL_SDIO_FBR_t *pFbr) in HAL_SDIO_GetCardFBRRegister() argument
748 assert_param(hsdio != NULL); in HAL_SDIO_GetCardFBRRegister()
751 if ((hsdio == NULL) || (pFbr == NULL)) in HAL_SDIO_GetCardFBRRegister()
760 if (SDIO_ReadDirect(hsdio, (((uint32_t)SDMMC_SDIO_F1BR0 * (uint32_t)func_idx) + count), in HAL_SDIO_GetCardFBRRegister()
808 HAL_StatusTypeDef HAL_SDIO_ReadDirect(SDIO_HandleTypeDef *hsdio, HAL_SDIO_DirectCmd_TypeDef *Argume… in HAL_SDIO_ReadDirect() argument
814 assert_param(hsdio != NULL); in HAL_SDIO_ReadDirect()
819 if ((hsdio == NULL) || (Argument == NULL) || (NULL == pData)) in HAL_SDIO_ReadDirect()
824 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_ReadDirect()
826 hsdio->ErrorCode = HAL_SDIO_ERROR_NONE; in HAL_SDIO_ReadDirect()
827 hsdio->State = HAL_SDIO_STATE_BUSY; in HAL_SDIO_ReadDirect()
834 errorstate = SDMMC_SDIO_CmdReadWriteDirect(hsdio->Instance, cmd, pData); in HAL_SDIO_ReadDirect()
838 hsdio->ErrorCode |= errorstate; in HAL_SDIO_ReadDirect()
843 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_ReadDirect()
844 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadDirect()
845 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_ReadDirect()
850 __SDMMC_CMDTRANS_DISABLE(hsdio->Instance); in HAL_SDIO_ReadDirect()
853 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_ReadDirect()
855 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadDirect()
873 HAL_StatusTypeDef HAL_SDIO_WriteDirect(SDIO_HandleTypeDef *hsdio, HAL_SDIO_DirectCmd_TypeDef *Argum… in HAL_SDIO_WriteDirect() argument
879 assert_param(hsdio != NULL); in HAL_SDIO_WriteDirect()
883 if ((hsdio == NULL) || (Argument == NULL)) in HAL_SDIO_WriteDirect()
888 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_WriteDirect()
890 hsdio->ErrorCode = HAL_SDIO_ERROR_NONE; in HAL_SDIO_WriteDirect()
891 hsdio->State = HAL_SDIO_STATE_BUSY; in HAL_SDIO_WriteDirect()
898 errorstate = SDMMC_SDIO_CmdReadWriteDirect(hsdio->Instance, cmd, &Data); in HAL_SDIO_WriteDirect()
901 hsdio->ErrorCode |= errorstate; in HAL_SDIO_WriteDirect()
906 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_WriteDirect()
907 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteDirect()
908 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_WriteDirect()
913 __SDMMC_CMDTRANS_DISABLE(hsdio->Instance); in HAL_SDIO_WriteDirect()
916 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_WriteDirect()
918 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteDirect()
937 HAL_StatusTypeDef HAL_SDIO_ReadExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Ar… in HAL_SDIO_ReadExtended() argument
952 assert_param(hsdio != NULL); in HAL_SDIO_ReadExtended()
956 if ((hsdio == NULL) || (Argument == NULL) || (pData == NULL)) in HAL_SDIO_ReadExtended()
961 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_ReadExtended()
963 hsdio->ErrorCode = HAL_SDIO_ERROR_NONE; in HAL_SDIO_ReadExtended()
964 hsdio->State = HAL_SDIO_STATE_BUSY; in HAL_SDIO_ReadExtended()
967 nbr_of_block = (Size_byte & ~(hsdio->block_size & 1U)) >> __CLZ(__RBIT(hsdio->block_size)); in HAL_SDIO_ReadExtended()
970 if ((hsdio->Instance->DCTRL & SDMMC_DCTRL_SDIOEN) != 0U) in HAL_SDIO_ReadExtended()
972 hsdio->Instance->DCTRL = SDMMC_DCTRL_SDIOEN; in HAL_SDIO_ReadExtended()
976 hsdio->Instance->DCTRL = 0U; in HAL_SDIO_ReadExtended()
985 config.DataLength = (uint32_t)(nbr_of_block * hsdio->block_size); in HAL_SDIO_ReadExtended()
986 config.DataBlockSize = SDIO_Convert_Block_Size(hsdio, hsdio->block_size); in HAL_SDIO_ReadExtended()
1000 (void)SDMMC_ConfigData(hsdio->Instance, &config); in HAL_SDIO_ReadExtended()
1001 __SDMMC_CMDTRANS_ENABLE(hsdio->Instance); in HAL_SDIO_ReadExtended()
1005hsdio->Context = (Argument->Block_Mode == HAL_SDIO_MODE_BLOCK) ? SDIO_CONTEXT_READ_MULTIPLE_BLOCK : in HAL_SDIO_ReadExtended()
1013 errorstate = SDMMC_SDIO_CmdReadWriteExtended(hsdio->Instance, cmd); in HAL_SDIO_ReadExtended()
1016 hsdio->ErrorCode |= errorstate; in HAL_SDIO_ReadExtended()
1020 MODIFY_REG(hsdio->Instance->DCTRL, SDMMC_DCTRL_FIFORST, SDMMC_DCTRL_FIFORST); in HAL_SDIO_ReadExtended()
1021 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_ReadExtended()
1022 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_ReadExtended()
1023 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadExtended()
1024 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_ReadExtended()
1032 while (!__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | in HAL_SDIO_ReadExtended()
1035 if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= 32U)) in HAL_SDIO_ReadExtended()
1040 data = SDMMC_ReadFIFO(hsdio->Instance); in HAL_SDIO_ReadExtended()
1054 while ((dataremaining > 0U) && !(__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_RXFIFOE))) in HAL_SDIO_ReadExtended()
1056 data = SDMMC_ReadFIFO(hsdio->Instance); in HAL_SDIO_ReadExtended()
1075 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_ReadExtended()
1076 hsdio->ErrorCode |= HAL_SDIO_ERROR_TIMEOUT; in HAL_SDIO_ReadExtended()
1077 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadExtended()
1078 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_ReadExtended()
1082 __SDMMC_CMDTRANS_DISABLE(hsdio->Instance); in HAL_SDIO_ReadExtended()
1084 if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_DTIMEOUT)) in HAL_SDIO_ReadExtended()
1087 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_ReadExtended()
1088 hsdio->ErrorCode |= HAL_SDIO_ERROR_DATA_TIMEOUT; in HAL_SDIO_ReadExtended()
1089 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadExtended()
1090 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_ReadExtended()
1093 else if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_DCRCFAIL)) in HAL_SDIO_ReadExtended()
1096 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_ReadExtended()
1097 hsdio->ErrorCode |= HAL_SDIO_ERROR_DATA_CRC_FAIL; in HAL_SDIO_ReadExtended()
1098 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadExtended()
1099 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_ReadExtended()
1102 else if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_RXOVERR)) in HAL_SDIO_ReadExtended()
1105 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_ReadExtended()
1107 hsdio->ErrorCode |= HAL_SDIO_ERROR_RX_OVERRUN; in HAL_SDIO_ReadExtended()
1108 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadExtended()
1109 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_ReadExtended()
1112 else if (hsdio->ErrorCode == SDMMC_ERROR_INVALID_PARAMETER) in HAL_SDIO_ReadExtended()
1114 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_ReadExtended()
1115 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadExtended()
1116 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_ReadExtended()
1125 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_ReadExtended()
1127 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadExtended()
1146 HAL_StatusTypeDef HAL_SDIO_WriteExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *A… in HAL_SDIO_WriteExtended() argument
1161 assert_param(hsdio != NULL); in HAL_SDIO_WriteExtended()
1165 if ((hsdio == NULL) || (Argument == NULL) || (pData == NULL)) in HAL_SDIO_WriteExtended()
1170 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_WriteExtended()
1172 hsdio->ErrorCode = HAL_SDIO_ERROR_NONE; in HAL_SDIO_WriteExtended()
1173 hsdio->State = HAL_SDIO_STATE_BUSY; in HAL_SDIO_WriteExtended()
1176 nbr_of_block = (Size_byte & ~(hsdio->block_size & 1U)) >> __CLZ(__RBIT(hsdio->block_size)); in HAL_SDIO_WriteExtended()
1179 if ((hsdio->Instance->DCTRL & SDMMC_DCTRL_SDIOEN) != 0U) in HAL_SDIO_WriteExtended()
1181 hsdio->Instance->DCTRL = SDMMC_DCTRL_SDIOEN; in HAL_SDIO_WriteExtended()
1185 hsdio->Instance->DCTRL = 0U; in HAL_SDIO_WriteExtended()
1192 config.DataLength = (uint32_t)(nbr_of_block * hsdio->block_size); in HAL_SDIO_WriteExtended()
1193 config.DataBlockSize = SDIO_Convert_Block_Size(hsdio, hsdio->block_size); in HAL_SDIO_WriteExtended()
1206 (void)SDMMC_ConfigData(hsdio->Instance, &config); in HAL_SDIO_WriteExtended()
1207 __SDMMC_CMDTRANS_ENABLE(hsdio->Instance); in HAL_SDIO_WriteExtended()
1210hsdio->Context = (Argument->Block_Mode == HAL_SDIO_MODE_BLOCK) ? SDIO_CONTEXT_WRITE_MULTIPLE_BLOCK… in HAL_SDIO_WriteExtended()
1218 errorstate = SDMMC_SDIO_CmdReadWriteExtended(hsdio->Instance, cmd); in HAL_SDIO_WriteExtended()
1221 hsdio->ErrorCode |= errorstate; in HAL_SDIO_WriteExtended()
1225 MODIFY_REG(hsdio->Instance->DCTRL, SDMMC_DCTRL_FIFORST, SDMMC_DCTRL_FIFORST); in HAL_SDIO_WriteExtended()
1226 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_WriteExtended()
1227 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_WriteExtended()
1228 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteExtended()
1229 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_WriteExtended()
1235 …while (!__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT… in HAL_SDIO_WriteExtended()
1239 if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= 32U)) in HAL_SDIO_WriteExtended()
1244 hsdio->Instance->FIFO = *u32tempbuff; in HAL_SDIO_WriteExtended()
1249 …else if ((dataremaining < 32U) && (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_TXFIFOHE | SDMMC_FLAG_TXF… in HAL_SDIO_WriteExtended()
1261 hsdio->Instance->FIFO = data; in HAL_SDIO_WriteExtended()
1267 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_WriteExtended()
1268 hsdio->ErrorCode |= HAL_SDIO_ERROR_TIMEOUT; in HAL_SDIO_WriteExtended()
1269 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteExtended()
1270 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_WriteExtended()
1275 __SDMMC_CMDTRANS_DISABLE(hsdio->Instance); in HAL_SDIO_WriteExtended()
1277 if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_DTIMEOUT)) in HAL_SDIO_WriteExtended()
1280 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_WriteExtended()
1281 hsdio->ErrorCode |= HAL_SDIO_ERROR_DATA_TIMEOUT; in HAL_SDIO_WriteExtended()
1282 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteExtended()
1283 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_WriteExtended()
1286 else if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_DCRCFAIL)) in HAL_SDIO_WriteExtended()
1289 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_WriteExtended()
1290 hsdio->ErrorCode |= HAL_SDIO_ERROR_DATA_CRC_FAIL; in HAL_SDIO_WriteExtended()
1291 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteExtended()
1292 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_WriteExtended()
1295 else if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_TXUNDERR)) in HAL_SDIO_WriteExtended()
1298 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_WriteExtended()
1300 hsdio->ErrorCode |= HAL_SDIO_ERROR_TX_UNDERRUN; in HAL_SDIO_WriteExtended()
1301 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteExtended()
1302 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_WriteExtended()
1305 else if (hsdio->ErrorCode == SDMMC_ERROR_INVALID_PARAMETER) in HAL_SDIO_WriteExtended()
1307 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_WriteExtended()
1308 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteExtended()
1309 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_WriteExtended()
1318 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_WriteExtended()
1320 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteExtended()
1338 HAL_StatusTypeDef HAL_SDIO_ReadExtended_DMA(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef… in HAL_SDIO_ReadExtended_DMA() argument
1348 assert_param(hsdio != NULL); in HAL_SDIO_ReadExtended_DMA()
1352 if ((hsdio == NULL) || (Argument == NULL) || (pData == NULL)) in HAL_SDIO_ReadExtended_DMA()
1357 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_ReadExtended_DMA()
1359 hsdio->ErrorCode = HAL_SDIO_ERROR_NONE; in HAL_SDIO_ReadExtended_DMA()
1360 hsdio->State = HAL_SDIO_STATE_BUSY; in HAL_SDIO_ReadExtended_DMA()
1363 if ((hsdio->Instance->DCTRL & SDMMC_DCTRL_SDIOEN) != 0U) in HAL_SDIO_ReadExtended_DMA()
1365 hsdio->Instance->DCTRL = SDMMC_DCTRL_SDIOEN; in HAL_SDIO_ReadExtended_DMA()
1369 hsdio->Instance->DCTRL = 0U; in HAL_SDIO_ReadExtended_DMA()
1373 hsdio->pRxBuffPtr = (uint8_t *)pData; in HAL_SDIO_ReadExtended_DMA()
1374 hsdio->RxXferSize = Size_byte; in HAL_SDIO_ReadExtended_DMA()
1375 hsdio->next_data_addr = (uint32_t)pData; in HAL_SDIO_ReadExtended_DMA()
1378 nbr_of_block = (Size_byte & ~(hsdio->block_size & 1U)) >> __CLZ(__RBIT(hsdio->block_size)); in HAL_SDIO_ReadExtended_DMA()
1382 hsdio->remaining_data = (Size_byte - (hsdio->block_size * nbr_of_block)); in HAL_SDIO_ReadExtended_DMA()
1383hsdio->next_reg_addr = (Argument->Reg_Addr) | ((((nbr_of_block * hsdio->block_size) >> 1U) & 0x3FF… in HAL_SDIO_ReadExtended_DMA()
1384 … | ((hsdio->remaining_data <= HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? 1U : 0U); in HAL_SDIO_ReadExtended_DMA()
1385 hsdio->next_data_addr += (nbr_of_block * hsdio->block_size); in HAL_SDIO_ReadExtended_DMA()
1389 hsdio->next_data_addr += (Size_byte < HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? Size_byte : in HAL_SDIO_ReadExtended_DMA()
1391 if (hsdio->remaining_data != 0U) in HAL_SDIO_ReadExtended_DMA()
1393 hsdio->remaining_data = (Size_byte >= HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? in HAL_SDIO_ReadExtended_DMA()
1395 (Size_byte - hsdio->remaining_data); in HAL_SDIO_ReadExtended_DMA()
1396 hsdio->next_reg_addr += (Size_byte >= HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? \ in HAL_SDIO_ReadExtended_DMA()
1402 hsdio->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_SDIO_ReadExtended_DMA()
1403 hsdio->Instance->IDMABASE0 = (uint32_t)p_dma_buffer; in HAL_SDIO_ReadExtended_DMA()
1409 config.DataLength = (uint32_t)(nbr_of_block * hsdio->block_size); in HAL_SDIO_ReadExtended_DMA()
1410 config.DataBlockSize = SDIO_Convert_Block_Size(hsdio, hsdio->block_size); in HAL_SDIO_ReadExtended_DMA()
1422 (void)SDMMC_ConfigData(hsdio->Instance, &config); in HAL_SDIO_ReadExtended_DMA()
1424 __SDMMC_CMDTRANS_ENABLE(hsdio->Instance); in HAL_SDIO_ReadExtended_DMA()
1427hsdio->Context = (uint32_t)((Argument->Block_Mode == HAL_SDIO_MODE_BLOCK) ? SDIO_CONTEXT_READ_MULT… in HAL_SDIO_ReadExtended_DMA()
1436 errorstate = SDMMC_SDIO_CmdReadWriteExtended(hsdio->Instance, cmd); in HAL_SDIO_ReadExtended_DMA()
1439 hsdio->ErrorCode |= errorstate; in HAL_SDIO_ReadExtended_DMA()
1443 MODIFY_REG(hsdio->Instance->DCTRL, SDMMC_DCTRL_FIFORST, SDMMC_DCTRL_FIFORST); in HAL_SDIO_ReadExtended_DMA()
1444 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_ReadExtended_DMA()
1445 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_ReadExtended_DMA()
1446 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_ReadExtended_DMA()
1447 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_ReadExtended_DMA()
1452 …__HAL_SDIO_ENABLE_IT(hsdio, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_D… in HAL_SDIO_ReadExtended_DMA()
1470 HAL_StatusTypeDef HAL_SDIO_WriteExtended_DMA(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDe… in HAL_SDIO_WriteExtended_DMA() argument
1480 assert_param(hsdio != NULL); in HAL_SDIO_WriteExtended_DMA()
1484 if ((hsdio == NULL) || (Argument == NULL) || (pData == NULL)) in HAL_SDIO_WriteExtended_DMA()
1489 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_WriteExtended_DMA()
1491 hsdio->ErrorCode = HAL_SDIO_ERROR_NONE; in HAL_SDIO_WriteExtended_DMA()
1492 hsdio->State = HAL_SDIO_STATE_BUSY; in HAL_SDIO_WriteExtended_DMA()
1495 if ((hsdio->Instance->DCTRL & SDMMC_DCTRL_SDIOEN) != 0U) in HAL_SDIO_WriteExtended_DMA()
1497 hsdio->Instance->DCTRL = SDMMC_DCTRL_SDIOEN; in HAL_SDIO_WriteExtended_DMA()
1501 hsdio->Instance->DCTRL = 0U; in HAL_SDIO_WriteExtended_DMA()
1505 hsdio->pTxBuffPtr = (uint8_t *)pData; in HAL_SDIO_WriteExtended_DMA()
1506 hsdio->TxXferSize = Size_byte; in HAL_SDIO_WriteExtended_DMA()
1507 hsdio->next_data_addr = (uint32_t)pData; in HAL_SDIO_WriteExtended_DMA()
1509 nbr_of_block = (Size_byte & ~(hsdio->block_size & 1U)) >> __CLZ(__RBIT(hsdio->block_size)); in HAL_SDIO_WriteExtended_DMA()
1513 hsdio->remaining_data = (Size_byte - (hsdio->block_size * nbr_of_block)); in HAL_SDIO_WriteExtended_DMA()
1514 if (hsdio->block_size <= 128U) in HAL_SDIO_WriteExtended_DMA()
1516 hsdio->next_reg_addr = (Argument->Reg_Addr) | in HAL_SDIO_WriteExtended_DMA()
1517 ((((nbr_of_block * hsdio->block_size) >> 1U) & 0x3FFFU) << 1U) | in HAL_SDIO_WriteExtended_DMA()
1518 … ((hsdio->remaining_data <= HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? 1U : 0U); in HAL_SDIO_WriteExtended_DMA()
1522 hsdio->next_reg_addr = (nbr_of_block * hsdio->block_size) >> 1U; in HAL_SDIO_WriteExtended_DMA()
1524 hsdio->next_data_addr += (nbr_of_block * hsdio->block_size); in HAL_SDIO_WriteExtended_DMA()
1528 hsdio->remaining_data = (Size_byte >= HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? in HAL_SDIO_WriteExtended_DMA()
1530 (Size_byte - hsdio->remaining_data); in HAL_SDIO_WriteExtended_DMA()
1531 if (hsdio->remaining_data != 0U) in HAL_SDIO_WriteExtended_DMA()
1533 hsdio->remaining_data = (Size_byte >= HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? in HAL_SDIO_WriteExtended_DMA()
1535 (Size_byte - hsdio->remaining_data); in HAL_SDIO_WriteExtended_DMA()
1536 hsdio->next_reg_addr += ((Size_byte >= HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? \ in HAL_SDIO_WriteExtended_DMA()
1538 (((hsdio->remaining_data > 0U) ? 0U : 1U)); in HAL_SDIO_WriteExtended_DMA()
1540 hsdio->next_data_addr += (Size_byte < HAL_SDIO_DATA_BLOCK_SIZE_512BYTE) ? Size_byte : in HAL_SDIO_WriteExtended_DMA()
1545 hsdio->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_SDIO_WriteExtended_DMA()
1546 hsdio->Instance->IDMABASE0 = (uint32_t)p_dma_buffer; in HAL_SDIO_WriteExtended_DMA()
1552 config.DataLength = (uint32_t)(nbr_of_block * hsdio->block_size); in HAL_SDIO_WriteExtended_DMA()
1553 config.DataBlockSize = SDIO_Convert_Block_Size(hsdio, hsdio->block_size); in HAL_SDIO_WriteExtended_DMA()
1565 (void)SDMMC_ConfigData(hsdio->Instance, &config); in HAL_SDIO_WriteExtended_DMA()
1567 __SDMMC_CMDTRANS_ENABLE(hsdio->Instance); in HAL_SDIO_WriteExtended_DMA()
1570 hsdio->Context = (uint32_t)((Argument->Block_Mode == HAL_SDIO_MODE_BLOCK) ? in HAL_SDIO_WriteExtended_DMA()
1580 errorstate = SDMMC_SDIO_CmdReadWriteExtended(hsdio->Instance, cmd); in HAL_SDIO_WriteExtended_DMA()
1583 hsdio->ErrorCode |= errorstate; in HAL_SDIO_WriteExtended_DMA()
1587 MODIFY_REG(hsdio->Instance->DCTRL, SDMMC_DCTRL_FIFORST, SDMMC_DCTRL_FIFORST); in HAL_SDIO_WriteExtended_DMA()
1588 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in HAL_SDIO_WriteExtended_DMA()
1589 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in HAL_SDIO_WriteExtended_DMA()
1590 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_WriteExtended_DMA()
1591 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_WriteExtended_DMA()
1596 …__HAL_SDIO_ENABLE_IT(hsdio, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_… in HAL_SDIO_WriteExtended_DMA()
1628 void HAL_SDIO_IRQHandler(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_IRQHandler() argument
1632 uint32_t ctx = hsdio->Context; in HAL_SDIO_IRQHandler()
1635 flags = READ_REG(((SDMMC_TypeDef *)((uint32_t)(hsdio)->Instance))->STA); in HAL_SDIO_IRQHandler()
1639 (void)SDIO_IOFunction_IRQHandler(hsdio); in HAL_SDIO_IRQHandler()
1644 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_FLAG_DATAEND); in HAL_SDIO_IRQHandler()
1646 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_IRQHandler()
1648 …__HAL_SDIO_DISABLE_IT(hsdio, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_… in HAL_SDIO_IRQHandler()
1651 __HAL_SDIO_DISABLE_IT(hsdio, SDMMC_IT_IDMABTC); in HAL_SDIO_IRQHandler()
1652 __SDMMC_CMDTRANS_DISABLE(hsdio->Instance); in HAL_SDIO_IRQHandler()
1656 hsdio->Instance->DLEN = 0; in HAL_SDIO_IRQHandler()
1657 hsdio->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_SDIO_IRQHandler()
1658 if ((hsdio->Instance->DCTRL & SDMMC_DCTRL_SDIOEN) != 0U) in HAL_SDIO_IRQHandler()
1660 hsdio->Instance->DCTRL = SDMMC_DCTRL_SDIOEN; in HAL_SDIO_IRQHandler()
1664 hsdio->Instance->DCTRL = 0U; in HAL_SDIO_IRQHandler()
1667 hsdio->Context = SDIO_CONTEXT_NONE; in HAL_SDIO_IRQHandler()
1668 hsdio->State = HAL_SDIO_STATE_READY; in HAL_SDIO_IRQHandler()
1671 if (hsdio->remaining_data != 0U) in HAL_SDIO_IRQHandler()
1674 CMD53_desc.Reg_Addr = hsdio->next_reg_addr; in HAL_SDIO_IRQHandler()
1679 hsdio->pRxBuffPtr = (uint8_t *)hsdio->next_data_addr; in HAL_SDIO_IRQHandler()
1680 …errorstate = HAL_SDIO_ReadExtended_DMA(hsdio, &CMD53_desc, hsdio->pRxBuffPtr, hsdio->remaining_da… in HAL_SDIO_IRQHandler()
1684 hsdio->pTxBuffPtr = (uint8_t *)hsdio->next_data_addr; in HAL_SDIO_IRQHandler()
1685 …errorstate = HAL_SDIO_WriteExtended_DMA(hsdio, &CMD53_desc, hsdio->pTxBuffPtr, hsdio->remaining_d… in HAL_SDIO_IRQHandler()
1690 hsdio->ErrorCallback(hsdio); in HAL_SDIO_IRQHandler()
1692 HAL_SDIO_ErrorCallback(hsdio); in HAL_SDIO_IRQHandler()
1699 hsdio->RxCpltCallback(hsdio); in HAL_SDIO_IRQHandler()
1701 HAL_SDIO_RxCpltCallback(hsdio); in HAL_SDIO_IRQHandler()
1707 hsdio->TxCpltCallback(hsdio); in HAL_SDIO_IRQHandler()
1709 HAL_SDIO_TxCpltCallback(hsdio); in HAL_SDIO_IRQHandler()
1714 …if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_RXOVERR | SD… in HAL_SDIO_IRQHandler()
1717 hsdio->ErrorCallback(hsdio); in HAL_SDIO_IRQHandler()
1719 HAL_SDIO_ErrorCallback(hsdio); in HAL_SDIO_IRQHandler()
1729 __weak void HAL_SDIO_TxCpltCallback(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_TxCpltCallback() argument
1732 UNUSED(hsdio); in HAL_SDIO_TxCpltCallback()
1744 __weak void HAL_SDIO_RxCpltCallback(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_RxCpltCallback() argument
1747 UNUSED(hsdio); in HAL_SDIO_RxCpltCallback()
1759 __weak void HAL_SDIO_ErrorCallback(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_ErrorCallback() argument
1762 UNUSED(hsdio); in HAL_SDIO_ErrorCallback()
1775 __weak void HAL_SDIO_IOFunctionCallback(SDIO_HandleTypeDef *hsdio, uint32_t func) in HAL_SDIO_IOFunctionCallback() argument
1778 UNUSED(hsdio); in HAL_SDIO_IOFunctionCallback()
1793 __weak void HAL_SDIO_DriveTransceiver_1_8V_Callback(SDIO_HandleTypeDef *hsdio, FlagStatus status) in HAL_SDIO_DriveTransceiver_1_8V_Callback() argument
1796 UNUSED(hsdio); in HAL_SDIO_DriveTransceiver_1_8V_Callback()
1819 HAL_StatusTypeDef HAL_SDIO_RegisterCallback(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CallbackIDTypeDef C… in HAL_SDIO_RegisterCallback() argument
1825 assert_param(hsdio != NULL); in HAL_SDIO_RegisterCallback()
1831 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_RegisterCallback()
1835 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_RegisterCallback()
1840 hsdio->TxCpltCallback = pCallback; in HAL_SDIO_RegisterCallback()
1843 hsdio->RxCpltCallback = pCallback; in HAL_SDIO_RegisterCallback()
1846 hsdio->ErrorCallback = pCallback; in HAL_SDIO_RegisterCallback()
1849 hsdio->MspInitCallback = pCallback; in HAL_SDIO_RegisterCallback()
1852 hsdio->MspDeInitCallback = pCallback; in HAL_SDIO_RegisterCallback()
1856 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_RegisterCallback()
1862 else if (hsdio->State == HAL_SDIO_STATE_RESET) in HAL_SDIO_RegisterCallback()
1867 hsdio->MspInitCallback = pCallback; in HAL_SDIO_RegisterCallback()
1870 hsdio->MspDeInitCallback = pCallback; in HAL_SDIO_RegisterCallback()
1874 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_RegisterCallback()
1883 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_RegisterCallback()
1902 HAL_StatusTypeDef HAL_SDIO_UnRegisterCallback(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CallbackIDTypeDef… in HAL_SDIO_UnRegisterCallback() argument
1906 assert_param(hsdio != NULL); in HAL_SDIO_UnRegisterCallback()
1909 if (hsdio == NULL) in HAL_SDIO_UnRegisterCallback()
1914 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_UnRegisterCallback()
1919 hsdio->TxCpltCallback = HAL_SDIO_TxCpltCallback; in HAL_SDIO_UnRegisterCallback()
1922 hsdio->RxCpltCallback = HAL_SDIO_RxCpltCallback; in HAL_SDIO_UnRegisterCallback()
1925 hsdio->ErrorCallback = HAL_SDIO_ErrorCallback; in HAL_SDIO_UnRegisterCallback()
1928 hsdio->MspInitCallback = HAL_SDIO_MspInit; in HAL_SDIO_UnRegisterCallback()
1931 hsdio->MspDeInitCallback = HAL_SDIO_MspDeInit; in HAL_SDIO_UnRegisterCallback()
1934 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_UnRegisterCallback()
1939 else if (hsdio->State == HAL_SDIO_STATE_RESET) in HAL_SDIO_UnRegisterCallback()
1944 hsdio->MspInitCallback = HAL_SDIO_MspInit; in HAL_SDIO_UnRegisterCallback()
1947 hsdio->MspDeInitCallback = HAL_SDIO_MspDeInit; in HAL_SDIO_UnRegisterCallback()
1950 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_UnRegisterCallback()
1957 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_UnRegisterCallback()
1973 HAL_StatusTypeDef HAL_SDIO_RegisterTransceiverCallback(SDIO_HandleTypeDef *hsdio, in HAL_SDIO_RegisterTransceiverCallback() argument
1981 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_RegisterTransceiverCallback()
1985 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_RegisterTransceiverCallback()
1987 hsdio->DriveTransceiver_1_8V_Callback = pCallback; in HAL_SDIO_RegisterTransceiverCallback()
1992 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_RegisterTransceiverCallback()
2006 HAL_StatusTypeDef HAL_SDIO_UnRegisterTransceiverCallback(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_UnRegisterTransceiverCallback() argument
2010 if (hsdio->State == HAL_SDIO_STATE_READY) in HAL_SDIO_UnRegisterTransceiverCallback()
2012 hsdio->DriveTransceiver_1_8V_Callback = HAL_SDIO_DriveTransceiver_1_8V_Callback; in HAL_SDIO_UnRegisterTransceiverCallback()
2017 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_UnRegisterTransceiverCallback()
2032 HAL_StatusTypeDef HAL_SDIO_RegisterIdentifyCardCallback(SDIO_HandleTypeDef *hsdio, in HAL_SDIO_RegisterIdentifyCardCallback() argument
2036 assert_param(hsdio != NULL); in HAL_SDIO_RegisterIdentifyCardCallback()
2042 hsdio->ErrorCode |= HAL_SDIO_ERROR_INVALID_CALLBACK; in HAL_SDIO_RegisterIdentifyCardCallback()
2046 hsdio->SDIO_IdentifyCard = pCallback; in HAL_SDIO_RegisterIdentifyCardCallback()
2072 HAL_SDIO_StateTypeDef HAL_SDIO_GetState(const SDIO_HandleTypeDef *hsdio) in HAL_SDIO_GetState() argument
2074 return hsdio->State; in HAL_SDIO_GetState()
2082 uint32_t HAL_SDIO_GetError(const SDIO_HandleTypeDef *hsdio) in HAL_SDIO_GetError() argument
2084 return hsdio->ErrorCode; in HAL_SDIO_GetError()
2111 HAL_StatusTypeDef HAL_SDIO_EnableIOFunctionInterrupt(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction) in HAL_SDIO_EnableIOFunctionInterrupt() argument
2116 assert_param(hsdio != NULL); in HAL_SDIO_EnableIOFunctionInterrupt()
2120 if (hsdio == NULL) in HAL_SDIO_EnableIOFunctionInterrupt()
2125 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR4, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &intEn) != HAL_… in HAL_SDIO_EnableIOFunctionInterrupt()
2138 hsdio->IOInterruptNbr++; in HAL_SDIO_EnableIOFunctionInterrupt()
2141 if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR4, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, in HAL_SDIO_EnableIOFunctionInterrupt()
2147 __HAL_SDIO_ENABLE_IT(hsdio, SDMMC_IT_SDIOIT); in HAL_SDIO_EnableIOFunctionInterrupt()
2150 __SDMMC_OPERATION_ENABLE(hsdio->Instance); in HAL_SDIO_EnableIOFunctionInterrupt()
2161 HAL_StatusTypeDef HAL_SDIO_DisableIOFunctionInterrupt(SDIO_HandleTypeDef *hsdio, uint32_t IOFunctio… in HAL_SDIO_DisableIOFunctionInterrupt() argument
2166 assert_param(hsdio != NULL); in HAL_SDIO_DisableIOFunctionInterrupt()
2170 if (hsdio == NULL) in HAL_SDIO_DisableIOFunctionInterrupt()
2175 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR4, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &intEn) != HAL_… in HAL_SDIO_DisableIOFunctionInterrupt()
2191 if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR4, HAL_SDIO_READ_AFTER_WRITE, SDIO_FUNCTION_0, in HAL_SDIO_DisableIOFunctionInterrupt()
2197 if (hsdio->IOInterruptNbr > 1U) in HAL_SDIO_DisableIOFunctionInterrupt()
2199 hsdio->IOInterruptNbr--; in HAL_SDIO_DisableIOFunctionInterrupt()
2203 hsdio->IOInterruptNbr = 0U; in HAL_SDIO_DisableIOFunctionInterrupt()
2204 __HAL_SDIO_DISABLE_IT(hsdio, SDMMC_IT_SDIOIT); in HAL_SDIO_DisableIOFunctionInterrupt()
2215 HAL_StatusTypeDef HAL_SDIO_EnableIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction) in HAL_SDIO_EnableIOFunction() argument
2221 assert_param(hsdio != NULL); in HAL_SDIO_EnableIOFunction()
2225 if (hsdio == NULL) in HAL_SDIO_EnableIOFunction()
2230 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR0_SD_BYTE2, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &ioEn)… in HAL_SDIO_EnableIOFunction()
2245 …if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR0_SD_BYTE2, HAL_SDIO_READ_AFTER_WRITE, SDIO_FUNCTION_0,… in HAL_SDIO_EnableIOFunction()
2250 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR0_SD_BYTE3, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &ioRea… in HAL_SDIO_EnableIOFunction()
2269 HAL_StatusTypeDef HAL_SDIO_DisableIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction) in HAL_SDIO_DisableIOFunction() argument
2274 assert_param(hsdio != NULL); in HAL_SDIO_DisableIOFunction()
2278 if (hsdio == NULL) in HAL_SDIO_DisableIOFunction()
2283 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR0_SD_BYTE2, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &ioEn)… in HAL_SDIO_DisableIOFunction()
2298 …if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR0_SD_BYTE2, HAL_SDIO_READ_AFTER_WRITE, SDIO_FUNCTION_0,… in HAL_SDIO_DisableIOFunction()
2312 HAL_StatusTypeDef HAL_SDIO_SelectIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction) in HAL_SDIO_SelectIOFunction() argument
2315 assert_param(hsdio != NULL); in HAL_SDIO_SelectIOFunction()
2319 if (hsdio == NULL) in HAL_SDIO_SelectIOFunction()
2324 …if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR12_SD_BYTE1, HAL_SDIO_READ_AFTER_WRITE, SDIO_FUNCTION_0, in HAL_SDIO_SelectIOFunction()
2339 HAL_StatusTypeDef HAL_SDIO_AbortIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction) in HAL_SDIO_AbortIOFunction() argument
2342 assert_param(hsdio != NULL); in HAL_SDIO_AbortIOFunction()
2346 if (hsdio == NULL) in HAL_SDIO_AbortIOFunction()
2351 if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR4_SD_BYTE2, HAL_SDIO_READ_AFTER_WRITE, SDIO_FUNCTION_0, in HAL_SDIO_AbortIOFunction()
2365 HAL_StatusTypeDef HAL_SDIO_EnableIOAsynInterrupt(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_EnableIOAsynInterrupt() argument
2370 assert_param(hsdio != NULL); in HAL_SDIO_EnableIOAsynInterrupt()
2373 if (hsdio == NULL) in HAL_SDIO_EnableIOAsynInterrupt()
2378 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR20_SD_BYTE2, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &enab… in HAL_SDIO_EnableIOAsynInterrupt()
2394 …if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR20_SD_BYTE2, HAL_SDIO_READ_AFTER_WRITE, SDIO_FUNCTION_0, in HAL_SDIO_EnableIOAsynInterrupt()
2408 HAL_StatusTypeDef HAL_SDIO_DisableIOAsynInterrupt(SDIO_HandleTypeDef *hsdio) in HAL_SDIO_DisableIOAsynInterrupt() argument
2413 assert_param(hsdio != NULL); in HAL_SDIO_DisableIOAsynInterrupt()
2416 if (hsdio == NULL) in HAL_SDIO_DisableIOAsynInterrupt()
2421 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR20_SD_BYTE2, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &enab… in HAL_SDIO_DisableIOAsynInterrupt()
2437 …if (SDIO_WriteDirect(hsdio, SDMMC_SDIO_CCCR20_SD_BYTE2, HAL_SDIO_READ_AFTER_WRITE, SDIO_FUNCTION_0, in HAL_SDIO_DisableIOAsynInterrupt()
2452 HAL_StatusTypeDef HAL_SDIO_RegisterIOFunctionCallback(SDIO_HandleTypeDef *hsdio, uint32_t IOFunctio… in HAL_SDIO_RegisterIOFunctionCallback() argument
2456 assert_param(hsdio != NULL); in HAL_SDIO_RegisterIOFunctionCallback()
2460 if (hsdio == NULL) in HAL_SDIO_RegisterIOFunctionCallback()
2465 hsdio->SDIO_IOFunction_Callback[(uint32_t)IOFunction] = pCallback; in HAL_SDIO_RegisterIOFunctionCallback()
2466 hsdio->IOFunctionMask |= (1U << (uint8_t)IOFunction); in HAL_SDIO_RegisterIOFunctionCallback()
2487 static HAL_StatusTypeDef SDIO_InitCard(SDIO_HandleTypeDef *hsdio) in SDIO_InitCard() argument
2496 errorstate = SDMMC_CmdGoIdleState(hsdio->Instance); in SDIO_InitCard()
2503 if (SDMMC_GetPowerState(hsdio->Instance) == 0U) in SDIO_InitCard()
2509 errorstate = SDMMC_CmdSendOperationcondition(hsdio->Instance, 0U, &Resp4); in SDIO_InitCard()
2520 …if (SDMMC_CmdSendOperationcondition(hsdio->Instance, (SDIO_OCR_VDD_32_33 | SDIO_OCR_SDIO_S18R), &R… in SDIO_InitCard()
2529 errorstate = SDMMC_CmdVoltageSwitch(hsdio->Instance); in SDIO_InitCard()
2546 errorstate = SDMMC_CmdSetRelAdd(hsdio->Instance, &sdio_rca); in SDIO_InitCard()
2557 errorstate = SDMMC_CmdSelDesel(hsdio->Instance, (uint32_t)(((uint32_t)sdio_rca) << 16U)); in SDIO_InitCard()
2573 static HAL_StatusTypeDef SDIO_ReadDirect(SDIO_HandleTypeDef *hsdio, uint32_t addr, uint32_t raw, in SDIO_ReadDirect() argument
2583 errorstate = SDMMC_SDIO_CmdReadWriteDirect(hsdio->Instance, cmd, pData); in SDIO_ReadDirect()
2586 hsdio->ErrorCode |= errorstate; in SDIO_ReadDirect()
2588 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in SDIO_ReadDirect()
2589 hsdio->State = HAL_SDIO_STATE_READY; in SDIO_ReadDirect()
2590 hsdio->Context = SDIO_CONTEXT_NONE; in SDIO_ReadDirect()
2593 __SDMMC_CMDTRANS_DISABLE(hsdio->Instance); in SDIO_ReadDirect()
2596 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in SDIO_ReadDirect()
2608 static HAL_StatusTypeDef SDIO_WriteDirect(SDIO_HandleTypeDef *hsdio, uint32_t addr, uint32_t raw, in SDIO_WriteDirect() argument
2620 errorstate = SDMMC_SDIO_CmdReadWriteDirect(hsdio->Instance, cmd, &response); in SDIO_WriteDirect()
2624 hsdio->ErrorCode |= errorstate; in SDIO_WriteDirect()
2626 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in SDIO_WriteDirect()
2627 hsdio->State = HAL_SDIO_STATE_READY; in SDIO_WriteDirect()
2628 hsdio->Context = SDIO_CONTEXT_NONE; in SDIO_WriteDirect()
2631 __SDMMC_CMDTRANS_DISABLE(hsdio->Instance); in SDIO_WriteDirect()
2634 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in SDIO_WriteDirect()
2647 static HAL_StatusTypeDef SDIO_WriteExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef… in SDIO_WriteExtended() argument
2662 hsdio->ErrorCode = HAL_SDIO_ERROR_NONE; in SDIO_WriteExtended()
2665 …nbr_of_block = (((uint32_t)Size_byte & ~((uint32_t)hsdio->block_size & 1U))) >> __CLZ(__RBIT(hsdio in SDIO_WriteExtended()
2668 if ((hsdio->Instance->DCTRL & SDMMC_DCTRL_SDIOEN) != 0U) in SDIO_WriteExtended()
2670 hsdio->Instance->DCTRL = SDMMC_DCTRL_SDIOEN; in SDIO_WriteExtended()
2674 hsdio->Instance->DCTRL = 0U; in SDIO_WriteExtended()
2681 config.DataLength = (uint32_t)(nbr_of_block * hsdio->block_size); in SDIO_WriteExtended()
2682 config.DataBlockSize = SDIO_Convert_Block_Size(hsdio, hsdio->block_size); in SDIO_WriteExtended()
2694 (void)SDMMC_ConfigData(hsdio->Instance, &config); in SDIO_WriteExtended()
2695 __SDMMC_CMDTRANS_ENABLE(hsdio->Instance); in SDIO_WriteExtended()
2697hsdio->Context = (cmd_arg->Block_Mode == HAL_SDIO_MODE_BLOCK) ? SDIO_CONTEXT_WRITE_MULTIPLE_BLOCK : in SDIO_WriteExtended()
2705 errorstate = SDMMC_SDIO_CmdReadWriteExtended(hsdio->Instance, cmd); in SDIO_WriteExtended()
2708 MODIFY_REG(hsdio->Instance->DCTRL, SDMMC_DCTRL_FIFORST, SDMMC_DCTRL_FIFORST); in SDIO_WriteExtended()
2709 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in SDIO_WriteExtended()
2710 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in SDIO_WriteExtended()
2711 hsdio->ErrorCode |= errorstate; in SDIO_WriteExtended()
2712 hsdio->State = HAL_SDIO_STATE_READY; in SDIO_WriteExtended()
2713 hsdio->Context = SDIO_CONTEXT_NONE; in SDIO_WriteExtended()
2717 SDMMCx = hsdio->Instance; in SDIO_WriteExtended()
2719 …while (!__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT… in SDIO_WriteExtended()
2722 if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= 32U)) in SDIO_WriteExtended()
2731 …else if ((dataremaining < 32U) && (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_TXFIFOHE | SDMMC_FLAG_TXF… in SDIO_WriteExtended()
2748 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in SDIO_WriteExtended()
2749 hsdio->ErrorCode |= HAL_SDIO_ERROR_TIMEOUT; in SDIO_WriteExtended()
2750 hsdio->State = HAL_SDIO_STATE_READY; in SDIO_WriteExtended()
2751 hsdio->Context = SDIO_CONTEXT_NONE; in SDIO_WriteExtended()
2756 __SDMMC_CMDTRANS_DISABLE(hsdio->Instance); in SDIO_WriteExtended()
2757 if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_DTIMEOUT)) in SDIO_WriteExtended()
2759 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in SDIO_WriteExtended()
2760 hsdio->ErrorCode |= HAL_SDIO_ERROR_DATA_TIMEOUT; in SDIO_WriteExtended()
2761 hsdio->State = HAL_SDIO_STATE_READY; in SDIO_WriteExtended()
2762 hsdio->Context = SDIO_CONTEXT_NONE; in SDIO_WriteExtended()
2765 else if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_DCRCFAIL)) in SDIO_WriteExtended()
2767 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in SDIO_WriteExtended()
2768 hsdio->ErrorCode |= HAL_SDIO_ERROR_DATA_CRC_FAIL; in SDIO_WriteExtended()
2769 hsdio->State = HAL_SDIO_STATE_READY; in SDIO_WriteExtended()
2770 hsdio->Context = SDIO_CONTEXT_NONE; in SDIO_WriteExtended()
2773 else if (__HAL_SDIO_GET_FLAG(hsdio, SDMMC_FLAG_TXUNDERR)) in SDIO_WriteExtended()
2775 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_FLAGS); in SDIO_WriteExtended()
2776 hsdio->ErrorCode |= HAL_SDIO_ERROR_TX_UNDERRUN; in SDIO_WriteExtended()
2777 hsdio->State = HAL_SDIO_STATE_READY; in SDIO_WriteExtended()
2778 hsdio->Context = SDIO_CONTEXT_NONE; in SDIO_WriteExtended()
2781 else if (hsdio->ErrorCode == SDMMC_ERROR_INVALID_PARAMETER) in SDIO_WriteExtended()
2783 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in SDIO_WriteExtended()
2784 hsdio->State = HAL_SDIO_STATE_READY; in SDIO_WriteExtended()
2785 hsdio->Context = SDIO_CONTEXT_NONE; in SDIO_WriteExtended()
2793 __HAL_SDIO_CLEAR_FLAG(hsdio, SDMMC_STATIC_DATA_FLAGS); in SDIO_WriteExtended()
2804 static uint8_t SDIO_Convert_Block_Size(SDIO_HandleTypeDef *hsdio, uint32_t block_size) in SDIO_Convert_Block_Size() argument
2806 UNUSED(hsdio); in SDIO_Convert_Block_Size()
2824 static HAL_StatusTypeDef SDIO_IOFunction_IRQHandler(SDIO_HandleTypeDef *hsdio) in SDIO_IOFunction_IRQHandler() argument
2829 if (hsdio->IOInterruptNbr == 1U) in SDIO_IOFunction_IRQHandler()
2831 if ((hsdio->SDIO_IOFunction_Callback[hsdio->IOFunctionMask - 1U]) != NULL) in SDIO_IOFunction_IRQHandler()
2833 … (hsdio->SDIO_IOFunction_Callback[hsdio->IOFunctionMask - 1U])(hsdio, hsdio->IOFunctionMask - 1U); in SDIO_IOFunction_IRQHandler()
2836 else if ((hsdio->IOInterruptNbr > 1U) && (hsdio->IOFunctionMask != 0U)) in SDIO_IOFunction_IRQHandler()
2839 …if (SDIO_ReadDirect(hsdio, SDMMC_SDIO_CCCR4_SD_BYTE1, HAL_SDIO_WRITE_ONLY, SDIO_FUNCTION_0, &pendi… in SDIO_IOFunction_IRQHandler()
2845 if ((pendingInt != 0U) && (hsdio->IOFunctionMask != 0U)) in SDIO_IOFunction_IRQHandler()
2849 … if (((pendingInt & (1U << count)) != 0U) && (((1U << count) & hsdio->IOFunctionMask) != 0U)) in SDIO_IOFunction_IRQHandler()
2851 if ((hsdio->SDIO_IOFunction_Callback[count - 1U]) != NULL) in SDIO_IOFunction_IRQHandler()
2853 (hsdio->SDIO_IOFunction_Callback[count - 1U])(hsdio, count); in SDIO_IOFunction_IRQHandler()