Lines Matching refs:hmmc

367 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc);
368 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc);
369 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus);
370 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc);
371 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc);
372 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc);
373 static uint32_t MMC_HighSpeed(MMC_HandleTypeDef *hmmc, FunctionalState state);
374 static uint32_t MMC_DDR_Mode(MMC_HandleTypeDef *hmmc, FunctionalState state);
375 static HAL_StatusTypeDef MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t Fie…
377 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide, uint32_t Speed);
408 HAL_StatusTypeDef HAL_MMC_Init(MMC_HandleTypeDef *hmmc) in HAL_MMC_Init() argument
411 if (hmmc == NULL) in HAL_MMC_Init()
417 assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_Init()
418 assert_param(IS_SDMMC_CLOCK_EDGE(hmmc->Init.ClockEdge)); in HAL_MMC_Init()
419 assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hmmc->Init.ClockPowerSave)); in HAL_MMC_Init()
420 assert_param(IS_SDMMC_BUS_WIDE(hmmc->Init.BusWide)); in HAL_MMC_Init()
421 assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hmmc->Init.HardwareFlowControl)); in HAL_MMC_Init()
422 assert_param(IS_SDMMC_CLKDIV(hmmc->Init.ClockDiv)); in HAL_MMC_Init()
424 if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_Init()
427 hmmc->Lock = HAL_UNLOCKED; in HAL_MMC_Init()
430 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_Init()
431 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_Init()
432 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_Init()
433 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_Init()
434 hmmc->Read_DMALnkLstBufCpltCallback = HAL_MMCEx_Read_DMALnkLstBufCpltCallback; in HAL_MMC_Init()
435 hmmc->Write_DMALnkLstBufCpltCallback = HAL_MMCEx_Write_DMALnkLstBufCpltCallback; in HAL_MMC_Init()
437 if (hmmc->MspInitCallback == NULL) in HAL_MMC_Init()
439 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_Init()
443 hmmc->MspInitCallback(hmmc); in HAL_MMC_Init()
446 HAL_MMC_MspInit(hmmc); in HAL_MMC_Init()
450 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Init()
453 if (HAL_MMC_InitCard(hmmc) == HAL_ERROR) in HAL_MMC_Init()
459 hmmc->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_MMC_Init()
462 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Init()
465 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Init()
468 if (hmmc->Init.BusWide != SDMMC_BUS_WIDE_1B) in HAL_MMC_Init()
470 if (HAL_MMC_ConfigWideBusOperation(hmmc, hmmc->Init.BusWide) != HAL_OK) in HAL_MMC_Init()
486 HAL_StatusTypeDef HAL_MMC_InitCard(MMC_HandleTypeDef *hmmc) in HAL_MMC_InitCard() argument
499 if (hmmc->Instance == SDMMC1) in HAL_MMC_InitCard()
503 else if (hmmc->Instance == SDMMC2) in HAL_MMC_InitCard()
513 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
514 hmmc->ErrorCode = SDMMC_ERROR_INVALID_PARAMETER; in HAL_MMC_InitCard()
524 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_InitCard()
527 (void)SDMMC_PowerState_ON(hmmc->Instance); in HAL_MMC_InitCard()
542 errorstate = MMC_PowerON(hmmc); in HAL_MMC_InitCard()
545 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
546 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
551 errorstate = MMC_InitCard(hmmc); in HAL_MMC_InitCard()
554 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
555 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
560 errorstate = SDMMC_CmdBlockLength(hmmc->Instance, MMC_BLOCKSIZE); in HAL_MMC_InitCard()
564 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_InitCard()
565 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
566 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
578 HAL_StatusTypeDef HAL_MMC_DeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_DeInit() argument
581 if (hmmc == NULL) in HAL_MMC_DeInit()
587 assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_DeInit()
589 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_DeInit()
592 MMC_PowerOFF(hmmc); in HAL_MMC_DeInit()
595 if (hmmc->MspDeInitCallback == NULL) in HAL_MMC_DeInit()
597 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_DeInit()
601 hmmc->MspDeInitCallback(hmmc); in HAL_MMC_DeInit()
604 HAL_MMC_MspDeInit(hmmc); in HAL_MMC_DeInit()
607 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_DeInit()
608 hmmc->State = HAL_MMC_STATE_RESET; in HAL_MMC_DeInit()
618 __weak void HAL_MMC_MspInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspInit() argument
621 UNUSED(hmmc); in HAL_MMC_MspInit()
633 __weak void HAL_MMC_MspDeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspDeInit() argument
636 UNUSED(hmmc); in HAL_MMC_MspDeInit()
674 HAL_StatusTypeDef HAL_MMC_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks() argument
689 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks()
693 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks()
695 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks()
697 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks()
699 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks()
704 if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) in HAL_MMC_ReadBlocks()
710 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks()
717 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks()
722 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks()
725 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks()
727 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks()
739 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks()
740 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks()
745 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_ReadBlocks()
748 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
752 hmmc->Context = MMC_CONTEXT_READ_SINGLE_BLOCK; in HAL_MMC_ReadBlocks()
755 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
760 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
761 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
762 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
768 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_ReadBlocks()
771 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_ReadBlocks()
776 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
792 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
793 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
794 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
798 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_ReadBlocks()
801 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_ReadBlocks()
804 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_ReadBlocks()
808 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
809 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
810 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
816 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_ReadBlocks()
819 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
820 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_ReadBlocks()
821 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
824 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_ReadBlocks()
827 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
828 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_ReadBlocks()
829 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
832 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_ReadBlocks()
835 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
836 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_ReadBlocks()
837 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
846 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_ReadBlocks()
848 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
854 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_ReadBlocks()
871 HAL_StatusTypeDef HAL_MMC_WriteBlocks(MMC_HandleTypeDef *hmmc, const uint8_t *pData, uint32_t Block… in HAL_MMC_WriteBlocks() argument
885 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks()
889 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks()
891 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks()
893 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks()
895 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks()
900 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_WriteBlocks()
905 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks()
912 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks()
917 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks()
920 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks()
922 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks()
934 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks()
935 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks()
940 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_WriteBlocks()
943 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
947 hmmc->Context = MMC_CONTEXT_WRITE_SINGLE_BLOCK; in HAL_MMC_WriteBlocks()
950 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
955 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
956 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
957 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
963 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_WriteBlocks()
966 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_WriteBlocks()
979 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_WriteBlocks()
987 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
988 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
989 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
993 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_WriteBlocks()
996 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_WriteBlocks()
999 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_WriteBlocks()
1003 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1004 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
1005 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1011 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_WriteBlocks()
1014 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1015 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_WriteBlocks()
1016 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1019 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_WriteBlocks()
1022 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1023 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_WriteBlocks()
1024 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1027 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_WriteBlocks()
1030 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1031 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_WriteBlocks()
1032 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1041 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_WriteBlocks()
1043 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1049 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_WriteBlocks()
1067 HAL_StatusTypeDef HAL_MMC_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks_IT() argument
1076 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_IT()
1080 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_IT()
1082 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_IT()
1084 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_IT()
1086 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_IT()
1091 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_ReadBlocks_IT()
1096 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks_IT()
1103 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks_IT()
1108 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_IT()
1111 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_IT()
1113 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_IT()
1114 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_IT()
1116 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_IT()
1128 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_IT()
1129 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks_IT()
1134 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1137 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1141 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1144 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1150 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_IT()
1151 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks_IT()
1152 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_IT()
1156 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_IT()
1180 HAL_StatusTypeDef HAL_MMC_WriteBlocks_IT(MMC_HandleTypeDef *hmmc, const uint8_t *pData, in HAL_MMC_WriteBlocks_IT() argument
1189 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_IT()
1193 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_IT()
1195 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_IT()
1197 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_IT()
1199 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_IT()
1204 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_WriteBlocks_IT()
1209 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks_IT()
1216 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks_IT()
1221 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_IT()
1224 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_IT()
1226 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_IT()
1227 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_IT()
1229 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_IT()
1241 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_IT()
1243 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks_IT()
1248 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1251 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1255 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1258 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1263 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_IT()
1264 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_IT()
1265 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_IT()
1270 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… in HAL_MMC_WriteBlocks_IT()
1294 HAL_StatusTypeDef HAL_MMC_ReadBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks_DMA() argument
1303 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_DMA()
1307 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_DMA()
1309 hmmc->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_MMC_ReadBlocks_DMA()
1311 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_DMA()
1313 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_DMA()
1318 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_ReadBlocks_DMA()
1323 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks_DMA()
1330 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks_DMA()
1335 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_DMA()
1338 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_DMA()
1340 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_DMA()
1341 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_DMA()
1343 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_DMA()
1355 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_DMA()
1357 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks_DMA()
1358 hmmc->Instance->IDMABASER = (uint32_t) pData ; in HAL_MMC_ReadBlocks_DMA()
1359 hmmc->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_MMC_ReadBlocks_DMA()
1364 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1367 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1371 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1374 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1379 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1380 hmmc->ErrorCode = errorstate; in HAL_MMC_ReadBlocks_DMA()
1381 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1386 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_DMA()
1409 HAL_StatusTypeDef HAL_MMC_WriteBlocks_DMA(MMC_HandleTypeDef *hmmc, const uint8_t *pData, in HAL_MMC_WriteBlocks_DMA() argument
1418 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_DMA()
1422 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_DMA()
1424 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_DMA()
1426 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_DMA()
1428 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_DMA()
1433 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_WriteBlocks_DMA()
1438 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks_DMA()
1445 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks_DMA()
1450 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_DMA()
1453 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_DMA()
1455 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_DMA()
1456 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_DMA()
1458 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_DMA()
1470 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_DMA()
1472 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks_DMA()
1474 hmmc->Instance->IDMABASER = (uint32_t) pData ; in HAL_MMC_WriteBlocks_DMA()
1475 hmmc->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_MMC_WriteBlocks_DMA()
1480 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1483 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1487 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1490 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1495 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1496 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_DMA()
1497 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_DMA()
1502 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… in HAL_MMC_WriteBlocks_DMA()
1521 HAL_StatusTypeDef HAL_MMC_Erase(MMC_HandleTypeDef *hmmc, uint32_t BlockStartAdd, uint32_t BlockEndA… in HAL_MMC_Erase() argument
1527 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Erase()
1529 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_Erase()
1533 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_Erase()
1537 if (end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_Erase()
1539 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_Erase()
1544 if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) in HAL_MMC_Erase()
1550 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_Erase()
1555 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Erase()
1558 if (((hmmc->MmcCard.Class) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_Erase()
1561 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1562 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_Erase()
1563 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1567 if ((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_Erase()
1570 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1571 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_Erase()
1572 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1576 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_Erase()
1583 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_Erase()
1587 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1588 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1589 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1594 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_Erase()
1598 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1599 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1600 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1605 errorstate = SDMMC_CmdErase(hmmc->Instance, 0UL); in HAL_MMC_Erase()
1609 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1610 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1611 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1615 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1630 void HAL_MMC_IRQHandler(MMC_HandleTypeDef *hmmc) in HAL_MMC_IRQHandler() argument
1633 uint32_t context = hmmc->Context; in HAL_MMC_IRQHandler()
1636 …if ((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) != RESET) && ((context & MMC_CONTEXT_IT) != 0U)) in HAL_MMC_IRQHandler()
1638 MMC_Read_IT(hmmc); in HAL_MMC_IRQHandler()
1641 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) != RESET) in HAL_MMC_IRQHandler()
1643 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DATAEND); in HAL_MMC_IRQHandler()
1645 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_IRQHandler()
1649 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1650 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_IRQHandler()
1654 hmmc->Instance->DLEN = 0; in HAL_MMC_IRQHandler()
1655 hmmc->Instance->DCTRL = 0; in HAL_MMC_IRQHandler()
1656 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA ; in HAL_MMC_IRQHandler()
1661 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1664 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1666 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1668 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1674 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1676 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1680 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1682 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1688 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1690 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1699 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1702 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1704 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1706 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1712 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1714 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1718 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1720 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1726 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1728 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1738 …else if ((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) != RESET) && ((context & MMC_CONTEXT_IT) !… in HAL_MMC_IRQHandler()
1740 MMC_Write_IT(hmmc); in HAL_MMC_IRQHandler()
1743 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL | in HAL_MMC_IRQHandler()
1747 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_DCRCFAIL) != RESET) in HAL_MMC_IRQHandler()
1749 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_IRQHandler()
1751 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_DTIMEOUT) != RESET) in HAL_MMC_IRQHandler()
1753 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_IRQHandler()
1755 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_RXOVERR) != RESET) in HAL_MMC_IRQHandler()
1757 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_IRQHandler()
1759 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_TXUNDERR) != RESET) in HAL_MMC_IRQHandler()
1761 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_IRQHandler()
1765 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1768 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_IRQHandler()
1771 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_IRQHandler()
1772 hmmc->Instance->DCTRL |= SDMMC_DCTRL_FIFORST; in HAL_MMC_IRQHandler()
1773 hmmc->Instance->CMD |= SDMMC_CMD_CMDSTOP; in HAL_MMC_IRQHandler()
1774 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1775 hmmc->Instance->CMD &= ~(SDMMC_CMD_CMDSTOP); in HAL_MMC_IRQHandler()
1776 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DABORT); in HAL_MMC_IRQHandler()
1781 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1783 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1785 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1790 if (hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_IRQHandler()
1793 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1794 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_IRQHandler()
1797 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1799 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1801 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1811 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_IDMABTC) != RESET) in HAL_MMC_IRQHandler()
1813 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1818 hmmc->Write_DMALnkLstBufCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1820 HAL_MMCEx_Write_DMALnkLstBufCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1826 hmmc->Read_DMALnkLstBufCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1828 HAL_MMCEx_Read_DMALnkLstBufCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1844 HAL_MMC_StateTypeDef HAL_MMC_GetState(const MMC_HandleTypeDef *hmmc) in HAL_MMC_GetState() argument
1846 return hmmc->State; in HAL_MMC_GetState()
1855 uint32_t HAL_MMC_GetError(const MMC_HandleTypeDef *hmmc) in HAL_MMC_GetError() argument
1857 return hmmc->ErrorCode; in HAL_MMC_GetError()
1865 __weak void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_TxCpltCallback() argument
1868 UNUSED(hmmc); in HAL_MMC_TxCpltCallback()
1880 __weak void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_RxCpltCallback() argument
1883 UNUSED(hmmc); in HAL_MMC_RxCpltCallback()
1895 __weak void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_ErrorCallback() argument
1898 UNUSED(hmmc); in HAL_MMC_ErrorCallback()
1910 __weak void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_AbortCallback() argument
1913 UNUSED(hmmc); in HAL_MMC_AbortCallback()
1941 HAL_StatusTypeDef HAL_MMC_RegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Callb… in HAL_MMC_RegisterCallback() argument
1949 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1953 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RegisterCallback()
1958 hmmc->TxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1961 hmmc->RxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1964 hmmc->ErrorCallback = pCallback; in HAL_MMC_RegisterCallback()
1967 hmmc->AbortCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1970 hmmc->Read_DMALnkLstBufCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1973 hmmc->Write_DMALnkLstBufCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1976 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1979 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1983 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1989 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_RegisterCallback()
1994 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1997 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2001 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2010 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2037 HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Cal… in HAL_MMC_UnRegisterCallback() argument
2041 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_UnRegisterCallback()
2046 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_UnRegisterCallback()
2049 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_UnRegisterCallback()
2052 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_UnRegisterCallback()
2055 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_UnRegisterCallback()
2058 hmmc->Read_DMALnkLstBufCpltCallback = HAL_MMCEx_Read_DMALnkLstBufCpltCallback; in HAL_MMC_UnRegisterCallback()
2061 hmmc->Write_DMALnkLstBufCpltCallback = HAL_MMCEx_Write_DMALnkLstBufCpltCallback; in HAL_MMC_UnRegisterCallback()
2064 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
2067 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
2071 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2077 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_UnRegisterCallback()
2082 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
2085 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
2089 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2098 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2134 HAL_StatusTypeDef HAL_MMC_GetCardCID(const MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID) in HAL_MMC_GetCardCID() argument
2136 pCID->ManufacturerID = (uint8_t)((hmmc->CID[0] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2138 pCID->OEM_AppliID = (uint16_t)((hmmc->CID[0] & 0x00FFFF00U) >> 8U); in HAL_MMC_GetCardCID()
2140 pCID->ProdName1 = (((hmmc->CID[0] & 0x000000FFU) << 24U) | ((hmmc->CID[1] & 0xFFFFFF00U) >> 8U)); in HAL_MMC_GetCardCID()
2142 pCID->ProdName2 = (uint8_t)(hmmc->CID[1] & 0x000000FFU); in HAL_MMC_GetCardCID()
2144 pCID->ProdRev = (uint8_t)((hmmc->CID[2] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2146 pCID->ProdSN = (((hmmc->CID[2] & 0x00FFFFFFU) << 8U) | ((hmmc->CID[3] & 0xFF000000U) >> 24U)); in HAL_MMC_GetCardCID()
2148 pCID->Reserved1 = (uint8_t)((hmmc->CID[3] & 0x00F00000U) >> 20U); in HAL_MMC_GetCardCID()
2150 pCID->ManufactDate = (uint16_t)((hmmc->CID[3] & 0x000FFF00U) >> 8U); in HAL_MMC_GetCardCID()
2152 pCID->CID_CRC = (uint8_t)((hmmc->CID[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCID()
2167 HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD) in HAL_MMC_GetCardCSD() argument
2171 pCSD->CSDStruct = (uint8_t)((hmmc->CSD[0] & 0xC0000000U) >> 30U); in HAL_MMC_GetCardCSD()
2173 pCSD->SysSpecVersion = (uint8_t)((hmmc->CSD[0] & 0x3C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2175 pCSD->Reserved1 = (uint8_t)((hmmc->CSD[0] & 0x03000000U) >> 24U); in HAL_MMC_GetCardCSD()
2177 pCSD->TAAC = (uint8_t)((hmmc->CSD[0] & 0x00FF0000U) >> 16U); in HAL_MMC_GetCardCSD()
2179 pCSD->NSAC = (uint8_t)((hmmc->CSD[0] & 0x0000FF00U) >> 8U); in HAL_MMC_GetCardCSD()
2181 pCSD->MaxBusClkFrec = (uint8_t)(hmmc->CSD[0] & 0x000000FFU); in HAL_MMC_GetCardCSD()
2183 pCSD->CardComdClasses = (uint16_t)((hmmc->CSD[1] & 0xFFF00000U) >> 20U); in HAL_MMC_GetCardCSD()
2185 pCSD->RdBlockLen = (uint8_t)((hmmc->CSD[1] & 0x000F0000U) >> 16U); in HAL_MMC_GetCardCSD()
2187 pCSD->PartBlockRead = (uint8_t)((hmmc->CSD[1] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2189 pCSD->WrBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2191 pCSD->RdBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2193 pCSD->DSRImpl = (uint8_t)((hmmc->CSD[1] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2197 if (MMC_ReadExtCSD(hmmc, &block_nbr, 212, 0x0FFFFFFFU) != HAL_OK) /* Field SEC_COUNT [215:212] */ in HAL_MMC_GetCardCSD()
2202 if (hmmc->MmcCard.CardType == MMC_LOW_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2204 … pCSD->DeviceSize = (((hmmc->CSD[1] & 0x000003FFU) << 2U) | ((hmmc->CSD[2] & 0xC0000000U) >> 30U)); in HAL_MMC_GetCardCSD()
2206 pCSD->MaxRdCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x38000000U) >> 27U); in HAL_MMC_GetCardCSD()
2208 pCSD->MaxRdCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x07000000U) >> 24U); in HAL_MMC_GetCardCSD()
2210 pCSD->MaxWrCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x00E00000U) >> 21U); in HAL_MMC_GetCardCSD()
2212 pCSD->MaxWrCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x001C0000U) >> 18U); in HAL_MMC_GetCardCSD()
2214 pCSD->DeviceSizeMul = (uint8_t)((hmmc->CSD[2] & 0x00038000U) >> 15U); in HAL_MMC_GetCardCSD()
2216 hmmc->MmcCard.BlockNbr = (pCSD->DeviceSize + 1U) ; in HAL_MMC_GetCardCSD()
2217 hmmc->MmcCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); in HAL_MMC_GetCardCSD()
2218 hmmc->MmcCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); in HAL_MMC_GetCardCSD()
2220hmmc->MmcCard.LogBlockNbr = (hmmc->MmcCard.BlockNbr) * ((hmmc->MmcCard.BlockSize) / MMC_BLOCKSIZE); in HAL_MMC_GetCardCSD()
2221 hmmc->MmcCard.LogBlockSize = MMC_BLOCKSIZE; in HAL_MMC_GetCardCSD()
2223 else if (hmmc->MmcCard.CardType == MMC_HIGH_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2225 hmmc->MmcCard.BlockNbr = block_nbr; in HAL_MMC_GetCardCSD()
2226 hmmc->MmcCard.LogBlockNbr = hmmc->MmcCard.BlockNbr; in HAL_MMC_GetCardCSD()
2227 hmmc->MmcCard.BlockSize = MMC_BLOCKSIZE; in HAL_MMC_GetCardCSD()
2228 hmmc->MmcCard.LogBlockSize = hmmc->MmcCard.BlockSize; in HAL_MMC_GetCardCSD()
2233 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardCSD()
2234 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_GetCardCSD()
2235 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardCSD()
2239 pCSD->EraseGrSize = (uint8_t)((hmmc->CSD[2] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2241 pCSD->EraseGrMul = (uint8_t)((hmmc->CSD[2] & 0x00003F80U) >> 7U); in HAL_MMC_GetCardCSD()
2243 pCSD->WrProtectGrSize = (uint8_t)(hmmc->CSD[2] & 0x0000007FU); in HAL_MMC_GetCardCSD()
2245 pCSD->WrProtectGrEnable = (uint8_t)((hmmc->CSD[3] & 0x80000000U) >> 31U); in HAL_MMC_GetCardCSD()
2247 pCSD->ManDeflECC = (uint8_t)((hmmc->CSD[3] & 0x60000000U) >> 29U); in HAL_MMC_GetCardCSD()
2249 pCSD->WrSpeedFact = (uint8_t)((hmmc->CSD[3] & 0x1C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2251 pCSD->MaxWrBlockLen = (uint8_t)((hmmc->CSD[3] & 0x03C00000U) >> 22U); in HAL_MMC_GetCardCSD()
2253 pCSD->WriteBlockPaPartial = (uint8_t)((hmmc->CSD[3] & 0x00200000U) >> 21U); in HAL_MMC_GetCardCSD()
2257 pCSD->ContentProtectAppli = (uint8_t)((hmmc->CSD[3] & 0x00010000U) >> 16U); in HAL_MMC_GetCardCSD()
2259 pCSD->FileFormatGroup = (uint8_t)((hmmc->CSD[3] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2261 pCSD->CopyFlag = (uint8_t)((hmmc->CSD[3] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2263 pCSD->PermWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2265 pCSD->TempWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2267 pCSD->FileFormat = (uint8_t)((hmmc->CSD[3] & 0x00000C00U) >> 10U); in HAL_MMC_GetCardCSD()
2269 pCSD->ECC = (uint8_t)((hmmc->CSD[3] & 0x00000300U) >> 8U); in HAL_MMC_GetCardCSD()
2271 pCSD->CSD_CRC = (uint8_t)((hmmc->CSD[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCSD()
2285 HAL_StatusTypeDef HAL_MMC_GetCardInfo(const MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCard… in HAL_MMC_GetCardInfo() argument
2287 pCardInfo->CardType = (uint32_t)(hmmc->MmcCard.CardType); in HAL_MMC_GetCardInfo()
2288 pCardInfo->Class = (uint32_t)(hmmc->MmcCard.Class); in HAL_MMC_GetCardInfo()
2289 pCardInfo->RelCardAdd = (uint32_t)(hmmc->MmcCard.RelCardAdd); in HAL_MMC_GetCardInfo()
2290 pCardInfo->BlockNbr = (uint32_t)(hmmc->MmcCard.BlockNbr); in HAL_MMC_GetCardInfo()
2291 pCardInfo->BlockSize = (uint32_t)(hmmc->MmcCard.BlockSize); in HAL_MMC_GetCardInfo()
2292 pCardInfo->LogBlockNbr = (uint32_t)(hmmc->MmcCard.LogBlockNbr); in HAL_MMC_GetCardInfo()
2293 pCardInfo->LogBlockSize = (uint32_t)(hmmc->MmcCard.LogBlockSize); in HAL_MMC_GetCardInfo()
2307 HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeou… in HAL_MMC_GetCardExtCSD() argument
2318 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_GetCardExtCSD()
2322 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetCardExtCSD()
2324 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_GetCardExtCSD()
2326 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetCardExtCSD()
2329 hmmc->Instance->DCTRL = 0; in HAL_MMC_GetCardExtCSD()
2341 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_GetCardExtCSD()
2342 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2345 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in HAL_MMC_GetCardExtCSD()
2349 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2350 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardExtCSD()
2351 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2357 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | in HAL_MMC_GetCardExtCSD()
2360 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_GetCardExtCSD()
2365 *tmp_buf = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2374 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2375 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2376 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2381 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2384 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_GetCardExtCSD()
2387 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2388 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2389 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2392 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_GetCardExtCSD()
2395 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2396 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_GetCardExtCSD()
2397 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2400 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_GetCardExtCSD()
2403 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2404 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_GetCardExtCSD()
2405 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2414 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_GetCardExtCSD()
2415 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2432 HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode) in HAL_MMC_ConfigWideBusOperation() argument
2443 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigWideBusOperation()
2446 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) in HAL_MMC_ConfigWideBusOperation()
2448 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) in HAL_MMC_ConfigWideBusOperation()
2450 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_DDR); in HAL_MMC_ConfigWideBusOperation()
2454 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_HIGH); in HAL_MMC_ConfigWideBusOperation()
2459 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_DEFAULT); in HAL_MMC_ConfigWideBusOperation()
2466 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in HAL_MMC_ConfigWideBusOperation()
2470 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in HAL_MMC_ConfigWideBusOperation()
2474 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U); in HAL_MMC_ConfigWideBusOperation()
2489 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigWideBusOperation()
2496 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigWideBusOperation()
2511 Init = hmmc->Init; in HAL_MMC_ConfigWideBusOperation()
2513 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_ConfigWideBusOperation()
2528 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigWideBusOperation()
2533 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigWideBusOperation()
2534 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigWideBusOperation()
2553 HAL_StatusTypeDef HAL_MMC_ConfigSpeedBusOperation(MMC_HandleTypeDef *hmmc, uint32_t SpeedMode) in HAL_MMC_ConfigSpeedBusOperation() argument
2564 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigSpeedBusOperation()
2567 device_type = (hmmc->Ext_CSD[49] & 0x000000FFU); in HAL_MMC_ConfigSpeedBusOperation()
2573 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS) != 0U) && ((device_type & 0x04U) != 0U)) in HAL_MMC_ConfigSpeedBusOperation()
2576 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2579 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2583 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_CLKDIV) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2586 errorstate = MMC_DDR_Mode(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2589 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2597 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2600 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2611 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS) != 0U) && ((device_type & 0x04U) != 0U)) in HAL_MMC_ConfigSpeedBusOperation()
2614 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2617 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2621 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_CLKDIV) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2624 errorstate = MMC_DDR_Mode(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2627 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2635 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_ConfigSpeedBusOperation()
2645 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2648 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2654 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_ConfigSpeedBusOperation()
2661 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2664 errorstate = MMC_DDR_Mode(hmmc, DISABLE); in HAL_MMC_ConfigSpeedBusOperation()
2667 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2670 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2673 errorstate = MMC_HighSpeed(hmmc, DISABLE); in HAL_MMC_ConfigSpeedBusOperation()
2676 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2682 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ConfigSpeedBusOperation()
2689 while ((HAL_MMC_GetCardState(hmmc) != HAL_MMC_CARD_TRANSFER)) in HAL_MMC_ConfigSpeedBusOperation()
2693 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ConfigSpeedBusOperation()
2694 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSpeedBusOperation()
2700 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSpeedBusOperation()
2709 HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetCardState() argument
2715 errorstate = MMC_SendStatus(hmmc, &resp1); in HAL_MMC_GetCardState()
2718 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardState()
2732 HAL_StatusTypeDef HAL_MMC_Abort(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort() argument
2737 if (hmmc->State == HAL_MMC_STATE_BUSY) in HAL_MMC_Abort()
2740 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_Abort()
2742 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_Abort()
2750 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort()
2751 error_code = hmmc->ErrorCode; in HAL_MMC_Abort()
2758 if ((hmmc->Instance->DCTRL & SDMMC_DCTRL_DTDIR) == SDMMC_TRANSFER_DIR_TO_CARD) in HAL_MMC_Abort()
2760 if (hmmc->ErrorCode == HAL_MMC_ERROR_NONE) in HAL_MMC_Abort()
2762 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DABORT | SDMMC_FLAG_BUSYD0END)) in HAL_MMC_Abort()
2766 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2767 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2773 if (hmmc->ErrorCode == HAL_MMC_ERROR_CMD_RSP_TIMEOUT) in HAL_MMC_Abort()
2775 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND)) in HAL_MMC_Abort()
2779 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2780 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2786 else if ((hmmc->Instance->DCTRL & SDMMC_DCTRL_DTDIR) == SDMMC_TRANSFER_DIR_TO_SDMMC) in HAL_MMC_Abort()
2788 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DABORT | SDMMC_FLAG_DATAEND)) in HAL_MMC_Abort()
2792 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2793 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2809 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_Abort()
2810 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort()
2812 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_Abort()
2814 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2817 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Abort()
2827 HAL_StatusTypeDef HAL_MMC_Abort_IT(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort_IT() argument
2832 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_Abort_IT()
2836 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_Abort_IT()
2839 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort_IT()
2841 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort_IT()
2842 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort_IT()
2846 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort_IT()
2848 if (hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort_IT()
2855 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_Abort_IT()
2857 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_Abort_IT()
2883 HAL_StatusTypeDef HAL_MMC_EraseSequence(MMC_HandleTypeDef *hmmc, uint32_t EraseType, in HAL_MMC_EraseSequence() argument
2897 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_EraseSequence()
2902 if (end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_EraseSequence()
2904 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_EraseSequence()
2909 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_EraseSequence()
2914 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_EraseSequence()
2920 if (((hmmc->MmcCard.Class) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_EraseSequence()
2922 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_EraseSequence()
2927 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_EraseSequence()
2930 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_EraseSequence()
2933 if ((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_EraseSequence()
2935 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_EraseSequence()
2936 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_EraseSequence()
2941 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_EraseSequence()
2948 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_EraseSequence()
2952 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_EraseSequence()
2956 errorstate = SDMMC_CmdErase(hmmc->Instance, EraseType); in HAL_MMC_EraseSequence()
2962 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_EraseSequence()
2971 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_EraseSequence()
2978 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_EraseSequence()
2984 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_EraseSequence()
2985 hmmc->ErrorCode |= errorstate; in HAL_MMC_EraseSequence()
3014 HAL_StatusTypeDef HAL_MMC_Sanitize(MMC_HandleTypeDef *hmmc) in HAL_MMC_Sanitize() argument
3022 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Sanitize()
3025 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Sanitize()
3028 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03A50100U); in HAL_MMC_Sanitize()
3032 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_Sanitize()
3041 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_Sanitize()
3049 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_Sanitize()
3056 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_Sanitize()
3081 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Sanitize()
3087 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Sanitize()
3088 hmmc->ErrorCode |= errorstate; in HAL_MMC_Sanitize()
3125 HAL_StatusTypeDef HAL_MMC_ConfigSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t SRTMode) in HAL_MMC_ConfigSecRemovalType() argument
3136 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ConfigSecRemovalType()
3139 if (HAL_MMC_GetSupportedSecRemovalType(hmmc, &srt) == HAL_OK) in HAL_MMC_ConfigSecRemovalType()
3142 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigSecRemovalType()
3149 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03100000U | (srt << 8U))); in HAL_MMC_ConfigSecRemovalType()
3156 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigSecRemovalType()
3163 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigSecRemovalType()
3192 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSecRemovalType()
3203 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigSecRemovalType()
3204 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSecRemovalType()
3231 HAL_StatusTypeDef HAL_MMC_GetSupportedSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t *SupportedSR… in HAL_MMC_GetSupportedSecRemovalType() argument
3234 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetSupportedSecRemovalType()
3237 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetSupportedSecRemovalType()
3240 *SupportedSRT = (hmmc->Ext_CSD[4] & 0x0000000FU); /* Bits [3:0] of field 16 */ in HAL_MMC_GetSupportedSecRemovalType()
3243 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetSupportedSecRemovalType()
3258 HAL_StatusTypeDef HAL_MMC_SleepDevice(MMC_HandleTypeDef *hmmc) in HAL_MMC_SleepDevice() argument
3268 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_SleepDevice()
3271 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_SleepDevice()
3274 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220100U)); in HAL_MMC_SleepDevice()
3281 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_SleepDevice()
3288 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SleepDevice()
3307 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220400U)); in HAL_MMC_SleepDevice()
3311 sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_SLEEP_NOTIFICATION_TIME_INDEX / 4)] >> in HAL_MMC_SleepDevice()
3323 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SleepDevice()
3332 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SleepDevice()
3340 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, in HAL_MMC_SleepDevice()
3341 … (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U)); in HAL_MMC_SleepDevice()
3348 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SleepDevice()
3367 (void)SDMMC_CmdSelDesel(hmmc->Instance, 0U); in HAL_MMC_SleepDevice()
3370 sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_S_A_TIMEOUT_INDEX / 4)] >> in HAL_MMC_SleepDevice()
3381 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_STANDBY) in HAL_MMC_SleepDevice()
3384 errorstate = SDMMC_CmdSleepMmc(hmmc->Instance, in HAL_MMC_SleepDevice()
3385 … ((hmmc->MmcCard.RelCardAdd << 16U) | (0x1U << 15U))); in HAL_MMC_SleepDevice()
3389 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SleepDevice()
3398 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SleepDevice()
3422 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_SleepDevice()
3428 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_SleepDevice()
3429 hmmc->ErrorCode |= errorstate; in HAL_MMC_SleepDevice()
3456 HAL_StatusTypeDef HAL_MMC_AwakeDevice(MMC_HandleTypeDef *hmmc) in HAL_MMC_AwakeDevice() argument
3466 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_AwakeDevice()
3469 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_AwakeDevice()
3472 …sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_S_A_TIMEOUT_INDEX / 4)] >> MMC_EXT_CSD_S_A_TIMEOUT_PO… in HAL_MMC_AwakeDevice()
3484 errorstate = SDMMC_CmdSleepMmc(hmmc->Instance, (hmmc->MmcCard.RelCardAdd << 16U)); in HAL_MMC_AwakeDevice()
3488 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_AwakeDevice()
3497 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_AwakeDevice()
3501 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_STANDBY) in HAL_MMC_AwakeDevice()
3504 errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (hmmc->MmcCard.RelCardAdd << 16U)); in HAL_MMC_AwakeDevice()
3507 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_TRANSFER) in HAL_MMC_AwakeDevice()
3510 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220100U)); in HAL_MMC_AwakeDevice()
3517 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, in HAL_MMC_AwakeDevice()
3518 … (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U)); in HAL_MMC_AwakeDevice()
3525 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_AwakeDevice()
3562 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_AwakeDevice()
3568 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_AwakeDevice()
3569 hmmc->ErrorCode |= errorstate; in HAL_MMC_AwakeDevice()
3608 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc) in MMC_InitCard() argument
3616 if (SDMMC_GetPowerState(hmmc->Instance) == 0U) in MMC_InitCard()
3623 errorstate = SDMMC_CmdSendCID(hmmc->Instance); in MMC_InitCard()
3631 hmmc->CID[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
3632 hmmc->CID[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
3633 hmmc->CID[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
3634 hmmc->CID[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
3639 errorstate = SDMMC_CmdSetRelAddMmc(hmmc->Instance, mmc_rca); in MMC_InitCard()
3646 hmmc->MmcCard.RelCardAdd = mmc_rca; in MMC_InitCard()
3649 errorstate = SDMMC_CmdSendCSD(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_InitCard()
3657 hmmc->CSD[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
3658 hmmc->CSD[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
3659 hmmc->CSD[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
3660 hmmc->CSD[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
3664 hmmc->MmcCard.Class = (SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2) >> 20U); in MMC_InitCard()
3667 …errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << … in MMC_InitCard()
3674 if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK) in MMC_InitCard()
3676 return hmmc->ErrorCode; in MMC_InitCard()
3680 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
3683 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
3687 if (HAL_MMC_GetCardExtCSD(hmmc, hmmc->Ext_CSD, SDMMC_DATATIMEOUT) != HAL_OK) in MMC_InitCard()
3689 return hmmc->ErrorCode; in MMC_InitCard()
3693 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
3696 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
3700 Init = hmmc->Init; in MMC_InitCard()
3702 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_InitCard()
3715 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc) in MMC_PowerON() argument
3723 errorstate = SDMMC_CmdGoIdleState(hmmc->Instance); in MMC_PowerON()
3737 errorstate = SDMMC_CmdOpCondition(hmmc->Instance, MMC_VOLTAGE_RANGE); in MMC_PowerON()
3744 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PowerON()
3753 hmmc->MmcCard.CardType = MMC_HIGH_CAPACITY_CARD; in MMC_PowerON()
3757 hmmc->MmcCard.CardType = MMC_LOW_CAPACITY_CARD; in MMC_PowerON()
3768 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc) in MMC_PowerOFF() argument
3771 (void)SDMMC_PowerState_OFF(hmmc->Instance); in MMC_PowerOFF()
3781 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus) in MMC_SendStatus() argument
3791 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_SendStatus()
3798 *pCardStatus = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_SendStatus()
3811 static HAL_StatusTypeDef MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, in MMC_ReadExtCSD() argument
3822 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_ReadExtCSD()
3825 hmmc->Instance->DCTRL = 0; in MMC_ReadExtCSD()
3834 (void)SDMMC_ConfigData(hmmc->Instance, &config); in MMC_ReadExtCSD()
3837 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in MMC_ReadExtCSD()
3841 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3842 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
3843 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3849 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | in MMC_ReadExtCSD()
3852 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in MMC_ReadExtCSD()
3857 tmp_data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_ReadExtCSD()
3872 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3873 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in MMC_ReadExtCSD()
3874 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3880 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in MMC_ReadExtCSD()
3883 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3884 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in MMC_ReadExtCSD()
3885 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3888 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in MMC_ReadExtCSD()
3891 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3892 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in MMC_ReadExtCSD()
3893 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3896 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in MMC_ReadExtCSD()
3899 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3900 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in MMC_ReadExtCSD()
3901 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3910 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_ReadExtCSD()
3913 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
3917 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in MMC_ReadExtCSD()
3919 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3930 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc) in MMC_Read_IT() argument
3936 tmp = hmmc->pRxBuffPtr; in MMC_Read_IT()
3938 if (hmmc->RxXferSize >= SDMMC_FIFO_SIZE) in MMC_Read_IT()
3943 data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_Read_IT()
3954 hmmc->pRxBuffPtr = tmp; in MMC_Read_IT()
3955 hmmc->RxXferSize -= SDMMC_FIFO_SIZE; in MMC_Read_IT()
3965 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc) in MMC_Write_IT() argument
3971 tmp = hmmc->pTxBuffPtr; in MMC_Write_IT()
3973 if (hmmc->TxXferSize >= SDMMC_FIFO_SIZE) in MMC_Write_IT()
3986 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in MMC_Write_IT()
3989 hmmc->pTxBuffPtr = tmp; in MMC_Write_IT()
3990 hmmc->TxXferSize -= SDMMC_FIFO_SIZE; in MMC_Write_IT()
4000 static uint32_t MMC_HighSpeed(MMC_HandleTypeDef *hmmc, FunctionalState state) in MMC_HighSpeed() argument
4008 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) && (state == DISABLE)) in MMC_HighSpeed()
4010 …errorstate = MMC_PwrClassUpdate(hmmc, (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS), SDMMC_SPEED_MO… in MMC_HighSpeed()
4014 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B90000U); in MMC_HighSpeed()
4018 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) == 0U) && (state != DISABLE)) in MMC_HighSpeed()
4020 …errorstate = MMC_PwrClassUpdate(hmmc, (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS), SDMMC_SPEED_MO… in MMC_HighSpeed()
4024 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B90100U); in MMC_HighSpeed()
4034 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_HighSpeed()
4041 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_HighSpeed()
4056 Init.ClockEdge = hmmc->Init.ClockEdge; in MMC_HighSpeed()
4057 Init.ClockPowerSave = hmmc->Init.ClockPowerSave; in MMC_HighSpeed()
4058 Init.BusWide = (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS); in MMC_HighSpeed()
4059 Init.HardwareFlowControl = hmmc->Init.HardwareFlowControl; in MMC_HighSpeed()
4063 Init.ClockDiv = hmmc->Init.ClockDiv; in MMC_HighSpeed()
4064 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_HighSpeed()
4066 CLEAR_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED); in MMC_HighSpeed()
4071 if (hmmc->Instance == SDMMC1) in MMC_HighSpeed()
4075 else if (hmmc->Instance == SDMMC2) in MMC_HighSpeed()
4098 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_HighSpeed()
4100 SET_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED); in MMC_HighSpeed()
4124 static uint32_t MMC_DDR_Mode(MMC_HandleTypeDef *hmmc, FunctionalState state) in MMC_DDR_Mode() argument
4130 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) && (state == DISABLE)) in MMC_DDR_Mode()
4132 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS_0) != 0U) in MMC_DDR_Mode()
4134 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_4B, SDMMC_SPEED_MODE_HIGH); in MMC_DDR_Mode()
4138 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in MMC_DDR_Mode()
4143 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_8B, SDMMC_SPEED_MODE_HIGH); in MMC_DDR_Mode()
4147 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in MMC_DDR_Mode()
4152 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) == 0U) && (state != DISABLE)) in MMC_DDR_Mode()
4154 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS_0) != 0U) in MMC_DDR_Mode()
4156 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_4B, SDMMC_SPEED_MODE_DDR); in MMC_DDR_Mode()
4160 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70500U); in MMC_DDR_Mode()
4165 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_8B, SDMMC_SPEED_MODE_DDR); in MMC_DDR_Mode()
4169 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70600U); in MMC_DDR_Mode()
4180 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_DDR_Mode()
4187 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_DDR_Mode()
4204 CLEAR_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_DDR); in MMC_DDR_Mode()
4208 SET_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_DDR); in MMC_DDR_Mode()
4232 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide, uint32_t Speed) in MMC_PwrClassUpdate() argument
4245 …if (MMC_ReadExtCSD(hmmc, &power_class, 187, SDMMC_DATATIMEOUT) != HAL_OK) /* Field POWER_CLASS [18… in MMC_PwrClassUpdate()
4258 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_DDR_52_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL… in MMC_PwrClassUpdate()
4264 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_52_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL_52_… in MMC_PwrClassUpdate()
4270 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_26_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL_26_… in MMC_PwrClassUpdate()
4285 …errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03BB0000U | ((supported_pwr_class & 0x0FU) << 8U))… in MMC_PwrClassUpdate()
4293 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_PwrClassUpdate()
4300 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PwrClassUpdate()
4335 HAL_StatusTypeDef HAL_MMC_SwitchPartition(MMC_HandleTypeDef *hmmc, HAL_MMC_PartitionTypeDef Partiti… in HAL_MMC_SwitchPartition() argument
4344 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_SwitchPartition()
4347 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_SwitchPartition()
4350 errorstate = SDMMC_CmdSwitch(hmmc->Instance, arg); in HAL_MMC_SwitchPartition()
4354 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SwitchPartition()
4363 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SwitchPartition()
4371 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_SwitchPartition()
4378 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SwitchPartition()
4403 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_SwitchPartition()
4409 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_SwitchPartition()
4410 hmmc->ErrorCode |= errorstate; in HAL_MMC_SwitchPartition()
4439 HAL_StatusTypeDef HAL_MMC_RPMB_ProgramAuthenticationKey(MMC_HandleTypeDef *hmmc, const uint8_t *pKe… in HAL_MMC_RPMB_ProgramAuthenticationKey() argument
4457 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4461 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4463 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4465 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4468 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4470 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x80000001U); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4474 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4475 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4476 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4487 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4488 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4492 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4495 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4501 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4502 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4503 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4510 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ProgramAuthenticationKey()
4513 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4530 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4560 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4561 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4562 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4566 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4569 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4573 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4574 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4575 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4586 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4587 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4590 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4593 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4598 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4599 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4600 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4605 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4611 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ProgramAuthenticationKey()
4614 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4619 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4651 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4652 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4653 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4657 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4660 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4663 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4664 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4665 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4668 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4671 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4672 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4673 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4676 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4679 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4680 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4681 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4690 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4692 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4697 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4705 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4717 uint32_t HAL_MMC_RPMB_GetWriteCounter(MMC_HandleTypeDef *hmmc, uint8_t *pNonce, uint32_t Timeout) in HAL_MMC_RPMB_GetWriteCounter() argument
4735 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_GetWriteCounter()
4736 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4740 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_GetWriteCounter()
4742 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_GetWriteCounter()
4743 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_GetWriteCounter()
4746 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_GetWriteCounter()
4748 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_GetWriteCounter()
4752 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4753 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4754 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4755 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4768 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_GetWriteCounter()
4769 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4772 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_GetWriteCounter()
4775 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_GetWriteCounter()
4780 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4781 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4782 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4783 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4789 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_GetWriteCounter()
4792 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_GetWriteCounter()
4810 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_GetWriteCounter()
4835 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4836 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4837 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4838 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4842 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4845 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_GetWriteCounter()
4849 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4850 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4851 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4852 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4863 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_GetWriteCounter()
4864 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4867 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_GetWriteCounter()
4870 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_GetWriteCounter()
4875 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4876 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4877 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4878 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4883 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4889 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_GetWriteCounter()
4892 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_GetWriteCounter()
4897 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4933 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4934 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_GetWriteCounter()
4935 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4936 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4940 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4943 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_GetWriteCounter()
4946 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4947 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_GetWriteCounter()
4948 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4949 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4952 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_GetWriteCounter()
4955 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4956 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_GetWriteCounter()
4957 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4958 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4961 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_GetWriteCounter()
4964 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4965 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_GetWriteCounter()
4966 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4967 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4976 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4978 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4984 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4994 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_GetWriteCounter()
4995 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
5011 HAL_StatusTypeDef HAL_MMC_RPMB_WriteBlocks(MMC_HandleTypeDef *hmmc, const uint8_t *pData, uint16_t … in HAL_MMC_RPMB_WriteBlocks() argument
5035 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_WriteBlocks()
5041 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_WriteBlocks()
5047 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_WriteBlocks()
5049 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_WriteBlocks()
5050 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5053 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_WriteBlocks()
5055 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_WriteBlocks()
5059 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5060 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5061 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5074 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5075 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5078 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5081 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5086 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5087 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5088 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5095 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5098 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5116 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_WriteBlocks()
5140 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5141 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5142 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5146 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5149 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001); in HAL_MMC_RPMB_WriteBlocks()
5153 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5154 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5155 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5166 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5167 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5170 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5173 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5178 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5179 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5180 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5185 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5191 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5194 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5199 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5235 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5236 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5237 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5241 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5244 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_WriteBlocks()
5247 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5248 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5249 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5252 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_WriteBlocks()
5255 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5256 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_WriteBlocks()
5257 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5260 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_WriteBlocks()
5263 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5264 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_WriteBlocks()
5265 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5274 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5276 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5288 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5302 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_WriteBlocks()
5304 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_WriteBlocks()
5307 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5310 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_WriteBlocks()
5312 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_WriteBlocks()
5316 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5317 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5318 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5330 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5331 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5336 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5339 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5345 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5346 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5347 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5354 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5357 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5375 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_WriteBlocks()
5409 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5410 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5411 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5415 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5419 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_WriteBlocks()
5423 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5424 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5425 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5436 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5437 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5442 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5445 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5451 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5452 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5453 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5459 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5464 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5467 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5472 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5504 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5505 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5506 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5510 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5513 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_WriteBlocks()
5516 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5517 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5518 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5521 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_WriteBlocks()
5524 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5525 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_WriteBlocks()
5526 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5529 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_WriteBlocks()
5532 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5533 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_WriteBlocks()
5534 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5543 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5545 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5550 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_WriteBlocks()
5558 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5575 HAL_StatusTypeDef HAL_MMC_RPMB_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint16_t BlockAd… in HAL_MMC_RPMB_ReadBlocks() argument
5607 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_ReadBlocks()
5609 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_ReadBlocks()
5610 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_ReadBlocks()
5613 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_ReadBlocks()
5615 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 1); in HAL_MMC_RPMB_ReadBlocks()
5619 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5620 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5621 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5634 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ReadBlocks()
5635 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5638 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ReadBlocks()
5641 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ReadBlocks()
5646 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5647 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5648 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5655 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ReadBlocks()
5658 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ReadBlocks()
5676 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_ReadBlocks()
5700 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5701 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5702 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5706 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5709 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_ReadBlocks()
5713 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5714 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5715 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5726 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ReadBlocks()
5727 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5730 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ReadBlocks()
5733 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ReadBlocks()
5738 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5739 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5740 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5745 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5751 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ReadBlocks()
5754 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ReadBlocks()
5759 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5808 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5809 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_ReadBlocks()
5810 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5814 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5817 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_ReadBlocks()
5820 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5821 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_ReadBlocks()
5822 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5825 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_ReadBlocks()
5828 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5829 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_ReadBlocks()
5830 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5833 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_ReadBlocks()
5836 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5837 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_ReadBlocks()
5838 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5847 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5849 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5862 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_ReadBlocks()
5870 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_ReadBlocks()
5881 __weak void HAL_MMCEx_Read_DMALnkLstBufCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMCEx_Read_DMALnkLstBufCpltCallback() argument
5884 UNUSED(hmmc); in HAL_MMCEx_Read_DMALnkLstBufCpltCallback()
5895 __weak void HAL_MMCEx_Write_DMALnkLstBufCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMCEx_Write_DMALnkLstBufCpltCallback() argument
5898 UNUSED(hmmc); in HAL_MMCEx_Write_DMALnkLstBufCpltCallback()