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()
670 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO… in HAL_MMC_ReadBlocks()
672 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXFIFOHF) && (dataremaining > 0U)) in HAL_MMC_ReadBlocks()
677 data = SDIO_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
696 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
697 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
698 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
704 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_ReadBlocks()
707 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_ReadBlocks()
711 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
712 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
713 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
719 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DTIMEOUT)) in HAL_MMC_ReadBlocks()
722 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
723 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_ReadBlocks()
724 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
727 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL)) in HAL_MMC_ReadBlocks()
730 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
731 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_ReadBlocks()
732 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
735 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR)) in HAL_MMC_ReadBlocks()
738 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
739 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_ReadBlocks()
740 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
749 while ((__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXDAVL)) && (dataremaining > 0U)) in HAL_MMC_ReadBlocks()
751 data = SDIO_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
768 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
769 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
770 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
776 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_ReadBlocks()
778 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
784 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_ReadBlocks()
801 HAL_StatusTypeDef HAL_MMC_WriteBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, u… in HAL_MMC_WriteBlocks() argument
812 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks()
816 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks()
818 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks()
820 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks()
822 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks()
826 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks()
829 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks()
831 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks()
839 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_WriteBlocks()
842 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
846 hmmc->Context = MMC_CONTEXT_WRITE_SINGLE_BLOCK; in HAL_MMC_WriteBlocks()
849 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
854 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
855 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
856 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
867 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks()
871 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXUNDERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDI… in HAL_MMC_WriteBlocks()
873 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXFIFOHE) && (dataremaining > 0U)) in HAL_MMC_WriteBlocks()
890 (void)SDIO_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_WriteBlocks()
897 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
898 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
899 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
905 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_WriteBlocks()
908 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_WriteBlocks()
912 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
913 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
914 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
920 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DTIMEOUT)) in HAL_MMC_WriteBlocks()
923 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
924 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_WriteBlocks()
925 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
928 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL)) in HAL_MMC_WriteBlocks()
931 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
932 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; 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_TXUNDERR)) in HAL_MMC_WriteBlocks()
939 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
940 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_WriteBlocks()
941 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
950 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_WriteBlocks()
952 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
958 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_WriteBlocks()
976 HAL_StatusTypeDef HAL_MMC_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd,… in HAL_MMC_ReadBlocks_IT() argument
984 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_IT()
988 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_IT()
990 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_IT()
992 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_IT()
994 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_IT()
998 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_IT()
1001 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_IT()
1003 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_IT()
1004 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_IT()
1006 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEND… in HAL_MMC_ReadBlocks_IT()
1008 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_IT()
1020 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_IT()
1025 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1028 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1032 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1035 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1041 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks_IT()
1042 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks_IT()
1043 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_IT()
1068 HAL_StatusTypeDef HAL_MMC_WriteBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd… in HAL_MMC_WriteBlocks_IT() argument
1076 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_IT()
1080 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_IT()
1082 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_IT()
1084 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_IT()
1086 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_IT()
1090 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_IT()
1093 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_IT()
1095 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_IT()
1096 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_IT()
1099 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_DATAEN… in HAL_MMC_WriteBlocks_IT()
1101 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_IT()
1109 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK| MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1112 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1116 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1119 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1124 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks_IT()
1125 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_IT()
1126 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_IT()
1137 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_IT()
1160 HAL_StatusTypeDef HAL_MMC_ReadBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd… in HAL_MMC_ReadBlocks_DMA() argument
1168 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_DMA()
1172 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_DMA()
1174 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_DMA()
1176 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_DMA()
1178 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_DMA()
1182 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_DMA()
1185 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_DMA()
1187 …__HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEND… in HAL_MMC_ReadBlocks_DMA()
1190 hmmc->hdmarx->XferCpltCallback = MMC_DMAReceiveCplt; in HAL_MMC_ReadBlocks_DMA()
1193 hmmc->hdmarx->XferErrorCallback = MMC_DMAError; in HAL_MMC_ReadBlocks_DMA()
1196 hmmc->hdmarx->XferAbortCallback = NULL; in HAL_MMC_ReadBlocks_DMA()
1198 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_DMA()
1204 hmmc->hdmarx->Init.Direction = DMA_PERIPH_TO_MEMORY; in HAL_MMC_ReadBlocks_DMA()
1205 MODIFY_REG(hmmc->hdmarx->Instance->CCR, DMA_CCR_DIR, hmmc->hdmarx->Init.Direction); in HAL_MMC_ReadBlocks_DMA()
1208 …if(HAL_DMA_Start_IT(hmmc->hdmarx, (uint32_t)&hmmc->Instance->FIFO, (uint32_t)pData, (uint32_t)(MMC… in HAL_MMC_ReadBlocks_DMA()
1210 …__HAL_MMC_DISABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEN… in HAL_MMC_ReadBlocks_DMA()
1211 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1212 hmmc->ErrorCode = HAL_MMC_ERROR_DMA; in HAL_MMC_ReadBlocks_DMA()
1213 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1219 __HAL_MMC_DMA_ENABLE(hmmc); in HAL_MMC_ReadBlocks_DMA()
1228 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_DMA()
1233 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1236 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1240 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1243 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1248 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1249 …__HAL_MMC_DISABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEN… in HAL_MMC_ReadBlocks_DMA()
1250 hmmc->ErrorCode = errorstate; in HAL_MMC_ReadBlocks_DMA()
1251 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1277 HAL_StatusTypeDef HAL_MMC_WriteBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAd… in HAL_MMC_WriteBlocks_DMA() argument
1285 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_DMA()
1289 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_DMA()
1291 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_DMA()
1293 if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_DMA()
1295 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_DMA()
1299 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_DMA()
1302 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_DMA()
1305 __HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR)); in HAL_MMC_WriteBlocks_DMA()
1308 hmmc->hdmatx->XferCpltCallback = MMC_DMATransmitCplt; in HAL_MMC_WriteBlocks_DMA()
1311 hmmc->hdmatx->XferErrorCallback = MMC_DMAError; in HAL_MMC_WriteBlocks_DMA()
1314 hmmc->hdmatx->XferAbortCallback = NULL; in HAL_MMC_WriteBlocks_DMA()
1316 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_DMA()
1325 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1328 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1332 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1335 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1340 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1341 …__HAL_MMC_DISABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_DATAE… in HAL_MMC_WriteBlocks_DMA()
1342 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_DMA()
1343 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_DMA()
1348 __HAL_MMC_DMA_ENABLE(hmmc); in HAL_MMC_WriteBlocks_DMA()
1351 hmmc->hdmatx->Init.Direction = DMA_MEMORY_TO_PERIPH; in HAL_MMC_WriteBlocks_DMA()
1352 MODIFY_REG(hmmc->hdmatx->Instance->CCR, DMA_CCR_DIR, hmmc->hdmatx->Init.Direction); in HAL_MMC_WriteBlocks_DMA()
1355 …if(HAL_DMA_Start_IT(hmmc->hdmatx, (uint32_t)pData, (uint32_t)&hmmc->Instance->FIFO, (uint32_t)(MMC… in HAL_MMC_WriteBlocks_DMA()
1357 …__HAL_MMC_DISABLE_IT(hmmc, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_DATAE… in HAL_MMC_WriteBlocks_DMA()
1358 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1359 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_WriteBlocks_DMA()
1360 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_DMA()
1372 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_DMA()
1392 HAL_StatusTypeDef HAL_MMC_Erase(MMC_HandleTypeDef *hmmc, uint32_t BlockStartAdd, uint32_t BlockEndA… in HAL_MMC_Erase() argument
1398 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Erase()
1400 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_Erase()
1404 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_Erase()
1408 if(end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_Erase()
1410 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_Erase()
1414 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Erase()
1417 if(((hmmc->MmcCard.Class) & SDIO_CCCC_ERASE) == 0U) in HAL_MMC_Erase()
1420 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1421 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_Erase()
1422 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1426 if((SDIO_GetResponse(hmmc->Instance, SDIO_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_Erase()
1429 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1430 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_Erase()
1431 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1435 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_Erase()
1442 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_Erase()
1446 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1447 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1448 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1453 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_Erase()
1457 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1458 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1459 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1464 errorstate = SDMMC_CmdErase(hmmc->Instance); in HAL_MMC_Erase()
1468 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_Erase()
1469 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1470 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1474 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1489 void HAL_MMC_IRQHandler(MMC_HandleTypeDef *hmmc) in HAL_MMC_IRQHandler() argument
1492 uint32_t context = hmmc->Context; in HAL_MMC_IRQHandler()
1495 if((__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXFIFOHF) != RESET) && ((context & MMC_CONTEXT_IT) != 0U)) in HAL_MMC_IRQHandler()
1497 MMC_Read_IT(hmmc); in HAL_MMC_IRQHandler()
1500 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DATAEND) != RESET) in HAL_MMC_IRQHandler()
1502 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_FLAG_DATAEND); in HAL_MMC_IRQHandler()
1504 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_IRQHandler()
1507 hmmc->Instance->DCTRL &= ~(SDIO_DCTRL_DTEN); in HAL_MMC_IRQHandler()
1513 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1516 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1518 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1520 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1528 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDIO_DCTRL_DMAEN); in HAL_MMC_IRQHandler()
1530 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1533 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1535 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1544 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1547 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1549 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1551 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1557 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1559 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1563 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1565 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1571 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1573 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1583 …else if((__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXFIFOHE) != RESET) && ((context & MMC_CONTEXT_IT) != … in HAL_MMC_IRQHandler()
1585 MMC_Write_IT(hmmc); in HAL_MMC_IRQHandler()
1588 …else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_RXOVERR | SDI… in HAL_MMC_IRQHandler()
1591 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL) != RESET) in HAL_MMC_IRQHandler()
1593 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_IRQHandler()
1595 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DTIMEOUT) != RESET) in HAL_MMC_IRQHandler()
1597 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_IRQHandler()
1599 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR) != RESET) in HAL_MMC_IRQHandler()
1601 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_IRQHandler()
1603 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_TXUNDERR) != RESET) in HAL_MMC_IRQHandler()
1605 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_IRQHandler()
1609 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS | SDIO_FLAG_STBITERR); in HAL_MMC_IRQHandler()
1612 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_IRQHandler()
1615 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1620 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1622 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1624 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1630 if(hmmc->hdmatx != NULL) in HAL_MMC_IRQHandler()
1633 hmmc->hdmatx->XferAbortCallback = MMC_DMATxAbort; in HAL_MMC_IRQHandler()
1635 if(HAL_DMA_Abort_IT(hmmc->hdmatx) != HAL_OK) in HAL_MMC_IRQHandler()
1637 MMC_DMATxAbort(hmmc->hdmatx); in HAL_MMC_IRQHandler()
1640 else if(hmmc->hdmarx != NULL) in HAL_MMC_IRQHandler()
1643 hmmc->hdmarx->XferAbortCallback = MMC_DMARxAbort; in HAL_MMC_IRQHandler()
1645 if(HAL_DMA_Abort_IT(hmmc->hdmarx) != HAL_OK) in HAL_MMC_IRQHandler()
1647 MMC_DMARxAbort(hmmc->hdmarx); in HAL_MMC_IRQHandler()
1652 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_IRQHandler()
1653 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1655 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1657 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_IRQHandler()
1678 HAL_MMC_StateTypeDef HAL_MMC_GetState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetState() argument
1680 return hmmc->State; in HAL_MMC_GetState()
1689 uint32_t HAL_MMC_GetError(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetError() argument
1691 return hmmc->ErrorCode; in HAL_MMC_GetError()
1699 __weak void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_TxCpltCallback() argument
1702 UNUSED(hmmc); in HAL_MMC_TxCpltCallback()
1714 __weak void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_RxCpltCallback() argument
1717 UNUSED(hmmc); in HAL_MMC_RxCpltCallback()
1729 __weak void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_ErrorCallback() argument
1732 UNUSED(hmmc); in HAL_MMC_ErrorCallback()
1744 __weak void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_AbortCallback() argument
1747 UNUSED(hmmc); in HAL_MMC_AbortCallback()
1770 HAL_StatusTypeDef HAL_MMC_RegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Callb… in HAL_MMC_RegisterCallback() argument
1777 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1782 __HAL_LOCK(hmmc); in HAL_MMC_RegisterCallback()
1784 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RegisterCallback()
1789 hmmc->TxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1792 hmmc->RxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1795 hmmc->ErrorCallback = pCallback; in HAL_MMC_RegisterCallback()
1798 hmmc->AbortCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1801 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1804 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1808 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1814 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_RegisterCallback()
1819 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1822 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1826 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1835 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1841 __HAL_UNLOCK(hmmc); in HAL_MMC_RegisterCallback()
1859 HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Cal… in HAL_MMC_UnRegisterCallback() argument
1864 __HAL_LOCK(hmmc); in HAL_MMC_UnRegisterCallback()
1866 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_UnRegisterCallback()
1871 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_UnRegisterCallback()
1874 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_UnRegisterCallback()
1877 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_UnRegisterCallback()
1880 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_UnRegisterCallback()
1883 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
1886 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
1890 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1896 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_UnRegisterCallback()
1901 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
1904 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
1908 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1917 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1923 __HAL_UNLOCK(hmmc); in HAL_MMC_UnRegisterCallback()
1955 HAL_StatusTypeDef HAL_MMC_GetCardCID(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID) in HAL_MMC_GetCardCID() argument
1957 pCID->ManufacturerID = (uint8_t)((hmmc->CID[0] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
1959 pCID->OEM_AppliID = (uint16_t)((hmmc->CID[0] & 0x00FFFF00U) >> 8U); in HAL_MMC_GetCardCID()
1961 pCID->ProdName1 = (((hmmc->CID[0] & 0x000000FFU) << 24U) | ((hmmc->CID[1] & 0xFFFFFF00U) >> 8U)); in HAL_MMC_GetCardCID()
1963 pCID->ProdName2 = (uint8_t)(hmmc->CID[1] & 0x000000FFU); in HAL_MMC_GetCardCID()
1965 pCID->ProdRev = (uint8_t)((hmmc->CID[2] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
1967 pCID->ProdSN = (((hmmc->CID[2] & 0x00FFFFFFU) << 8U) | ((hmmc->CID[3] & 0xFF000000U) >> 24U)); in HAL_MMC_GetCardCID()
1969 pCID->Reserved1 = (uint8_t)((hmmc->CID[3] & 0x00F00000U) >> 20U); in HAL_MMC_GetCardCID()
1971 pCID->ManufactDate = (uint16_t)((hmmc->CID[3] & 0x000FFF00U) >> 8U); in HAL_MMC_GetCardCID()
1973 pCID->CID_CRC = (uint8_t)((hmmc->CID[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCID()
1988 HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD) in HAL_MMC_GetCardCSD() argument
1992 pCSD->CSDStruct = (uint8_t)((hmmc->CSD[0] & 0xC0000000U) >> 30U); in HAL_MMC_GetCardCSD()
1994 pCSD->SysSpecVersion = (uint8_t)((hmmc->CSD[0] & 0x3C000000U) >> 26U); in HAL_MMC_GetCardCSD()
1996 pCSD->Reserved1 = (uint8_t)((hmmc->CSD[0] & 0x03000000U) >> 24U); in HAL_MMC_GetCardCSD()
1998 pCSD->TAAC = (uint8_t)((hmmc->CSD[0] & 0x00FF0000U) >> 16U); in HAL_MMC_GetCardCSD()
2000 pCSD->NSAC = (uint8_t)((hmmc->CSD[0] & 0x0000FF00U) >> 8U); in HAL_MMC_GetCardCSD()
2002 pCSD->MaxBusClkFrec = (uint8_t)(hmmc->CSD[0] & 0x000000FFU); in HAL_MMC_GetCardCSD()
2004 pCSD->CardComdClasses = (uint16_t)((hmmc->CSD[1] & 0xFFF00000U) >> 20U); in HAL_MMC_GetCardCSD()
2006 pCSD->RdBlockLen = (uint8_t)((hmmc->CSD[1] & 0x000F0000U) >> 16U); in HAL_MMC_GetCardCSD()
2008 pCSD->PartBlockRead = (uint8_t)((hmmc->CSD[1] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2010 pCSD->WrBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2012 pCSD->RdBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2014 pCSD->DSRImpl = (uint8_t)((hmmc->CSD[1] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2018 pCSD->DeviceSize = (((hmmc->CSD[1] & 0x000003FFU) << 2U) | ((hmmc->CSD[2] & 0xC0000000U) >> 30U)); in HAL_MMC_GetCardCSD()
2020 pCSD->MaxRdCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x38000000U) >> 27U); in HAL_MMC_GetCardCSD()
2022 pCSD->MaxRdCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x07000000U) >> 24U); in HAL_MMC_GetCardCSD()
2024 pCSD->MaxWrCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x00E00000U) >> 21U); in HAL_MMC_GetCardCSD()
2026 pCSD->MaxWrCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x001C0000U) >> 18U); in HAL_MMC_GetCardCSD()
2028 pCSD->DeviceSizeMul = (uint8_t)((hmmc->CSD[2] & 0x00038000U) >> 15U); in HAL_MMC_GetCardCSD()
2030 if(MMC_ReadExtCSD(hmmc, &block_nbr, 212, 0x0FFFFFFFU) != HAL_OK) /* Field SEC_COUNT [215:212] */ in HAL_MMC_GetCardCSD()
2035 if(hmmc->MmcCard.CardType == MMC_LOW_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2037 hmmc->MmcCard.BlockNbr = (pCSD->DeviceSize + 1U) ; in HAL_MMC_GetCardCSD()
2038 hmmc->MmcCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); in HAL_MMC_GetCardCSD()
2039 hmmc->MmcCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); in HAL_MMC_GetCardCSD()
2040 hmmc->MmcCard.LogBlockNbr = (hmmc->MmcCard.BlockNbr) * ((hmmc->MmcCard.BlockSize) / 512U); in HAL_MMC_GetCardCSD()
2041 hmmc->MmcCard.LogBlockSize = 512U; in HAL_MMC_GetCardCSD()
2043 else if(hmmc->MmcCard.CardType == MMC_HIGH_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2045 hmmc->MmcCard.BlockNbr = block_nbr; in HAL_MMC_GetCardCSD()
2046 hmmc->MmcCard.LogBlockNbr = hmmc->MmcCard.BlockNbr; in HAL_MMC_GetCardCSD()
2047 hmmc->MmcCard.BlockSize = 512U; in HAL_MMC_GetCardCSD()
2048 hmmc->MmcCard.LogBlockSize = hmmc->MmcCard.BlockSize; in HAL_MMC_GetCardCSD()
2053 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardCSD()
2054 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_GetCardCSD()
2055 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardCSD()
2059 pCSD->EraseGrSize = (uint8_t)((hmmc->CSD[2] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2061 pCSD->EraseGrMul = (uint8_t)((hmmc->CSD[2] & 0x00003F80U) >> 7U); in HAL_MMC_GetCardCSD()
2063 pCSD->WrProtectGrSize = (uint8_t)(hmmc->CSD[2] & 0x0000007FU); in HAL_MMC_GetCardCSD()
2065 pCSD->WrProtectGrEnable = (uint8_t)((hmmc->CSD[3] & 0x80000000U) >> 31U); in HAL_MMC_GetCardCSD()
2067 pCSD->ManDeflECC = (uint8_t)((hmmc->CSD[3] & 0x60000000U) >> 29U); in HAL_MMC_GetCardCSD()
2069 pCSD->WrSpeedFact = (uint8_t)((hmmc->CSD[3] & 0x1C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2071 pCSD->MaxWrBlockLen= (uint8_t)((hmmc->CSD[3] & 0x03C00000U) >> 22U); in HAL_MMC_GetCardCSD()
2073 pCSD->WriteBlockPaPartial = (uint8_t)((hmmc->CSD[3] & 0x00200000U) >> 21U); in HAL_MMC_GetCardCSD()
2077 pCSD->ContentProtectAppli = (uint8_t)((hmmc->CSD[3] & 0x00010000U) >> 16U); in HAL_MMC_GetCardCSD()
2079 pCSD->FileFormatGroup = (uint8_t)((hmmc->CSD[3] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2081 pCSD->CopyFlag = (uint8_t)((hmmc->CSD[3] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2083 pCSD->PermWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2085 pCSD->TempWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2087 pCSD->FileFormat = (uint8_t)((hmmc->CSD[3] & 0x00000C00U) >> 10U); in HAL_MMC_GetCardCSD()
2089 pCSD->ECC= (uint8_t)((hmmc->CSD[3] & 0x00000300U) >> 8U); in HAL_MMC_GetCardCSD()
2091 pCSD->CSD_CRC = (uint8_t)((hmmc->CSD[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCSD()
2105 HAL_StatusTypeDef HAL_MMC_GetCardInfo(MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo) in HAL_MMC_GetCardInfo() argument
2107 pCardInfo->CardType = (uint32_t)(hmmc->MmcCard.CardType); in HAL_MMC_GetCardInfo()
2108 pCardInfo->Class = (uint32_t)(hmmc->MmcCard.Class); in HAL_MMC_GetCardInfo()
2109 pCardInfo->RelCardAdd = (uint32_t)(hmmc->MmcCard.RelCardAdd); in HAL_MMC_GetCardInfo()
2110 pCardInfo->BlockNbr = (uint32_t)(hmmc->MmcCard.BlockNbr); in HAL_MMC_GetCardInfo()
2111 pCardInfo->BlockSize = (uint32_t)(hmmc->MmcCard.BlockSize); in HAL_MMC_GetCardInfo()
2112 pCardInfo->LogBlockNbr = (uint32_t)(hmmc->MmcCard.LogBlockNbr); in HAL_MMC_GetCardInfo()
2113 pCardInfo->LogBlockSize = (uint32_t)(hmmc->MmcCard.LogBlockSize); in HAL_MMC_GetCardInfo()
2127 HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeou… in HAL_MMC_GetCardExtCSD() argument
2137 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_GetCardExtCSD()
2141 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetCardExtCSD()
2143 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_GetCardExtCSD()
2145 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetCardExtCSD()
2148 hmmc->Instance->DCTRL = 0; in HAL_MMC_GetCardExtCSD()
2160 (void)SDIO_ConfigData(hmmc->Instance, &config); in HAL_MMC_GetCardExtCSD()
2163 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in HAL_MMC_GetCardExtCSD()
2167 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2168 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardExtCSD()
2169 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2174 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO… in HAL_MMC_GetCardExtCSD()
2176 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXFIFOHF)) in HAL_MMC_GetCardExtCSD()
2181 *tmp_buf = SDIO_ReadFIFO(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2189 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2190 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2191 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2197 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DTIMEOUT)) in HAL_MMC_GetCardExtCSD()
2200 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2201 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2202 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2205 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_DCRCFAIL)) in HAL_MMC_GetCardExtCSD()
2208 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2209 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_GetCardExtCSD()
2210 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2213 else if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR)) in HAL_MMC_GetCardExtCSD()
2216 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2217 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_GetCardExtCSD()
2218 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2227 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_GetCardExtCSD()
2228 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2245 HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode) in HAL_MMC_ConfigWideBusOperation() argument
2256 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigWideBusOperation()
2258 errorstate = MMC_PwrClassUpdate(hmmc, WideMode); in HAL_MMC_ConfigWideBusOperation()
2264 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in HAL_MMC_ConfigWideBusOperation()
2268 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in HAL_MMC_ConfigWideBusOperation()
2272 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U); in HAL_MMC_ConfigWideBusOperation()
2287 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigWideBusOperation()
2294 response = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in HAL_MMC_ConfigWideBusOperation()
2309 Init = hmmc->Init; in HAL_MMC_ConfigWideBusOperation()
2311 (void)SDIO_Init(hmmc->Instance, Init); in HAL_MMC_ConfigWideBusOperation()
2326 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigWideBusOperation()
2331 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in HAL_MMC_ConfigWideBusOperation()
2332 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigWideBusOperation()
2344 HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetCardState() argument
2350 errorstate = MMC_SendStatus(hmmc, &resp1); in HAL_MMC_GetCardState()
2353 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardState()
2367 HAL_StatusTypeDef HAL_MMC_Abort(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort() argument
2372 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_Abort()
2376 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_Abort()
2378 if((hmmc->hdmatx != NULL) || (hmmc->hdmarx != NULL)) in HAL_MMC_Abort()
2381 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDIO_DCTRL_DMAEN); in HAL_MMC_Abort()
2384 if(hmmc->hdmatx != NULL) in HAL_MMC_Abort()
2386 if(HAL_DMA_Abort(hmmc->hdmatx) != HAL_OK) in HAL_MMC_Abort()
2388 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_Abort()
2392 if(hmmc->hdmarx != NULL) in HAL_MMC_Abort()
2394 if(HAL_DMA_Abort(hmmc->hdmarx) != HAL_OK) in HAL_MMC_Abort()
2396 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_Abort()
2401 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2404 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Abort()
2406 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort()
2409 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort()
2411 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort()
2424 HAL_StatusTypeDef HAL_MMC_Abort_IT(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort_IT() argument
2429 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in HAL_MMC_Abort_IT()
2433 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in HAL_MMC_Abort_IT()
2435 if((hmmc->hdmatx != NULL) || (hmmc->hdmarx != NULL)) in HAL_MMC_Abort_IT()
2438 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDIO_DCTRL_DMAEN); in HAL_MMC_Abort_IT()
2441 if(hmmc->hdmatx != NULL) in HAL_MMC_Abort_IT()
2443 hmmc->hdmatx->XferAbortCallback = MMC_DMATxAbort; in HAL_MMC_Abort_IT()
2444 if(HAL_DMA_Abort_IT(hmmc->hdmatx) != HAL_OK) in HAL_MMC_Abort_IT()
2446 hmmc->hdmatx = NULL; in HAL_MMC_Abort_IT()
2450 if(hmmc->hdmarx != NULL) in HAL_MMC_Abort_IT()
2452 hmmc->hdmarx->XferAbortCallback = MMC_DMARxAbort; in HAL_MMC_Abort_IT()
2453 if(HAL_DMA_Abort_IT(hmmc->hdmarx) != HAL_OK) in HAL_MMC_Abort_IT()
2455 hmmc->hdmarx = NULL; in HAL_MMC_Abort_IT()
2461 if((hmmc->hdmatx == NULL) && (hmmc->hdmarx == NULL)) in HAL_MMC_Abort_IT()
2463 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort_IT()
2464 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort_IT()
2468 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort_IT()
2470 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort_IT()
2477 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_Abort_IT()
2479 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_Abort_IT()
2507 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMATransmitCplt() local
2510 __HAL_MMC_ENABLE_IT(hmmc, (SDIO_IT_DATAEND)); in MMC_DMATransmitCplt()
2520 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMAReceiveCplt() local
2524 if(hmmc->Context == (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA)) in MMC_DMAReceiveCplt()
2526 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMAReceiveCplt()
2529 hmmc->ErrorCode |= errorstate; in MMC_DMAReceiveCplt()
2531 hmmc->ErrorCallback(hmmc); in MMC_DMAReceiveCplt()
2533 HAL_MMC_ErrorCallback(hmmc); in MMC_DMAReceiveCplt()
2540 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDIO_DCTRL_DMAEN); in MMC_DMAReceiveCplt()
2543 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in MMC_DMAReceiveCplt()
2545 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMAReceiveCplt()
2548 hmmc->RxCpltCallback(hmmc); in MMC_DMAReceiveCplt()
2550 HAL_MMC_RxCpltCallback(hmmc); in MMC_DMAReceiveCplt()
2561 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMAError() local
2565 RxErrorCode = hmmc->hdmarx->ErrorCode; in MMC_DMAError()
2566 TxErrorCode = hmmc->hdmatx->ErrorCode; in MMC_DMAError()
2570 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in MMC_DMAError()
2573 __HAL_MMC_DISABLE_IT(hmmc, SDIO_IT_DATAEND | SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT|\ in MMC_DMAError()
2576 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in MMC_DMAError()
2577 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMAError()
2580 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMAError()
2583 hmmc->State= HAL_MMC_STATE_READY; in MMC_DMAError()
2587 hmmc->ErrorCallback(hmmc); in MMC_DMAError()
2589 HAL_MMC_ErrorCallback(hmmc); in MMC_DMAError()
2600 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMATxAbort() local
2603 if(hmmc->hdmatx != NULL) in MMC_DMATxAbort()
2605 hmmc->hdmatx = NULL; in MMC_DMATxAbort()
2609 if(hmmc->hdmarx == NULL) in MMC_DMATxAbort()
2611 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMATxAbort()
2612 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_DMATxAbort()
2613 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMATxAbort()
2616 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMATxAbort()
2618 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in MMC_DMATxAbort()
2621 hmmc->AbortCpltCallback(hmmc); in MMC_DMATxAbort()
2623 HAL_MMC_AbortCallback(hmmc); in MMC_DMATxAbort()
2629 hmmc->ErrorCallback(hmmc); in MMC_DMATxAbort()
2631 HAL_MMC_ErrorCallback(hmmc); in MMC_DMATxAbort()
2645 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMARxAbort() local
2648 if(hmmc->hdmarx != NULL) in MMC_DMARxAbort()
2650 hmmc->hdmarx = NULL; in MMC_DMARxAbort()
2654 if(hmmc->hdmatx == NULL) in MMC_DMARxAbort()
2656 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMARxAbort()
2657 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_DMARxAbort()
2658 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMARxAbort()
2661 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMARxAbort()
2663 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in MMC_DMARxAbort()
2666 hmmc->AbortCpltCallback(hmmc); in MMC_DMARxAbort()
2668 HAL_MMC_AbortCallback(hmmc); in MMC_DMARxAbort()
2674 hmmc->ErrorCallback(hmmc); in MMC_DMARxAbort()
2676 HAL_MMC_ErrorCallback(hmmc); in MMC_DMARxAbort()
2688 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc) in MMC_InitCard() argument
2696 if(SDIO_GetPowerState(hmmc->Instance) == 0U) in MMC_InitCard()
2703 errorstate = SDMMC_CmdSendCID(hmmc->Instance); in MMC_InitCard()
2711 hmmc->CID[0U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_InitCard()
2712 hmmc->CID[1U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP2); in MMC_InitCard()
2713 hmmc->CID[2U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP3); in MMC_InitCard()
2714 hmmc->CID[3U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP4); in MMC_InitCard()
2719 errorstate = SDMMC_CmdSetRelAddMmc(hmmc->Instance, mmc_rca); in MMC_InitCard()
2726 hmmc->MmcCard.RelCardAdd = mmc_rca; in MMC_InitCard()
2729 errorstate = SDMMC_CmdSendCSD(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_InitCard()
2737 hmmc->CSD[0U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_InitCard()
2738 hmmc->CSD[1U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP2); in MMC_InitCard()
2739 hmmc->CSD[2U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP3); in MMC_InitCard()
2740 hmmc->CSD[3U] = SDIO_GetResponse(hmmc->Instance, SDIO_RESP4); in MMC_InitCard()
2744 hmmc->MmcCard.Class = (SDIO_GetResponse(hmmc->Instance, SDIO_RESP2) >> 20U); in MMC_InitCard()
2747 …errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << … in MMC_InitCard()
2754 if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK) in MMC_InitCard()
2756 return hmmc->ErrorCode; in MMC_InitCard()
2760 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
2763 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
2767 if (HAL_MMC_GetCardExtCSD(hmmc, hmmc->Ext_CSD, SDMMC_DATATIMEOUT) != HAL_OK) in MMC_InitCard()
2769 return hmmc->ErrorCode; in MMC_InitCard()
2773 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
2776 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
2780 Init = hmmc->Init; in MMC_InitCard()
2782 (void)SDIO_Init(hmmc->Instance, Init); in MMC_InitCard()
2795 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc) in MMC_PowerON() argument
2802 errorstate = SDMMC_CmdGoIdleState(hmmc->Instance); in MMC_PowerON()
2816 errorstate = SDMMC_CmdOpCondition(hmmc->Instance, MMC_VOLTAGE_RANGE); in MMC_PowerON()
2823 response = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_PowerON()
2832 hmmc->MmcCard.CardType = MMC_HIGH_CAPACITY_CARD; in MMC_PowerON()
2836 hmmc->MmcCard.CardType = MMC_LOW_CAPACITY_CARD; in MMC_PowerON()
2847 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc) in MMC_PowerOFF() argument
2850 (void)SDIO_PowerState_OFF(hmmc->Instance); in MMC_PowerOFF()
2860 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus) in MMC_SendStatus() argument
2870 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_SendStatus()
2877 *pCardStatus = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_SendStatus()
2890 static uint32_t MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t FieldIndex, … in MMC_ReadExtCSD() argument
2899 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_ReadExtCSD()
2902 hmmc->Instance->DCTRL = 0; in MMC_ReadExtCSD()
2911 (void)SDIO_ConfigData(hmmc->Instance, &config); in MMC_ReadExtCSD()
2914 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in MMC_ReadExtCSD()
2918 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in MMC_ReadExtCSD()
2919 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
2920 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
2925 …while(!__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO… in MMC_ReadExtCSD()
2927 if(__HAL_MMC_GET_FLAG(hmmc, SDIO_FLAG_RXFIFOHF)) in MMC_ReadExtCSD()
2932 tmp_data = SDIO_ReadFIFO(hmmc->Instance); in MMC_ReadExtCSD()
2946 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_FLAGS); in MMC_ReadExtCSD()
2947 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in MMC_ReadExtCSD()
2948 hmmc->State= HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
2954 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_ReadExtCSD()
2957 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
2961 __HAL_MMC_CLEAR_FLAG(hmmc, SDIO_STATIC_DATA_FLAGS); in MMC_ReadExtCSD()
2963 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
2975 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc) in MMC_Read_IT() argument
2980 tmp = hmmc->pRxBuffPtr; in MMC_Read_IT()
2981 dataremaining = hmmc->RxXferSize; in MMC_Read_IT()
2988 data = SDIO_ReadFIFO(hmmc->Instance); in MMC_Read_IT()
3003 hmmc->pRxBuffPtr = tmp; in MMC_Read_IT()
3004 hmmc->RxXferSize = dataremaining; in MMC_Read_IT()
3014 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc) in MMC_Write_IT() argument
3019 tmp = hmmc->pTxBuffPtr; in MMC_Write_IT()
3020 dataremaining = hmmc->TxXferSize; in MMC_Write_IT()
3039 (void)SDIO_WriteFIFO(hmmc->Instance, &data); in MMC_Write_IT()
3042 hmmc->pTxBuffPtr = tmp; in MMC_Write_IT()
3043 hmmc->TxXferSize = dataremaining; in MMC_Write_IT()
3054 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide) in MMC_PwrClassUpdate() argument
3066 …if(MMC_ReadExtCSD(hmmc, &power_class, 187, SDMMC_DATATIMEOUT) != HAL_OK) /* Field POWER_CLASS [187… in MMC_PwrClassUpdate()
3077 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_26_INDEX/4)] >> MMC_EXT_CSD_PWR_CL_26_PO… in MMC_PwrClassUpdate()
3090 …errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03BB0000U | ((supported_pwr_class & 0x0FU) << 8U))… in MMC_PwrClassUpdate()
3098 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_PwrClassUpdate()
3105 response = SDIO_GetResponse(hmmc->Instance, SDIO_RESP1); in MMC_PwrClassUpdate()