Lines Matching refs:hmmc
310 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc);
311 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc);
312 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus);
313 static uint32_t MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t FieldIndex, …
314 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc);
315 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc);
316 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc);
322 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide);
352 HAL_StatusTypeDef HAL_MMC_Init(MMC_HandleTypeDef *hmmc) in HAL_MMC_Init() argument
355 if(hmmc == NULL) in HAL_MMC_Init()
361 assert_param(IS_SDIO_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_Init()
362 assert_param(IS_SDIO_CLOCK_EDGE(hmmc->Init.ClockEdge)); in HAL_MMC_Init()
363 assert_param(IS_SDIO_CLOCK_BYPASS(hmmc->Init.ClockBypass)); in HAL_MMC_Init()
364 assert_param(IS_SDIO_CLOCK_POWER_SAVE(hmmc->Init.ClockPowerSave)); in HAL_MMC_Init()
365 assert_param(IS_SDIO_BUS_WIDE(hmmc->Init.BusWide)); in HAL_MMC_Init()
366 assert_param(IS_SDIO_HARDWARE_FLOW_CONTROL(hmmc->Init.HardwareFlowControl)); in HAL_MMC_Init()
367 assert_param(IS_SDIO_CLKDIV(hmmc->Init.ClockDiv)); in HAL_MMC_Init()
369 if(hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_Init()
372 hmmc->Lock = HAL_UNLOCKED; in HAL_MMC_Init()
375 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_Init()
376 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_Init()
377 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_Init()
378 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_Init()
380 if(hmmc->MspInitCallback == NULL) in HAL_MMC_Init()
382 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_Init()
386 hmmc->MspInitCallback(hmmc); in HAL_MMC_Init()
389 HAL_MMC_MspInit(hmmc); in HAL_MMC_Init()
393 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Init()
396 if(HAL_MMC_InitCard(hmmc) == HAL_ERROR) in HAL_MMC_Init()
402 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_Init()
405 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Init()
408 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Init()
411 if (hmmc->Init.BusWide != SDIO_BUS_WIDE_1B) in HAL_MMC_Init()
413 if (HAL_MMC_ConfigWideBusOperation(hmmc, hmmc->Init.BusWide) != HAL_OK) in HAL_MMC_Init()
429 HAL_StatusTypeDef HAL_MMC_InitCard(MMC_HandleTypeDef *hmmc) in HAL_MMC_InitCard() argument
444 status = SDIO_Init(hmmc->Instance, Init); in HAL_MMC_InitCard()
451 __HAL_MMC_DISABLE(hmmc); in HAL_MMC_InitCard()
454 status = SDIO_PowerState_ON(hmmc->Instance); in HAL_MMC_InitCard()
461 __HAL_MMC_ENABLE(hmmc); in HAL_MMC_InitCard()
467 errorstate = MMC_PowerON(hmmc); in HAL_MMC_InitCard()
470 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
471 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
476 errorstate = MMC_InitCard(hmmc); in HAL_MMC_InitCard()
479 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
480 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
485 errorstate = SDMMC_CmdBlockLength(hmmc->Instance, MMC_BLOCKSIZE); in HAL_MMC_InitCard()
489 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_InitCard()
490 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
491 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
503 HAL_StatusTypeDef HAL_MMC_DeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_DeInit() argument
506 if(hmmc == NULL) in HAL_MMC_DeInit()
512 assert_param(IS_SDIO_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_DeInit()
514 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_DeInit()
517 MMC_PowerOFF(hmmc); in HAL_MMC_DeInit()
520 if(hmmc->MspDeInitCallback == NULL) in HAL_MMC_DeInit()
522 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_DeInit()
526 hmmc->MspDeInitCallback(hmmc); in HAL_MMC_DeInit()
529 HAL_MMC_MspDeInit(hmmc); in HAL_MMC_DeInit()
532 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_DeInit()
533 hmmc->State = HAL_MMC_STATE_RESET; in HAL_MMC_DeInit()
544 __weak void HAL_MMC_MspInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspInit() argument
547 UNUSED(hmmc); in HAL_MMC_MspInit()
559 __weak void HAL_MMC_MspDeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspDeInit() argument
562 UNUSED(hmmc); in HAL_MMC_MspDeInit()
600 HAL_StatusTypeDef HAL_MMC_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, ui… in HAL_MMC_ReadBlocks() argument
611 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks()
615 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks()
617 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks()
619 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks()
621 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks()
625 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks()
628 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks()
630 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks()
642 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks()
647 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_ReadBlocks()
650 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
654 hmmc->Context = MMC_CONTEXT_READ_SINGLE_BLOCK; in HAL_MMC_ReadBlocks()
657 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
662 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
663 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
664 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
671 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO… in HAL_MMC_ReadBlocks()
673 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO… in HAL_MMC_ReadBlocks()
676 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXFIFOHF) && (dataremaining > 0U)) in HAL_MMC_ReadBlocks()
681 data = SDIO_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
700 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
701 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
702 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
708 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_ReadBlocks()
711 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_ReadBlocks()
715 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
716 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
717 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
723 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DTIMEOUT)) in HAL_MMC_ReadBlocks()
726 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
727 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_ReadBlocks()
728 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
731 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL)) in HAL_MMC_ReadBlocks()
734 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
735 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_ReadBlocks()
736 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
739 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR)) in HAL_MMC_ReadBlocks()
742 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
743 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_ReadBlocks()
744 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
753 while ((__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXDAVL)) && (dataremaining > 0U)) in HAL_MMC_ReadBlocks()
755 data = SDIO_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
772 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
773 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
774 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
780 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_ReadBlocks()
782 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
788 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_ReadBlocks()
805 HAL_StatusTypeDef HAL_MMC_WriteBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, u… in HAL_MMC_WriteBlocks() argument
816 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks()
820 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks()
822 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks()
824 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks()
826 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks()
830 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks()
833 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks()
835 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks()
843 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_WriteBlocks()
846 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
850 hmmc->Context = MMC_CONTEXT_WRITE_SINGLE_BLOCK; in HAL_MMC_WriteBlocks()
853 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
858 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
859 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
860 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
871 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks()
876 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXUNDERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDI… in HAL_MMC_WriteBlocks()
878 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXUNDERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDI… in HAL_MMC_WriteBlocks()
881 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXFIFOHE) && (dataremaining > 0U)) in HAL_MMC_WriteBlocks()
898 (void)SDIO_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_WriteBlocks()
905 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
906 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
907 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
913 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_WriteBlocks()
916 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_WriteBlocks()
920 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
921 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
922 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
928 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DTIMEOUT)) in HAL_MMC_WriteBlocks()
931 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
932 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_WriteBlocks()
933 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
936 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL)) in HAL_MMC_WriteBlocks()
939 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
940 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_WriteBlocks()
941 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
944 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXUNDERR)) in HAL_MMC_WriteBlocks()
947 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
948 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_WriteBlocks()
949 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
958 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_WriteBlocks()
960 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
966 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_WriteBlocks()
984 HAL_StatusTypeDef HAL_MMC_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd,… in HAL_MMC_ReadBlocks_IT() argument
992 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_IT()
996 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_IT()
998 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_IT()
1000 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_IT()
1002 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_IT()
1006 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_IT()
1009 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_IT()
1011 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_IT()
1012 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_IT()
1015 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEND… in HAL_MMC_ReadBlocks_IT()
1017 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEND… in HAL_MMC_ReadBlocks_IT()
1020 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_IT()
1032 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_IT()
1037 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1040 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1044 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1047 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1053 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks_IT()
1054 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks_IT()
1055 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_IT()
1080 HAL_StatusTypeDef HAL_MMC_WriteBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd… in HAL_MMC_WriteBlocks_IT() argument
1088 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_IT()
1092 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_IT()
1094 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_IT()
1096 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_IT()
1098 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_IT()
1102 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_IT()
1105 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_IT()
1107 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_IT()
1108 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_IT()
1112 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_DATAEN… in HAL_MMC_WriteBlocks_IT()
1114 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_DATAEN… in HAL_MMC_WriteBlocks_IT()
1117 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_IT()
1125 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK| MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1128 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1132 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1135 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1140 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks_IT()
1141 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_IT()
1142 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_IT()
1153 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_IT()
1176 HAL_StatusTypeDef HAL_MMC_ReadBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd… in HAL_MMC_ReadBlocks_DMA() argument
1184 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_DMA()
1188 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_DMA()
1190 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_DMA()
1192 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_DMA()
1194 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_DMA()
1198 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_DMA()
1201 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_DMA()
1204 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEND… in HAL_MMC_ReadBlocks_DMA()
1206 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEND… in HAL_MMC_ReadBlocks_DMA()
1210 hmmc->hdmarx->XferCpltCallback = MMC_DMAReceiveCplt; in HAL_MMC_ReadBlocks_DMA()
1213 hmmc->hdmarx->XferErrorCallback = MMC_DMAError; in HAL_MMC_ReadBlocks_DMA()
1216 hmmc->hdmarx->XferAbortCallback = NULL; in HAL_MMC_ReadBlocks_DMA()
1218 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_DMA()
1224 hmmc->hdmarx->Init.Direction = DMA_PERIPH_TO_MEMORY; in HAL_MMC_ReadBlocks_DMA()
1225 MODIFY_REG(hmmc->hdmarx->Instance->CR, DMA_SxCR_DIR, hmmc->hdmarx->Init.Direction); in HAL_MMC_ReadBlocks_DMA()
1228 …if(HAL_DMA_Start_IT(hmmc->hdmarx, (uint32_t)&hmmc->Instance->FIFO, (uint32_t)pData, (uint32_t)(MMC… in HAL_MMC_ReadBlocks_DMA()
1230 …__HAL_MMC_DISABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEN… in HAL_MMC_ReadBlocks_DMA()
1231 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1232 hmmc->ErrorCode = HAL_MMC_ERROR_DMA; in HAL_MMC_ReadBlocks_DMA()
1233 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1239 __HAL_MMC_DMA_ENABLE(hmmc); in HAL_MMC_ReadBlocks_DMA()
1248 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_DMA()
1253 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1256 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1260 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1263 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1268 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1269 …__HAL_MMC_DISABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEN… in HAL_MMC_ReadBlocks_DMA()
1270 hmmc->ErrorCode = errorstate; in HAL_MMC_ReadBlocks_DMA()
1271 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1297 HAL_StatusTypeDef HAL_MMC_WriteBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAd… in HAL_MMC_WriteBlocks_DMA() argument
1305 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_DMA()
1309 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_DMA()
1311 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_DMA()
1313 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_DMA()
1315 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_DMA()
1319 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_DMA()
1322 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_DMA()
1326 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_STBITE… in HAL_MMC_WriteBlocks_DMA()
1328 __HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR)); in HAL_MMC_WriteBlocks_DMA()
1332 hmmc->hdmatx->XferCpltCallback = MMC_DMATransmitCplt; in HAL_MMC_WriteBlocks_DMA()
1335 hmmc->hdmatx->XferErrorCallback = MMC_DMAError; in HAL_MMC_WriteBlocks_DMA()
1338 hmmc->hdmatx->XferAbortCallback = NULL; in HAL_MMC_WriteBlocks_DMA()
1340 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_DMA()
1349 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1352 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1356 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1359 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1364 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1365 …__HAL_MMC_DISABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_DATAE… in HAL_MMC_WriteBlocks_DMA()
1366 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_DMA()
1367 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_DMA()
1372 __HAL_MMC_DMA_ENABLE(hmmc); in HAL_MMC_WriteBlocks_DMA()
1375 hmmc->hdmatx->Init.Direction = DMA_MEMORY_TO_PERIPH; in HAL_MMC_WriteBlocks_DMA()
1376 MODIFY_REG(hmmc->hdmatx->Instance->CR, DMA_SxCR_DIR, hmmc->hdmatx->Init.Direction); in HAL_MMC_WriteBlocks_DMA()
1379 …if(HAL_DMA_Start_IT(hmmc->hdmatx, (uint32_t)pData, (uint32_t)&hmmc->Instance->FIFO, (uint32_t)(MMC… in HAL_MMC_WriteBlocks_DMA()
1381 …__HAL_MMC_DISABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_DATAE… in HAL_MMC_WriteBlocks_DMA()
1382 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1383 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_WriteBlocks_DMA()
1384 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_DMA()
1396 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_DMA()
1416 HAL_StatusTypeDef HAL_MMC_Erase(MMC_HandleTypeDef *hmmc, uint32_t BlockStartAdd, uint32_t BlockEndA… in HAL_MMC_Erase() argument
1422 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Erase()
1424 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_Erase()
1428 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_Erase()
1432 if(end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_Erase()
1434 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_Erase()
1438 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Erase()
1441 if(((hmmc->MmcCard.Class) & SDIO_CCCC_ERASE) == 0U) in HAL_MMC_Erase()
1444 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1445 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_Erase()
1446 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1450 if((SDIO_GetResponse(hmmc->Instance, SDIO_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_Erase()
1453 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1454 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_Erase()
1455 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1459 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_Erase()
1466 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_Erase()
1470 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1471 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1472 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1477 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_Erase()
1481 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1482 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1483 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1488 errorstate = SDMMC_CmdErase(hmmc->Instance); in HAL_MMC_Erase()
1492 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1493 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1494 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1498 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1513 void HAL_MMC_IRQHandler(MMC_HandleTypeDef *hmmc) in HAL_MMC_IRQHandler() argument
1516 uint32_t context = hmmc->Context; in HAL_MMC_IRQHandler()
1519 if((__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXFIFOHF) != RESET) && ((context & MMC_CONTEXT_IT) != 0U)) in HAL_MMC_IRQHandler()
1521 MMC_Read_IT(hmmc); in HAL_MMC_IRQHandler()
1524 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DATAEND) != RESET) in HAL_MMC_IRQHandler()
1526 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_FLAG_DATAEND); in HAL_MMC_IRQHandler()
1529 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_IRQHandler()
1532 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT |\ in HAL_MMC_IRQHandler()
1537 hmmc->Instance->DCTRL &= ~(SDIO_DCTRL_DTEN); in HAL_MMC_IRQHandler()
1543 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1546 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1548 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1550 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1558 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDIO_DCTRL_DMAEN); in HAL_MMC_IRQHandler()
1560 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1563 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1565 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1574 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1577 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1579 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1581 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1587 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1589 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1593 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1595 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1601 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1603 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1613 …else if((__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXFIFOHE) != RESET) && ((context & MMC_CONTEXT_IT) != … in HAL_MMC_IRQHandler()
1615 MMC_Write_IT(hmmc); in HAL_MMC_IRQHandler()
1619 …else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_RXOVERR | SDI… in HAL_MMC_IRQHandler()
1621 …else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_RXOVERR | SDI… in HAL_MMC_IRQHandler()
1625 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL) != RESET) in HAL_MMC_IRQHandler()
1627 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_IRQHandler()
1629 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DTIMEOUT) != RESET) in HAL_MMC_IRQHandler()
1631 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_IRQHandler()
1633 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR) != RESET) in HAL_MMC_IRQHandler()
1635 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_IRQHandler()
1637 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXUNDERR) != RESET) in HAL_MMC_IRQHandler()
1639 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_IRQHandler()
1642 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_STBITERR) != RESET) in HAL_MMC_IRQHandler()
1644 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_IRQHandler()
1650 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS | SDIO_FLAG_STBITERR); in HAL_MMC_IRQHandler()
1653 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_IRQHandler()
1657 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1660 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_IRQHandler()
1664 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1669 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1671 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1673 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1679 if(hmmc->hdmatx != NULL) in HAL_MMC_IRQHandler()
1682 hmmc->hdmatx->XferAbortCallback = MMC_DMATxAbort; in HAL_MMC_IRQHandler()
1684 if(HAL_DMA_Abort_IT(hmmc->hdmatx) != HAL_OK) in HAL_MMC_IRQHandler()
1686 MMC_DMATxAbort(hmmc->hdmatx); in HAL_MMC_IRQHandler()
1689 else if(hmmc->hdmarx != NULL) in HAL_MMC_IRQHandler()
1692 hmmc->hdmarx->XferAbortCallback = MMC_DMARxAbort; in HAL_MMC_IRQHandler()
1694 if(HAL_DMA_Abort_IT(hmmc->hdmarx) != HAL_OK) in HAL_MMC_IRQHandler()
1696 MMC_DMARxAbort(hmmc->hdmarx); in HAL_MMC_IRQHandler()
1701 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_IRQHandler()
1702 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1704 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1706 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_IRQHandler()
1727 HAL_MMC_StateTypeDef HAL_MMC_GetState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetState() argument
1729 return hmmc->State; in HAL_MMC_GetState()
1738 uint32_t HAL_MMC_GetError(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetError() argument
1740 return hmmc->ErrorCode; in HAL_MMC_GetError()
1748 __weak void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_TxCpltCallback() argument
1751 UNUSED(hmmc); in HAL_MMC_TxCpltCallback()
1763 __weak void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_RxCpltCallback() argument
1766 UNUSED(hmmc); in HAL_MMC_RxCpltCallback()
1778 __weak void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_ErrorCallback() argument
1781 UNUSED(hmmc); in HAL_MMC_ErrorCallback()
1793 __weak void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_AbortCallback() argument
1796 UNUSED(hmmc); in HAL_MMC_AbortCallback()
1819 HAL_StatusTypeDef HAL_MMC_RegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Callb… in HAL_MMC_RegisterCallback() argument
1826 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1831 __HAL_LOCK(hmmc); in HAL_MMC_RegisterCallback()
1833 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RegisterCallback()
1838 hmmc->TxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1841 hmmc->RxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1844 hmmc->ErrorCallback = pCallback; in HAL_MMC_RegisterCallback()
1847 hmmc->AbortCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1850 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1853 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1857 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1863 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_RegisterCallback()
1868 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1871 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1875 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1884 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1890 __HAL_UNLOCK(hmmc); in HAL_MMC_RegisterCallback()
1908 HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Cal… in HAL_MMC_UnRegisterCallback() argument
1913 __HAL_LOCK(hmmc); in HAL_MMC_UnRegisterCallback()
1915 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_UnRegisterCallback()
1920 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_UnRegisterCallback()
1923 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_UnRegisterCallback()
1926 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_UnRegisterCallback()
1929 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_UnRegisterCallback()
1932 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
1935 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
1939 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1945 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_UnRegisterCallback()
1950 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
1953 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
1957 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1966 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1972 __HAL_UNLOCK(hmmc); in HAL_MMC_UnRegisterCallback()
2004 HAL_StatusTypeDef HAL_MMC_GetCardCID(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID) in HAL_MMC_GetCardCID() argument
2006 pCID->ManufacturerID = (uint8_t)((hmmc->CID[0] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2008 pCID->OEM_AppliID = (uint16_t)((hmmc->CID[0] & 0x00FFFF00U) >> 8U); in HAL_MMC_GetCardCID()
2010 pCID->ProdName1 = (((hmmc->CID[0] & 0x000000FFU) << 24U) | ((hmmc->CID[1] & 0xFFFFFF00U) >> 8U)); in HAL_MMC_GetCardCID()
2012 pCID->ProdName2 = (uint8_t)(hmmc->CID[1] & 0x000000FFU); in HAL_MMC_GetCardCID()
2014 pCID->ProdRev = (uint8_t)((hmmc->CID[2] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2016 pCID->ProdSN = (((hmmc->CID[2] & 0x00FFFFFFU) << 8U) | ((hmmc->CID[3] & 0xFF000000U) >> 24U)); in HAL_MMC_GetCardCID()
2018 pCID->Reserved1 = (uint8_t)((hmmc->CID[3] & 0x00F00000U) >> 20U); in HAL_MMC_GetCardCID()
2020 pCID->ManufactDate = (uint16_t)((hmmc->CID[3] & 0x000FFF00U) >> 8U); in HAL_MMC_GetCardCID()
2022 pCID->CID_CRC = (uint8_t)((hmmc->CID[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCID()
2037 HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD) in HAL_MMC_GetCardCSD() argument
2041 pCSD->CSDStruct = (uint8_t)((hmmc->CSD[0] & 0xC0000000U) >> 30U); in HAL_MMC_GetCardCSD()
2043 pCSD->SysSpecVersion = (uint8_t)((hmmc->CSD[0] & 0x3C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2045 pCSD->Reserved1 = (uint8_t)((hmmc->CSD[0] & 0x03000000U) >> 24U); in HAL_MMC_GetCardCSD()
2047 pCSD->TAAC = (uint8_t)((hmmc->CSD[0] & 0x00FF0000U) >> 16U); in HAL_MMC_GetCardCSD()
2049 pCSD->NSAC = (uint8_t)((hmmc->CSD[0] & 0x0000FF00U) >> 8U); in HAL_MMC_GetCardCSD()
2051 pCSD->MaxBusClkFrec = (uint8_t)(hmmc->CSD[0] & 0x000000FFU); in HAL_MMC_GetCardCSD()
2053 pCSD->CardComdClasses = (uint16_t)((hmmc->CSD[1] & 0xFFF00000U) >> 20U); in HAL_MMC_GetCardCSD()
2055 pCSD->RdBlockLen = (uint8_t)((hmmc->CSD[1] & 0x000F0000U) >> 16U); in HAL_MMC_GetCardCSD()
2057 pCSD->PartBlockRead = (uint8_t)((hmmc->CSD[1] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2059 pCSD->WrBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2061 pCSD->RdBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2063 pCSD->DSRImpl = (uint8_t)((hmmc->CSD[1] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2067 pCSD->DeviceSize = (((hmmc->CSD[1] & 0x000003FFU) << 2U) | ((hmmc->CSD[2] & 0xC0000000U) >> 30U)); in HAL_MMC_GetCardCSD()
2069 pCSD->MaxRdCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x38000000U) >> 27U); in HAL_MMC_GetCardCSD()
2071 pCSD->MaxRdCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x07000000U) >> 24U); in HAL_MMC_GetCardCSD()
2073 pCSD->MaxWrCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x00E00000U) >> 21U); in HAL_MMC_GetCardCSD()
2075 pCSD->MaxWrCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x001C0000U) >> 18U); in HAL_MMC_GetCardCSD()
2077 pCSD->DeviceSizeMul = (uint8_t)((hmmc->CSD[2] & 0x00038000U) >> 15U); in HAL_MMC_GetCardCSD()
2079 if(MMC_ReadExtCSD(hmmc, &block_nbr, 212, 0x0FFFFFFFU) != HAL_OK) /* Field SEC_COUNT [215:212] */ in HAL_MMC_GetCardCSD()
2084 if(hmmc->MmcCard.CardType == MMC_LOW_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2086 hmmc->MmcCard.BlockNbr = (pCSD->DeviceSize + 1U) ; in HAL_MMC_GetCardCSD()
2087 hmmc->MmcCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); in HAL_MMC_GetCardCSD()
2088 hmmc->MmcCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); in HAL_MMC_GetCardCSD()
2089 hmmc->MmcCard.LogBlockNbr = (hmmc->MmcCard.BlockNbr) * ((hmmc->MmcCard.BlockSize) / 512U); in HAL_MMC_GetCardCSD()
2090 hmmc->MmcCard.LogBlockSize = 512U; in HAL_MMC_GetCardCSD()
2092 else if(hmmc->MmcCard.CardType == MMC_HIGH_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2094 hmmc->MmcCard.BlockNbr = block_nbr; in HAL_MMC_GetCardCSD()
2095 hmmc->MmcCard.LogBlockNbr = hmmc->MmcCard.BlockNbr; in HAL_MMC_GetCardCSD()
2096 hmmc->MmcCard.BlockSize = 512U; in HAL_MMC_GetCardCSD()
2097 hmmc->MmcCard.LogBlockSize = hmmc->MmcCard.BlockSize; in HAL_MMC_GetCardCSD()
2102 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardCSD()
2103 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_GetCardCSD()
2104 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardCSD()
2108 pCSD->EraseGrSize = (uint8_t)((hmmc->CSD[2] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2110 pCSD->EraseGrMul = (uint8_t)((hmmc->CSD[2] & 0x00003F80U) >> 7U); in HAL_MMC_GetCardCSD()
2112 pCSD->WrProtectGrSize = (uint8_t)(hmmc->CSD[2] & 0x0000007FU); in HAL_MMC_GetCardCSD()
2114 pCSD->WrProtectGrEnable = (uint8_t)((hmmc->CSD[3] & 0x80000000U) >> 31U); in HAL_MMC_GetCardCSD()
2116 pCSD->ManDeflECC = (uint8_t)((hmmc->CSD[3] & 0x60000000U) >> 29U); in HAL_MMC_GetCardCSD()
2118 pCSD->WrSpeedFact = (uint8_t)((hmmc->CSD[3] & 0x1C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2120 pCSD->MaxWrBlockLen= (uint8_t)((hmmc->CSD[3] & 0x03C00000U) >> 22U); in HAL_MMC_GetCardCSD()
2122 pCSD->WriteBlockPaPartial = (uint8_t)((hmmc->CSD[3] & 0x00200000U) >> 21U); in HAL_MMC_GetCardCSD()
2126 pCSD->ContentProtectAppli = (uint8_t)((hmmc->CSD[3] & 0x00010000U) >> 16U); in HAL_MMC_GetCardCSD()
2128 pCSD->FileFormatGroup = (uint8_t)((hmmc->CSD[3] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2130 pCSD->CopyFlag = (uint8_t)((hmmc->CSD[3] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2132 pCSD->PermWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2134 pCSD->TempWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2136 pCSD->FileFormat = (uint8_t)((hmmc->CSD[3] & 0x00000C00U) >> 10U); in HAL_MMC_GetCardCSD()
2138 pCSD->ECC= (uint8_t)((hmmc->CSD[3] & 0x00000300U) >> 8U); in HAL_MMC_GetCardCSD()
2140 pCSD->CSD_CRC = (uint8_t)((hmmc->CSD[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCSD()
2154 HAL_StatusTypeDef HAL_MMC_GetCardInfo(MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo) in HAL_MMC_GetCardInfo() argument
2156 pCardInfo->CardType = (uint32_t)(hmmc->MmcCard.CardType); in HAL_MMC_GetCardInfo()
2157 pCardInfo->Class = (uint32_t)(hmmc->MmcCard.Class); in HAL_MMC_GetCardInfo()
2158 pCardInfo->RelCardAdd = (uint32_t)(hmmc->MmcCard.RelCardAdd); in HAL_MMC_GetCardInfo()
2159 pCardInfo->BlockNbr = (uint32_t)(hmmc->MmcCard.BlockNbr); in HAL_MMC_GetCardInfo()
2160 pCardInfo->BlockSize = (uint32_t)(hmmc->MmcCard.BlockSize); in HAL_MMC_GetCardInfo()
2161 pCardInfo->LogBlockNbr = (uint32_t)(hmmc->MmcCard.LogBlockNbr); in HAL_MMC_GetCardInfo()
2162 pCardInfo->LogBlockSize = (uint32_t)(hmmc->MmcCard.LogBlockSize); in HAL_MMC_GetCardInfo()
2176 HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeou… in HAL_MMC_GetCardExtCSD() argument
2186 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_GetCardExtCSD()
2190 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetCardExtCSD()
2192 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_GetCardExtCSD()
2194 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetCardExtCSD()
2197 hmmc->Instance->DCTRL = 0; in HAL_MMC_GetCardExtCSD()
2209 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_GetCardExtCSD()
2212 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in HAL_MMC_GetCardExtCSD()
2216 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2217 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardExtCSD()
2218 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2223 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO… in HAL_MMC_GetCardExtCSD()
2225 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXFIFOHF)) in HAL_MMC_GetCardExtCSD()
2230 *tmp_buf = SDIO_ReadFIFO(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2238 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2239 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2240 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2246 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DTIMEOUT)) in HAL_MMC_GetCardExtCSD()
2249 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2250 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2251 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2254 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL)) in HAL_MMC_GetCardExtCSD()
2257 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2258 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_GetCardExtCSD()
2259 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2262 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR)) in HAL_MMC_GetCardExtCSD()
2265 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2266 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_GetCardExtCSD()
2267 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2276 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_GetCardExtCSD()
2277 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2294 HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode) in HAL_MMC_ConfigWideBusOperation() argument
2305 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigWideBusOperation()
2307 errorstate = MMC_PwrClassUpdate(hmmc, WideMode); in HAL_MMC_ConfigWideBusOperation()
2313 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in HAL_MMC_ConfigWideBusOperation()
2317 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in HAL_MMC_ConfigWideBusOperation()
2321 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U); in HAL_MMC_ConfigWideBusOperation()
2336 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigWideBusOperation()
2343 response = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in HAL_MMC_ConfigWideBusOperation()
2358 Init = hmmc->Init; in HAL_MMC_ConfigWideBusOperation()
2360 (void)SDIO_Init(hmmc->Instance, Init); in HAL_MMC_ConfigWideBusOperation()
2375 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigWideBusOperation()
2380 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigWideBusOperation()
2381 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigWideBusOperation()
2393 HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetCardState() argument
2399 errorstate = MMC_SendStatus(hmmc, &resp1); in HAL_MMC_GetCardState()
2402 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardState()
2416 HAL_StatusTypeDef HAL_MMC_Abort(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort() argument
2421 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_Abort()
2425 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_Abort()
2427 if((hmmc->hdmatx != NULL) || (hmmc->hdmarx != NULL)) in HAL_MMC_Abort()
2430 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDIO_DCTRL_DMAEN); in HAL_MMC_Abort()
2433 if(hmmc->hdmatx != NULL) in HAL_MMC_Abort()
2435 if(HAL_DMA_Abort(hmmc->hdmatx) != HAL_OK) in HAL_MMC_Abort()
2437 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_Abort()
2441 if(hmmc->hdmarx != NULL) in HAL_MMC_Abort()
2443 if(HAL_DMA_Abort(hmmc->hdmarx) != HAL_OK) in HAL_MMC_Abort()
2445 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_Abort()
2450 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2453 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Abort()
2455 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort()
2458 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort()
2460 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort()
2473 HAL_StatusTypeDef HAL_MMC_Abort_IT(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort_IT() argument
2478 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_Abort_IT()
2482 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_Abort_IT()
2484 if((hmmc->hdmatx != NULL) || (hmmc->hdmarx != NULL)) in HAL_MMC_Abort_IT()
2487 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDIO_DCTRL_DMAEN); in HAL_MMC_Abort_IT()
2490 if(hmmc->hdmatx != NULL) in HAL_MMC_Abort_IT()
2492 hmmc->hdmatx->XferAbortCallback = MMC_DMATxAbort; in HAL_MMC_Abort_IT()
2493 if(HAL_DMA_Abort_IT(hmmc->hdmatx) != HAL_OK) in HAL_MMC_Abort_IT()
2495 hmmc->hdmatx = NULL; in HAL_MMC_Abort_IT()
2499 if(hmmc->hdmarx != NULL) in HAL_MMC_Abort_IT()
2501 hmmc->hdmarx->XferAbortCallback = MMC_DMARxAbort; in HAL_MMC_Abort_IT()
2502 if(HAL_DMA_Abort_IT(hmmc->hdmarx) != HAL_OK) in HAL_MMC_Abort_IT()
2504 hmmc->hdmarx = NULL; in HAL_MMC_Abort_IT()
2510 if((hmmc->hdmatx == NULL) && (hmmc->hdmarx == NULL)) in HAL_MMC_Abort_IT()
2512 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort_IT()
2513 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort_IT()
2517 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort_IT()
2519 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort_IT()
2526 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_Abort_IT()
2528 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_Abort_IT()
2556 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMATransmitCplt() local
2559 __HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DATAEND)); in MMC_DMATransmitCplt()
2569 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMAReceiveCplt() local
2573 if(hmmc->Context == (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA)) in MMC_DMAReceiveCplt()
2575 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMAReceiveCplt()
2578 hmmc->ErrorCode |= errorstate; in MMC_DMAReceiveCplt()
2580 hmmc->ErrorCallback(hmmc); in MMC_DMAReceiveCplt()
2582 HAL_MMC_ErrorCallback(hmmc); in MMC_DMAReceiveCplt()
2589 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDIO_DCTRL_DMAEN); in MMC_DMAReceiveCplt()
2592 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in MMC_DMAReceiveCplt()
2594 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMAReceiveCplt()
2597 hmmc->RxCpltCallback(hmmc); in MMC_DMAReceiveCplt()
2599 HAL_MMC_RxCpltCallback(hmmc); in MMC_DMAReceiveCplt()
2610 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMAError() local
2617 RxErrorCode = hmmc->hdmarx->ErrorCode; in MMC_DMAError()
2618 TxErrorCode = hmmc->hdmatx->ErrorCode; in MMC_DMAError()
2622 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in MMC_DMAError()
2625 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in MMC_DMAError()
2628 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in MMC_DMAError()
2629 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMAError()
2632 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMAError()
2635 hmmc->State= HAL_MMC_STATE_READY; in MMC_DMAError()
2639 hmmc->ErrorCallback(hmmc); in MMC_DMAError()
2641 HAL_MMC_ErrorCallback(hmmc); in MMC_DMAError()
2653 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMATxAbort() local
2656 if(hmmc->hdmatx != NULL) in MMC_DMATxAbort()
2658 hmmc->hdmatx = NULL; in MMC_DMATxAbort()
2662 if(hmmc->hdmarx == NULL) in MMC_DMATxAbort()
2664 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMATxAbort()
2665 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_DMATxAbort()
2666 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMATxAbort()
2669 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMATxAbort()
2671 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in MMC_DMATxAbort()
2674 hmmc->AbortCpltCallback(hmmc); in MMC_DMATxAbort()
2676 HAL_MMC_AbortCallback(hmmc); in MMC_DMATxAbort()
2682 hmmc->ErrorCallback(hmmc); in MMC_DMATxAbort()
2684 HAL_MMC_ErrorCallback(hmmc); in MMC_DMATxAbort()
2698 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMARxAbort() local
2701 if(hmmc->hdmarx != NULL) in MMC_DMARxAbort()
2703 hmmc->hdmarx = NULL; in MMC_DMARxAbort()
2707 if(hmmc->hdmatx == NULL) in MMC_DMARxAbort()
2709 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMARxAbort()
2710 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_DMARxAbort()
2711 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMARxAbort()
2714 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMARxAbort()
2716 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in MMC_DMARxAbort()
2719 hmmc->AbortCpltCallback(hmmc); in MMC_DMARxAbort()
2721 HAL_MMC_AbortCallback(hmmc); in MMC_DMARxAbort()
2727 hmmc->ErrorCallback(hmmc); in MMC_DMARxAbort()
2729 HAL_MMC_ErrorCallback(hmmc); in MMC_DMARxAbort()
2741 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc) in MMC_InitCard() argument
2749 if(SDIO_GetPowerState(hmmc->Instance) == 0U) in MMC_InitCard()
2756 errorstate = SDMMC_CmdSendCID(hmmc->Instance); in MMC_InitCard()
2764 hmmc->CID[0U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_InitCard()
2765 hmmc->CID[1U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP2); in MMC_InitCard()
2766 hmmc->CID[2U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP3); in MMC_InitCard()
2767 hmmc->CID[3U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP4); in MMC_InitCard()
2772 errorstate = SDMMC_CmdSetRelAddMmc(hmmc->Instance, mmc_rca); in MMC_InitCard()
2779 hmmc->MmcCard.RelCardAdd = mmc_rca; in MMC_InitCard()
2782 errorstate = SDMMC_CmdSendCSD(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_InitCard()
2790 hmmc->CSD[0U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_InitCard()
2791 hmmc->CSD[1U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP2); in MMC_InitCard()
2792 hmmc->CSD[2U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP3); in MMC_InitCard()
2793 hmmc->CSD[3U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP4); in MMC_InitCard()
2797 hmmc->MmcCard.Class = (SDIO_GetResponse(hmmc->Instance, SDIO_RESP2) >> 20U); in MMC_InitCard()
2800 …errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << … in MMC_InitCard()
2807 if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK) in MMC_InitCard()
2809 return hmmc->ErrorCode; in MMC_InitCard()
2813 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
2816 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
2820 if (HAL_MMC_GetCardExtCSD(hmmc, hmmc->Ext_CSD, SDMMC_DATATIMEOUT) != HAL_OK) in MMC_InitCard()
2822 return hmmc->ErrorCode; in MMC_InitCard()
2826 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
2829 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
2833 Init = hmmc->Init; in MMC_InitCard()
2835 (void)SDIO_Init(hmmc->Instance, Init); in MMC_InitCard()
2848 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc) in MMC_PowerON() argument
2855 errorstate = SDMMC_CmdGoIdleState(hmmc->Instance); in MMC_PowerON()
2869 errorstate = SDMMC_CmdOpCondition(hmmc->Instance, MMC_VOLTAGE_RANGE); in MMC_PowerON()
2876 response = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_PowerON()
2885 hmmc->MmcCard.CardType = MMC_HIGH_CAPACITY_CARD; in MMC_PowerON()
2889 hmmc->MmcCard.CardType = MMC_LOW_CAPACITY_CARD; in MMC_PowerON()
2900 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc) in MMC_PowerOFF() argument
2903 (void)SDIO_PowerState_OFF(hmmc->Instance); in MMC_PowerOFF()
2913 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus) in MMC_SendStatus() argument
2923 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_SendStatus()
2930 *pCardStatus = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_SendStatus()
2943 static uint32_t MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t FieldIndex, … in MMC_ReadExtCSD() argument
2952 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_ReadExtCSD()
2955 hmmc->Instance->DCTRL = 0; in MMC_ReadExtCSD()
2964 (void)SDIO_ConfigData(hmmc->Instance, &config); in MMC_ReadExtCSD()
2967 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in MMC_ReadExtCSD()
2971 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in MMC_ReadExtCSD()
2972 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
2973 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
2978 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO… in MMC_ReadExtCSD()
2980 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXFIFOHF)) in MMC_ReadExtCSD()
2985 tmp_data = SDIO_ReadFIFO(hmmc->Instance); in MMC_ReadExtCSD()
2999 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in MMC_ReadExtCSD()
3000 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in MMC_ReadExtCSD()
3001 hmmc->State= HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3007 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_ReadExtCSD()
3010 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
3014 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in MMC_ReadExtCSD()
3016 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3028 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc) in MMC_Read_IT() argument
3033 tmp = hmmc->pRxBuffPtr; in MMC_Read_IT()
3034 dataremaining = hmmc->RxXferSize; in MMC_Read_IT()
3041 data = SDIO_ReadFIFO(hmmc->Instance); in MMC_Read_IT()
3056 hmmc->pRxBuffPtr = tmp; in MMC_Read_IT()
3057 hmmc->RxXferSize = dataremaining; in MMC_Read_IT()
3067 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc) in MMC_Write_IT() argument
3072 tmp = hmmc->pTxBuffPtr; in MMC_Write_IT()
3073 dataremaining = hmmc->TxXferSize; in MMC_Write_IT()
3092 (void)SDIO_WriteFIFO(hmmc->Instance, &data); in MMC_Write_IT()
3095 hmmc->pTxBuffPtr = tmp; in MMC_Write_IT()
3096 hmmc->TxXferSize = dataremaining; in MMC_Write_IT()
3107 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide) in MMC_PwrClassUpdate() argument
3119 …if(MMC_ReadExtCSD(hmmc, &power_class, 187, SDMMC_DATATIMEOUT) != HAL_OK) /* Field POWER_CLASS [187… in MMC_PwrClassUpdate()
3130 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_26_INDEX/4)] >> MMC_EXT_CSD_PWR_CL_26_PO… in MMC_PwrClassUpdate()
3143 …errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03BB0000U | ((supported_pwr_class & 0x0FU) << 8U))… in MMC_PwrClassUpdate()
3151 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_PwrClassUpdate()
3158 response = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_PwrClassUpdate()