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_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_Init()
362 assert_param(IS_SDMMC_CLOCK_EDGE(hmmc->Init.ClockEdge)); in HAL_MMC_Init()
363 assert_param(IS_SDMMC_CLOCK_BYPASS(hmmc->Init.ClockBypass)); in HAL_MMC_Init()
364 assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hmmc->Init.ClockPowerSave)); in HAL_MMC_Init()
365 assert_param(IS_SDMMC_BUS_WIDE(hmmc->Init.BusWide)); in HAL_MMC_Init()
366 assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hmmc->Init.HardwareFlowControl)); in HAL_MMC_Init()
367 assert_param(IS_SDMMC_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 != SDMMC_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 = SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_InitCard()
451 __HAL_MMC_DISABLE(hmmc); in HAL_MMC_InitCard()
454 status = SDMMC_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, SDMMC_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_SDMMC_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)SDMMC_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, SDMMC_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, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | S… in HAL_MMC_ReadBlocks()
672 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining > 0U)) in HAL_MMC_ReadBlocks()
677 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
696 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_ReadBlocks()
707 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_ReadBlocks()
711 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_ReadBlocks()
722 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_ReadBlocks()
730 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_RXOVERR)) in HAL_MMC_ReadBlocks()
738 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_RXDAVL)) && (dataremaining > 0U)) in HAL_MMC_ReadBlocks()
751 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
768 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_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, SDMMC_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)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks()
871 …while(!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | … in HAL_MMC_WriteBlocks()
873 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining > 0U)) in HAL_MMC_WriteBlocks()
890 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_WriteBlocks()
897 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_WriteBlocks()
908 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_WriteBlocks()
912 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_WriteBlocks()
923 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_WriteBlocks()
931 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_WriteBlocks()
939 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_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, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_IT()
1008 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_IT()
1020 (void)SDMMC_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, SDMMC_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, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… 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, SDMMC_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)SDMMC_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, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… 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->CR, DMA_SxCR_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, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DA… in HAL_MMC_ReadBlocks_DMA()
1211 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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)SDMMC_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, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1249 …__HAL_MMC_DISABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DA… 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, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_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, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1341 …__HAL_MMC_DISABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_D… 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->CR, DMA_SxCR_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, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_D… in HAL_MMC_WriteBlocks_DMA()
1358 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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)SDMMC_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) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_Erase()
1420 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_Erase()
1429 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_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, SDMMC_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, SDMMC_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, SDMMC_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, SDMMC_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, SDMMC_FLAG_DATAEND) != RESET) in HAL_MMC_IRQHandler()
1502 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DATAEND); in HAL_MMC_IRQHandler()
1504 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT |\ in HAL_MMC_IRQHandler()
1508 hmmc->Instance->DCTRL &= ~(SDMMC_DCTRL_DTEN); in HAL_MMC_IRQHandler()
1514 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1517 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1519 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1521 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1529 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); in HAL_MMC_IRQHandler()
1531 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1534 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1536 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1545 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1548 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1550 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1552 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1558 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1560 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1564 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1566 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1572 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1574 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1584 …else if((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) != RESET) && ((context & MMC_CONTEXT_IT) !=… in HAL_MMC_IRQHandler()
1586 MMC_Write_IT(hmmc); in HAL_MMC_IRQHandler()
1589 …else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_RXOVERR | … in HAL_MMC_IRQHandler()
1592 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL) != RESET) in HAL_MMC_IRQHandler()
1594 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_IRQHandler()
1596 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT) != RESET) in HAL_MMC_IRQHandler()
1598 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_IRQHandler()
1600 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR) != RESET) in HAL_MMC_IRQHandler()
1602 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_IRQHandler()
1604 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR) != RESET) in HAL_MMC_IRQHandler()
1606 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_IRQHandler()
1610 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1613 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ in HAL_MMC_IRQHandler()
1616 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1621 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1623 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1625 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1631 if(hmmc->hdmatx != NULL) in HAL_MMC_IRQHandler()
1634 hmmc->hdmatx->XferAbortCallback = MMC_DMATxAbort; in HAL_MMC_IRQHandler()
1636 if(HAL_DMA_Abort_IT(hmmc->hdmatx) != HAL_OK) in HAL_MMC_IRQHandler()
1638 MMC_DMATxAbort(hmmc->hdmatx); in HAL_MMC_IRQHandler()
1641 else if(hmmc->hdmarx != NULL) in HAL_MMC_IRQHandler()
1644 hmmc->hdmarx->XferAbortCallback = MMC_DMARxAbort; in HAL_MMC_IRQHandler()
1646 if(HAL_DMA_Abort_IT(hmmc->hdmarx) != HAL_OK) in HAL_MMC_IRQHandler()
1648 MMC_DMARxAbort(hmmc->hdmarx); in HAL_MMC_IRQHandler()
1653 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_IRQHandler()
1654 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1656 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1658 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_IRQHandler()
1679 HAL_MMC_StateTypeDef HAL_MMC_GetState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetState() argument
1681 return hmmc->State; in HAL_MMC_GetState()
1690 uint32_t HAL_MMC_GetError(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetError() argument
1692 return hmmc->ErrorCode; in HAL_MMC_GetError()
1700 __weak void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_TxCpltCallback() argument
1703 UNUSED(hmmc); in HAL_MMC_TxCpltCallback()
1715 __weak void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_RxCpltCallback() argument
1718 UNUSED(hmmc); in HAL_MMC_RxCpltCallback()
1730 __weak void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_ErrorCallback() argument
1733 UNUSED(hmmc); in HAL_MMC_ErrorCallback()
1745 __weak void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_AbortCallback() argument
1748 UNUSED(hmmc); in HAL_MMC_AbortCallback()
1771 HAL_StatusTypeDef HAL_MMC_RegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Callb… in HAL_MMC_RegisterCallback() argument
1778 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1783 __HAL_LOCK(hmmc); in HAL_MMC_RegisterCallback()
1785 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RegisterCallback()
1790 hmmc->TxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1793 hmmc->RxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1796 hmmc->ErrorCallback = pCallback; in HAL_MMC_RegisterCallback()
1799 hmmc->AbortCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1802 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1805 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1809 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1815 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_RegisterCallback()
1820 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1823 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1827 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1836 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1842 __HAL_UNLOCK(hmmc); in HAL_MMC_RegisterCallback()
1860 HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Cal… in HAL_MMC_UnRegisterCallback() argument
1865 __HAL_LOCK(hmmc); in HAL_MMC_UnRegisterCallback()
1867 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_UnRegisterCallback()
1872 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_UnRegisterCallback()
1875 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_UnRegisterCallback()
1878 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_UnRegisterCallback()
1881 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_UnRegisterCallback()
1884 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
1887 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
1891 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1897 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_UnRegisterCallback()
1902 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
1905 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
1909 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1918 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
1924 __HAL_UNLOCK(hmmc); in HAL_MMC_UnRegisterCallback()
1956 HAL_StatusTypeDef HAL_MMC_GetCardCID(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID) in HAL_MMC_GetCardCID() argument
1958 pCID->ManufacturerID = (uint8_t)((hmmc->CID[0] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
1960 pCID->OEM_AppliID = (uint16_t)((hmmc->CID[0] & 0x00FFFF00U) >> 8U); in HAL_MMC_GetCardCID()
1962 pCID->ProdName1 = (((hmmc->CID[0] & 0x000000FFU) << 24U) | ((hmmc->CID[1] & 0xFFFFFF00U) >> 8U)); in HAL_MMC_GetCardCID()
1964 pCID->ProdName2 = (uint8_t)(hmmc->CID[1] & 0x000000FFU); in HAL_MMC_GetCardCID()
1966 pCID->ProdRev = (uint8_t)((hmmc->CID[2] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
1968 pCID->ProdSN = (((hmmc->CID[2] & 0x00FFFFFFU) << 8U) | ((hmmc->CID[3] & 0xFF000000U) >> 24U)); in HAL_MMC_GetCardCID()
1970 pCID->Reserved1 = (uint8_t)((hmmc->CID[3] & 0x00F00000U) >> 20U); in HAL_MMC_GetCardCID()
1972 pCID->ManufactDate = (uint16_t)((hmmc->CID[3] & 0x000FFF00U) >> 8U); in HAL_MMC_GetCardCID()
1974 pCID->CID_CRC = (uint8_t)((hmmc->CID[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCID()
1989 HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD) in HAL_MMC_GetCardCSD() argument
1993 pCSD->CSDStruct = (uint8_t)((hmmc->CSD[0] & 0xC0000000U) >> 30U); in HAL_MMC_GetCardCSD()
1995 pCSD->SysSpecVersion = (uint8_t)((hmmc->CSD[0] & 0x3C000000U) >> 26U); in HAL_MMC_GetCardCSD()
1997 pCSD->Reserved1 = (uint8_t)((hmmc->CSD[0] & 0x03000000U) >> 24U); in HAL_MMC_GetCardCSD()
1999 pCSD->TAAC = (uint8_t)((hmmc->CSD[0] & 0x00FF0000U) >> 16U); in HAL_MMC_GetCardCSD()
2001 pCSD->NSAC = (uint8_t)((hmmc->CSD[0] & 0x0000FF00U) >> 8U); in HAL_MMC_GetCardCSD()
2003 pCSD->MaxBusClkFrec = (uint8_t)(hmmc->CSD[0] & 0x000000FFU); in HAL_MMC_GetCardCSD()
2005 pCSD->CardComdClasses = (uint16_t)((hmmc->CSD[1] & 0xFFF00000U) >> 20U); in HAL_MMC_GetCardCSD()
2007 pCSD->RdBlockLen = (uint8_t)((hmmc->CSD[1] & 0x000F0000U) >> 16U); in HAL_MMC_GetCardCSD()
2009 pCSD->PartBlockRead = (uint8_t)((hmmc->CSD[1] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2011 pCSD->WrBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2013 pCSD->RdBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2015 pCSD->DSRImpl = (uint8_t)((hmmc->CSD[1] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2019 pCSD->DeviceSize = (((hmmc->CSD[1] & 0x000003FFU) << 2U) | ((hmmc->CSD[2] & 0xC0000000U) >> 30U)); in HAL_MMC_GetCardCSD()
2021 pCSD->MaxRdCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x38000000U) >> 27U); in HAL_MMC_GetCardCSD()
2023 pCSD->MaxRdCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x07000000U) >> 24U); in HAL_MMC_GetCardCSD()
2025 pCSD->MaxWrCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x00E00000U) >> 21U); in HAL_MMC_GetCardCSD()
2027 pCSD->MaxWrCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x001C0000U) >> 18U); in HAL_MMC_GetCardCSD()
2029 pCSD->DeviceSizeMul = (uint8_t)((hmmc->CSD[2] & 0x00038000U) >> 15U); in HAL_MMC_GetCardCSD()
2031 if(MMC_ReadExtCSD(hmmc, &block_nbr, 212, 0x0FFFFFFFU) != HAL_OK) /* Field SEC_COUNT [215:212] */ in HAL_MMC_GetCardCSD()
2036 if(hmmc->MmcCard.CardType == MMC_LOW_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2038 hmmc->MmcCard.BlockNbr = (pCSD->DeviceSize + 1U) ; in HAL_MMC_GetCardCSD()
2039 hmmc->MmcCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); in HAL_MMC_GetCardCSD()
2040 hmmc->MmcCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); in HAL_MMC_GetCardCSD()
2041 hmmc->MmcCard.LogBlockNbr = (hmmc->MmcCard.BlockNbr) * ((hmmc->MmcCard.BlockSize) / 512U); in HAL_MMC_GetCardCSD()
2042 hmmc->MmcCard.LogBlockSize = 512U; in HAL_MMC_GetCardCSD()
2044 else if(hmmc->MmcCard.CardType == MMC_HIGH_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2046 hmmc->MmcCard.BlockNbr = block_nbr; in HAL_MMC_GetCardCSD()
2047 hmmc->MmcCard.LogBlockNbr = hmmc->MmcCard.BlockNbr; in HAL_MMC_GetCardCSD()
2048 hmmc->MmcCard.BlockSize = 512U; in HAL_MMC_GetCardCSD()
2049 hmmc->MmcCard.LogBlockSize = hmmc->MmcCard.BlockSize; in HAL_MMC_GetCardCSD()
2054 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardCSD()
2055 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_GetCardCSD()
2056 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardCSD()
2060 pCSD->EraseGrSize = (uint8_t)((hmmc->CSD[2] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2062 pCSD->EraseGrMul = (uint8_t)((hmmc->CSD[2] & 0x00003F80U) >> 7U); in HAL_MMC_GetCardCSD()
2064 pCSD->WrProtectGrSize = (uint8_t)(hmmc->CSD[2] & 0x0000007FU); in HAL_MMC_GetCardCSD()
2066 pCSD->WrProtectGrEnable = (uint8_t)((hmmc->CSD[3] & 0x80000000U) >> 31U); in HAL_MMC_GetCardCSD()
2068 pCSD->ManDeflECC = (uint8_t)((hmmc->CSD[3] & 0x60000000U) >> 29U); in HAL_MMC_GetCardCSD()
2070 pCSD->WrSpeedFact = (uint8_t)((hmmc->CSD[3] & 0x1C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2072 pCSD->MaxWrBlockLen= (uint8_t)((hmmc->CSD[3] & 0x03C00000U) >> 22U); in HAL_MMC_GetCardCSD()
2074 pCSD->WriteBlockPaPartial = (uint8_t)((hmmc->CSD[3] & 0x00200000U) >> 21U); in HAL_MMC_GetCardCSD()
2078 pCSD->ContentProtectAppli = (uint8_t)((hmmc->CSD[3] & 0x00010000U) >> 16U); in HAL_MMC_GetCardCSD()
2080 pCSD->FileFormatGroup = (uint8_t)((hmmc->CSD[3] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2082 pCSD->CopyFlag = (uint8_t)((hmmc->CSD[3] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2084 pCSD->PermWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2086 pCSD->TempWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2088 pCSD->FileFormat = (uint8_t)((hmmc->CSD[3] & 0x00000C00U) >> 10U); in HAL_MMC_GetCardCSD()
2090 pCSD->ECC= (uint8_t)((hmmc->CSD[3] & 0x00000300U) >> 8U); in HAL_MMC_GetCardCSD()
2092 pCSD->CSD_CRC = (uint8_t)((hmmc->CSD[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCSD()
2106 HAL_StatusTypeDef HAL_MMC_GetCardInfo(MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo) in HAL_MMC_GetCardInfo() argument
2108 pCardInfo->CardType = (uint32_t)(hmmc->MmcCard.CardType); in HAL_MMC_GetCardInfo()
2109 pCardInfo->Class = (uint32_t)(hmmc->MmcCard.Class); in HAL_MMC_GetCardInfo()
2110 pCardInfo->RelCardAdd = (uint32_t)(hmmc->MmcCard.RelCardAdd); in HAL_MMC_GetCardInfo()
2111 pCardInfo->BlockNbr = (uint32_t)(hmmc->MmcCard.BlockNbr); in HAL_MMC_GetCardInfo()
2112 pCardInfo->BlockSize = (uint32_t)(hmmc->MmcCard.BlockSize); in HAL_MMC_GetCardInfo()
2113 pCardInfo->LogBlockNbr = (uint32_t)(hmmc->MmcCard.LogBlockNbr); in HAL_MMC_GetCardInfo()
2114 pCardInfo->LogBlockSize = (uint32_t)(hmmc->MmcCard.LogBlockSize); in HAL_MMC_GetCardInfo()
2128 HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeou… in HAL_MMC_GetCardExtCSD() argument
2138 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_GetCardExtCSD()
2142 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetCardExtCSD()
2144 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_GetCardExtCSD()
2146 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetCardExtCSD()
2149 hmmc->Instance->DCTRL = 0; in HAL_MMC_GetCardExtCSD()
2161 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_GetCardExtCSD()
2164 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in HAL_MMC_GetCardExtCSD()
2168 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2169 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardExtCSD()
2170 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2175 …while(!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | S… in HAL_MMC_GetCardExtCSD()
2177 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF)) in HAL_MMC_GetCardExtCSD()
2182 *tmp_buf = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2190 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2191 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2192 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2198 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_GetCardExtCSD()
2201 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2202 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2203 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2206 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_GetCardExtCSD()
2209 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2210 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_GetCardExtCSD()
2211 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2214 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_GetCardExtCSD()
2217 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2218 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_GetCardExtCSD()
2219 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2228 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_GetCardExtCSD()
2229 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2246 HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode) in HAL_MMC_ConfigWideBusOperation() argument
2257 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigWideBusOperation()
2259 errorstate = MMC_PwrClassUpdate(hmmc, WideMode); in HAL_MMC_ConfigWideBusOperation()
2265 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in HAL_MMC_ConfigWideBusOperation()
2269 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in HAL_MMC_ConfigWideBusOperation()
2273 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U); in HAL_MMC_ConfigWideBusOperation()
2288 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigWideBusOperation()
2295 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigWideBusOperation()
2310 Init = hmmc->Init; in HAL_MMC_ConfigWideBusOperation()
2312 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_ConfigWideBusOperation()
2327 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigWideBusOperation()
2332 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigWideBusOperation()
2333 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigWideBusOperation()
2345 HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetCardState() argument
2351 errorstate = MMC_SendStatus(hmmc, &resp1); in HAL_MMC_GetCardState()
2354 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardState()
2368 HAL_StatusTypeDef HAL_MMC_Abort(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort() argument
2373 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ in HAL_MMC_Abort()
2377 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort()
2379 if((hmmc->hdmatx != NULL) || (hmmc->hdmarx != NULL)) in HAL_MMC_Abort()
2382 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); in HAL_MMC_Abort()
2385 if(hmmc->hdmatx != NULL) in HAL_MMC_Abort()
2387 if(HAL_DMA_Abort(hmmc->hdmatx) != HAL_OK) in HAL_MMC_Abort()
2389 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_Abort()
2393 if(hmmc->hdmarx != NULL) in HAL_MMC_Abort()
2395 if(HAL_DMA_Abort(hmmc->hdmarx) != HAL_OK) in HAL_MMC_Abort()
2397 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_Abort()
2402 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2405 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Abort()
2407 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort()
2410 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort()
2412 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort()
2425 HAL_StatusTypeDef HAL_MMC_Abort_IT(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort_IT() argument
2430 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ in HAL_MMC_Abort_IT()
2434 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort_IT()
2436 if((hmmc->hdmatx != NULL) || (hmmc->hdmarx != NULL)) in HAL_MMC_Abort_IT()
2439 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); in HAL_MMC_Abort_IT()
2442 if(hmmc->hdmatx != NULL) in HAL_MMC_Abort_IT()
2444 hmmc->hdmatx->XferAbortCallback = MMC_DMATxAbort; in HAL_MMC_Abort_IT()
2445 if(HAL_DMA_Abort_IT(hmmc->hdmatx) != HAL_OK) in HAL_MMC_Abort_IT()
2447 hmmc->hdmatx = NULL; in HAL_MMC_Abort_IT()
2451 if(hmmc->hdmarx != NULL) in HAL_MMC_Abort_IT()
2453 hmmc->hdmarx->XferAbortCallback = MMC_DMARxAbort; in HAL_MMC_Abort_IT()
2454 if(HAL_DMA_Abort_IT(hmmc->hdmarx) != HAL_OK) in HAL_MMC_Abort_IT()
2456 hmmc->hdmarx = NULL; in HAL_MMC_Abort_IT()
2462 if((hmmc->hdmatx == NULL) && (hmmc->hdmarx == NULL)) in HAL_MMC_Abort_IT()
2464 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort_IT()
2465 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort_IT()
2469 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort_IT()
2471 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort_IT()
2478 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_Abort_IT()
2480 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_Abort_IT()
2508 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMATransmitCplt() local
2511 __HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DATAEND)); in MMC_DMATransmitCplt()
2521 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMAReceiveCplt() local
2525 if(hmmc->Context == (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA)) in MMC_DMAReceiveCplt()
2527 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMAReceiveCplt()
2530 hmmc->ErrorCode |= errorstate; in MMC_DMAReceiveCplt()
2532 hmmc->ErrorCallback(hmmc); in MMC_DMAReceiveCplt()
2534 HAL_MMC_ErrorCallback(hmmc); in MMC_DMAReceiveCplt()
2541 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); in MMC_DMAReceiveCplt()
2544 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in MMC_DMAReceiveCplt()
2546 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMAReceiveCplt()
2549 hmmc->RxCpltCallback(hmmc); in MMC_DMAReceiveCplt()
2551 HAL_MMC_RxCpltCallback(hmmc); in MMC_DMAReceiveCplt()
2562 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMAError() local
2569 RxErrorCode = hmmc->hdmarx->ErrorCode; in MMC_DMAError()
2570 TxErrorCode = hmmc->hdmatx->ErrorCode; in MMC_DMAError()
2574 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_DMAError()
2577 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ in MMC_DMAError()
2580 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in MMC_DMAError()
2581 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMAError()
2584 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMAError()
2587 hmmc->State= HAL_MMC_STATE_READY; in MMC_DMAError()
2591 hmmc->ErrorCallback(hmmc); in MMC_DMAError()
2593 HAL_MMC_ErrorCallback(hmmc); in MMC_DMAError()
2605 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMATxAbort() local
2608 if(hmmc->hdmatx != NULL) in MMC_DMATxAbort()
2610 hmmc->hdmatx = NULL; in MMC_DMATxAbort()
2614 if(hmmc->hdmarx == NULL) in MMC_DMATxAbort()
2616 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMATxAbort()
2617 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_DMATxAbort()
2618 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMATxAbort()
2621 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMATxAbort()
2623 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in MMC_DMATxAbort()
2626 hmmc->AbortCpltCallback(hmmc); in MMC_DMATxAbort()
2628 HAL_MMC_AbortCallback(hmmc); in MMC_DMATxAbort()
2634 hmmc->ErrorCallback(hmmc); in MMC_DMATxAbort()
2636 HAL_MMC_ErrorCallback(hmmc); in MMC_DMATxAbort()
2650 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMARxAbort() local
2653 if(hmmc->hdmarx != NULL) in MMC_DMARxAbort()
2655 hmmc->hdmarx = NULL; in MMC_DMARxAbort()
2659 if(hmmc->hdmatx == NULL) in MMC_DMARxAbort()
2661 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMARxAbort()
2662 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_DMARxAbort()
2663 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMARxAbort()
2666 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMARxAbort()
2668 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in MMC_DMARxAbort()
2671 hmmc->AbortCpltCallback(hmmc); in MMC_DMARxAbort()
2673 HAL_MMC_AbortCallback(hmmc); in MMC_DMARxAbort()
2679 hmmc->ErrorCallback(hmmc); in MMC_DMARxAbort()
2681 HAL_MMC_ErrorCallback(hmmc); in MMC_DMARxAbort()
2693 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc) in MMC_InitCard() argument
2701 if(SDMMC_GetPowerState(hmmc->Instance) == 0U) in MMC_InitCard()
2708 errorstate = SDMMC_CmdSendCID(hmmc->Instance); in MMC_InitCard()
2716 hmmc->CID[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
2717 hmmc->CID[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
2718 hmmc->CID[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
2719 hmmc->CID[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
2724 errorstate = SDMMC_CmdSetRelAddMmc(hmmc->Instance, mmc_rca); in MMC_InitCard()
2731 hmmc->MmcCard.RelCardAdd = mmc_rca; in MMC_InitCard()
2734 errorstate = SDMMC_CmdSendCSD(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_InitCard()
2742 hmmc->CSD[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
2743 hmmc->CSD[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
2744 hmmc->CSD[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
2745 hmmc->CSD[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
2749 hmmc->MmcCard.Class = (SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2) >> 20U); in MMC_InitCard()
2752 …errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << … in MMC_InitCard()
2759 if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK) in MMC_InitCard()
2761 return hmmc->ErrorCode; in MMC_InitCard()
2765 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
2768 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
2772 if (HAL_MMC_GetCardExtCSD(hmmc, hmmc->Ext_CSD, SDMMC_DATATIMEOUT) != HAL_OK) in MMC_InitCard()
2774 return hmmc->ErrorCode; in MMC_InitCard()
2778 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
2781 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
2785 Init = hmmc->Init; in MMC_InitCard()
2787 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_InitCard()
2800 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc) in MMC_PowerON() argument
2807 errorstate = SDMMC_CmdGoIdleState(hmmc->Instance); in MMC_PowerON()
2821 errorstate = SDMMC_CmdOpCondition(hmmc->Instance, MMC_VOLTAGE_RANGE); in MMC_PowerON()
2828 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PowerON()
2837 hmmc->MmcCard.CardType = MMC_HIGH_CAPACITY_CARD; in MMC_PowerON()
2841 hmmc->MmcCard.CardType = MMC_LOW_CAPACITY_CARD; in MMC_PowerON()
2852 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc) in MMC_PowerOFF() argument
2855 (void)SDMMC_PowerState_OFF(hmmc->Instance); in MMC_PowerOFF()
2865 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus) in MMC_SendStatus() argument
2875 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_SendStatus()
2882 *pCardStatus = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_SendStatus()
2895 static uint32_t MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t FieldIndex, … in MMC_ReadExtCSD() argument
2904 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_ReadExtCSD()
2907 hmmc->Instance->DCTRL = 0; in MMC_ReadExtCSD()
2916 (void)SDMMC_ConfigData(hmmc->Instance, &config); in MMC_ReadExtCSD()
2919 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in MMC_ReadExtCSD()
2923 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
2924 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
2925 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
2930 …while(!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | S… in MMC_ReadExtCSD()
2932 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF)) in MMC_ReadExtCSD()
2937 tmp_data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_ReadExtCSD()
2951 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
2952 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in MMC_ReadExtCSD()
2953 hmmc->State= HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
2959 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_ReadExtCSD()
2962 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
2966 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in MMC_ReadExtCSD()
2968 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
2980 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc) in MMC_Read_IT() argument
2985 tmp = hmmc->pRxBuffPtr; in MMC_Read_IT()
2986 dataremaining = hmmc->RxXferSize; in MMC_Read_IT()
2993 data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_Read_IT()
3008 hmmc->pRxBuffPtr = tmp; in MMC_Read_IT()
3009 hmmc->RxXferSize = dataremaining; in MMC_Read_IT()
3019 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc) in MMC_Write_IT() argument
3024 tmp = hmmc->pTxBuffPtr; in MMC_Write_IT()
3025 dataremaining = hmmc->TxXferSize; in MMC_Write_IT()
3044 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in MMC_Write_IT()
3047 hmmc->pTxBuffPtr = tmp; in MMC_Write_IT()
3048 hmmc->TxXferSize = dataremaining; in MMC_Write_IT()
3059 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide) in MMC_PwrClassUpdate() argument
3071 …if(MMC_ReadExtCSD(hmmc, &power_class, 187, SDMMC_DATATIMEOUT) != HAL_OK) /* Field POWER_CLASS [187… in MMC_PwrClassUpdate()
3082 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_26_INDEX/4)] >> MMC_EXT_CSD_PWR_CL_26_PO… in MMC_PwrClassUpdate()
3095 …errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03BB0000U | ((supported_pwr_class & 0x0FU) << 8U))… in MMC_PwrClassUpdate()
3103 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_PwrClassUpdate()
3110 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PwrClassUpdate()