Lines Matching refs:hmmc

369 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc);
370 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc);
371 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus);
372 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc);
373 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc);
374 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc);
375 static uint32_t MMC_HighSpeed(MMC_HandleTypeDef *hmmc, FunctionalState state);
376 static uint32_t MMC_DDR_Mode(MMC_HandleTypeDef *hmmc, FunctionalState state);
377 static HAL_StatusTypeDef MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t Fie…
379 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide, uint32_t Speed);
410 HAL_StatusTypeDef HAL_MMC_Init(MMC_HandleTypeDef *hmmc) in HAL_MMC_Init() argument
413 if (hmmc == NULL) in HAL_MMC_Init()
419 assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_Init()
420 assert_param(IS_SDMMC_CLOCK_EDGE(hmmc->Init.ClockEdge)); in HAL_MMC_Init()
421 assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hmmc->Init.ClockPowerSave)); in HAL_MMC_Init()
422 assert_param(IS_SDMMC_BUS_WIDE(hmmc->Init.BusWide)); in HAL_MMC_Init()
423 assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hmmc->Init.HardwareFlowControl)); in HAL_MMC_Init()
424 assert_param(IS_SDMMC_CLKDIV(hmmc->Init.ClockDiv)); in HAL_MMC_Init()
426 if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_Init()
429 hmmc->Lock = HAL_UNLOCKED; in HAL_MMC_Init()
432 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_Init()
433 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_Init()
434 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_Init()
435 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_Init()
436 hmmc->Read_DMADblBuf0CpltCallback = HAL_MMCEx_Read_DMADoubleBuf0CpltCallback; in HAL_MMC_Init()
437 hmmc->Read_DMADblBuf1CpltCallback = HAL_MMCEx_Read_DMADoubleBuf1CpltCallback; in HAL_MMC_Init()
438 hmmc->Write_DMADblBuf0CpltCallback = HAL_MMCEx_Write_DMADoubleBuf0CpltCallback; in HAL_MMC_Init()
439 hmmc->Write_DMADblBuf1CpltCallback = HAL_MMCEx_Write_DMADoubleBuf1CpltCallback; in HAL_MMC_Init()
441 if (hmmc->MspInitCallback == NULL) in HAL_MMC_Init()
443 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_Init()
447 hmmc->MspInitCallback(hmmc); in HAL_MMC_Init()
450 HAL_MMC_MspInit(hmmc); in HAL_MMC_Init()
454 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Init()
457 if (HAL_MMC_InitCard(hmmc) == HAL_ERROR) in HAL_MMC_Init()
463 hmmc->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_MMC_Init()
466 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Init()
469 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Init()
472 if (hmmc->Init.BusWide != SDMMC_BUS_WIDE_1B) in HAL_MMC_Init()
474 if (HAL_MMC_ConfigWideBusOperation(hmmc, hmmc->Init.BusWide) != HAL_OK) in HAL_MMC_Init()
490 HAL_StatusTypeDef HAL_MMC_InitCard(MMC_HandleTypeDef *hmmc) in HAL_MMC_InitCard() argument
506 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
507 hmmc->ErrorCode = SDMMC_ERROR_INVALID_PARAMETER; in HAL_MMC_InitCard()
517 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_InitCard()
520 (void)SDMMC_PowerState_ON(hmmc->Instance); in HAL_MMC_InitCard()
535 errorstate = MMC_PowerON(hmmc); in HAL_MMC_InitCard()
538 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
539 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
544 errorstate = MMC_InitCard(hmmc); in HAL_MMC_InitCard()
547 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
548 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
553 errorstate = SDMMC_CmdBlockLength(hmmc->Instance, MMC_BLOCKSIZE); in HAL_MMC_InitCard()
557 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_InitCard()
558 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
559 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
571 HAL_StatusTypeDef HAL_MMC_DeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_DeInit() argument
574 if (hmmc == NULL) in HAL_MMC_DeInit()
580 assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_DeInit()
582 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_DeInit()
585 MMC_PowerOFF(hmmc); in HAL_MMC_DeInit()
588 if (hmmc->MspDeInitCallback == NULL) in HAL_MMC_DeInit()
590 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_DeInit()
594 hmmc->MspDeInitCallback(hmmc); in HAL_MMC_DeInit()
597 HAL_MMC_MspDeInit(hmmc); in HAL_MMC_DeInit()
600 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_DeInit()
601 hmmc->State = HAL_MMC_STATE_RESET; in HAL_MMC_DeInit()
611 __weak void HAL_MMC_MspInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspInit() argument
614 UNUSED(hmmc); in HAL_MMC_MspInit()
626 __weak void HAL_MMC_MspDeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspDeInit() argument
629 UNUSED(hmmc); in HAL_MMC_MspDeInit()
667 HAL_StatusTypeDef HAL_MMC_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks() argument
682 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks()
686 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks()
688 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks()
690 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks()
692 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks()
697 if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) in HAL_MMC_ReadBlocks()
703 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks()
710 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks()
715 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks()
718 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks()
720 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks()
732 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks()
733 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks()
738 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_ReadBlocks()
741 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
745 hmmc->Context = MMC_CONTEXT_READ_SINGLE_BLOCK; in HAL_MMC_ReadBlocks()
748 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
753 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
754 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
755 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
761 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_ReadBlocks()
764 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_ReadBlocks()
769 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
785 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
786 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
787 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
791 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_ReadBlocks()
794 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_ReadBlocks()
797 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_ReadBlocks()
801 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
802 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
803 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
809 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_ReadBlocks()
812 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
813 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_ReadBlocks()
814 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
817 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_ReadBlocks()
820 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
821 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_ReadBlocks()
822 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
825 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_ReadBlocks()
828 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
829 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_ReadBlocks()
830 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
839 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_ReadBlocks()
841 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
847 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_ReadBlocks()
864 HAL_StatusTypeDef HAL_MMC_WriteBlocks(MMC_HandleTypeDef *hmmc, const uint8_t *pData, uint32_t Block… in HAL_MMC_WriteBlocks() argument
878 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks()
882 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks()
884 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks()
886 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks()
888 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks()
893 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_WriteBlocks()
898 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks()
905 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks()
910 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks()
913 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks()
915 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks()
927 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks()
928 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks()
933 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_WriteBlocks()
936 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
940 hmmc->Context = MMC_CONTEXT_WRITE_SINGLE_BLOCK; in HAL_MMC_WriteBlocks()
943 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
948 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
949 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
950 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
956 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_WriteBlocks()
959 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_WriteBlocks()
972 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_WriteBlocks()
980 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
981 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
982 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
986 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_WriteBlocks()
989 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_WriteBlocks()
992 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_WriteBlocks()
996 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
997 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
998 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1004 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_WriteBlocks()
1007 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1008 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_WriteBlocks()
1009 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1012 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_WriteBlocks()
1015 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1016 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_WriteBlocks()
1017 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1020 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_WriteBlocks()
1023 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1024 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_WriteBlocks()
1025 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1034 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_WriteBlocks()
1036 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1042 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_WriteBlocks()
1060 HAL_StatusTypeDef HAL_MMC_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks_IT() argument
1069 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_IT()
1073 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_IT()
1075 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_IT()
1077 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_IT()
1079 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_IT()
1084 …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()
1089 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks_IT()
1096 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks_IT()
1101 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_IT()
1104 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_IT()
1106 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_IT()
1107 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_IT()
1109 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_IT()
1121 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_IT()
1122 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks_IT()
1127 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1130 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1134 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1137 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1143 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_IT()
1144 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks_IT()
1145 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_IT()
1149 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_IT()
1173 HAL_StatusTypeDef HAL_MMC_WriteBlocks_IT(MMC_HandleTypeDef *hmmc, const uint8_t *pData, in HAL_MMC_WriteBlocks_IT() argument
1182 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_IT()
1186 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_IT()
1188 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_IT()
1190 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_IT()
1192 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_IT()
1197 …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()
1202 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks_IT()
1209 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks_IT()
1214 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_IT()
1217 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_IT()
1219 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_IT()
1220 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_IT()
1222 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_IT()
1234 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_IT()
1236 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks_IT()
1241 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1244 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1248 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1251 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1256 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_IT()
1257 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_IT()
1258 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_IT()
1263 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… in HAL_MMC_WriteBlocks_IT()
1287 HAL_StatusTypeDef HAL_MMC_ReadBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks_DMA() argument
1296 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_DMA()
1300 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_DMA()
1302 hmmc->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_MMC_ReadBlocks_DMA()
1304 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_DMA()
1306 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_DMA()
1311 …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()
1316 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks_DMA()
1323 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks_DMA()
1328 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_DMA()
1331 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_DMA()
1333 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_DMA()
1334 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_DMA()
1336 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_DMA()
1348 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_DMA()
1350 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks_DMA()
1351 hmmc->Instance->IDMABASE0 = (uint32_t) pData ; in HAL_MMC_ReadBlocks_DMA()
1352 hmmc->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_MMC_ReadBlocks_DMA()
1357 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1360 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1364 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1367 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1372 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1373 hmmc->ErrorCode = errorstate; in HAL_MMC_ReadBlocks_DMA()
1374 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1379 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_DMA()
1402 HAL_StatusTypeDef HAL_MMC_WriteBlocks_DMA(MMC_HandleTypeDef *hmmc, const uint8_t *pData, in HAL_MMC_WriteBlocks_DMA() argument
1411 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_DMA()
1415 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_DMA()
1417 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_DMA()
1419 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_DMA()
1421 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_DMA()
1426 …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()
1431 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks_DMA()
1438 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks_DMA()
1443 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_DMA()
1446 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_DMA()
1448 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_DMA()
1449 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_DMA()
1451 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_DMA()
1463 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_DMA()
1465 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks_DMA()
1467 hmmc->Instance->IDMABASE0 = (uint32_t) pData ; in HAL_MMC_WriteBlocks_DMA()
1468 hmmc->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_MMC_WriteBlocks_DMA()
1473 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1476 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1480 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1483 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1488 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1489 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_DMA()
1490 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_DMA()
1495 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… in HAL_MMC_WriteBlocks_DMA()
1514 HAL_StatusTypeDef HAL_MMC_Erase(MMC_HandleTypeDef *hmmc, uint32_t BlockStartAdd, uint32_t BlockEndA… in HAL_MMC_Erase() argument
1520 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Erase()
1522 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_Erase()
1526 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_Erase()
1530 if (end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_Erase()
1532 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_Erase()
1537 if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) in HAL_MMC_Erase()
1543 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_Erase()
1548 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Erase()
1551 if (((hmmc->MmcCard.Class) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_Erase()
1554 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1555 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_Erase()
1556 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1560 if ((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_Erase()
1563 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1564 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_Erase()
1565 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1569 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_Erase()
1576 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_Erase()
1580 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1581 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1582 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1587 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_Erase()
1591 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1592 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1593 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1598 errorstate = SDMMC_CmdErase(hmmc->Instance, 0UL); in HAL_MMC_Erase()
1602 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1603 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1604 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1608 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1623 void HAL_MMC_IRQHandler(MMC_HandleTypeDef *hmmc) in HAL_MMC_IRQHandler() argument
1626 uint32_t context = hmmc->Context; in HAL_MMC_IRQHandler()
1629 …if ((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) != RESET) && ((context & MMC_CONTEXT_IT) != 0U)) in HAL_MMC_IRQHandler()
1631 MMC_Read_IT(hmmc); in HAL_MMC_IRQHandler()
1634 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) != RESET) in HAL_MMC_IRQHandler()
1636 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DATAEND); in HAL_MMC_IRQHandler()
1638 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_IRQHandler()
1642 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1643 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_IRQHandler()
1647 hmmc->Instance->DLEN = 0; in HAL_MMC_IRQHandler()
1648 hmmc->Instance->DCTRL = 0; in HAL_MMC_IRQHandler()
1649 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA ; in HAL_MMC_IRQHandler()
1654 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1657 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1659 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1661 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1667 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1669 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1673 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1675 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1681 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1683 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1692 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1695 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1697 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1699 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1705 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1707 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1711 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1713 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1719 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1721 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1731 …else if ((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) != RESET) && ((context & MMC_CONTEXT_IT) !… in HAL_MMC_IRQHandler()
1733 MMC_Write_IT(hmmc); in HAL_MMC_IRQHandler()
1736 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL | in HAL_MMC_IRQHandler()
1740 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_DCRCFAIL) != RESET) in HAL_MMC_IRQHandler()
1742 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_IRQHandler()
1744 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_DTIMEOUT) != RESET) in HAL_MMC_IRQHandler()
1746 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_IRQHandler()
1748 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_RXOVERR) != RESET) in HAL_MMC_IRQHandler()
1750 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_IRQHandler()
1752 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_TXUNDERR) != RESET) in HAL_MMC_IRQHandler()
1754 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_IRQHandler()
1758 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1761 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_IRQHandler()
1764 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_IRQHandler()
1765 hmmc->Instance->DCTRL |= SDMMC_DCTRL_FIFORST; in HAL_MMC_IRQHandler()
1766 hmmc->Instance->CMD |= SDMMC_CMD_CMDSTOP; in HAL_MMC_IRQHandler()
1767 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1768 hmmc->Instance->CMD &= ~(SDMMC_CMD_CMDSTOP); in HAL_MMC_IRQHandler()
1769 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DABORT); in HAL_MMC_IRQHandler()
1774 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1776 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1778 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1783 if (hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_IRQHandler()
1786 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1787 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_IRQHandler()
1790 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1792 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1794 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1804 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_IDMABTC) != RESET) in HAL_MMC_IRQHandler()
1806 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1807 if (READ_BIT(hmmc->Instance->IDMACTRL, SDMMC_IDMA_IDMABACT) == 0U) in HAL_MMC_IRQHandler()
1813 hmmc->Write_DMADblBuf1CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1815 HAL_MMCEx_Write_DMADoubleBuf1CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1821 hmmc->Read_DMADblBuf1CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1823 HAL_MMCEx_Read_DMADoubleBuf1CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1833 hmmc->Write_DMADblBuf0CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1835 HAL_MMCEx_Write_DMADoubleBuf0CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1841 hmmc->Read_DMADblBuf0CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1843 HAL_MMCEx_Read_DMADoubleBuf0CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1860 HAL_MMC_StateTypeDef HAL_MMC_GetState(const MMC_HandleTypeDef *hmmc) in HAL_MMC_GetState() argument
1862 return hmmc->State; in HAL_MMC_GetState()
1871 uint32_t HAL_MMC_GetError(const MMC_HandleTypeDef *hmmc) in HAL_MMC_GetError() argument
1873 return hmmc->ErrorCode; in HAL_MMC_GetError()
1881 __weak void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_TxCpltCallback() argument
1884 UNUSED(hmmc); in HAL_MMC_TxCpltCallback()
1896 __weak void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_RxCpltCallback() argument
1899 UNUSED(hmmc); in HAL_MMC_RxCpltCallback()
1911 __weak void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_ErrorCallback() argument
1914 UNUSED(hmmc); in HAL_MMC_ErrorCallback()
1926 __weak void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_AbortCallback() argument
1929 UNUSED(hmmc); in HAL_MMC_AbortCallback()
1959 HAL_StatusTypeDef HAL_MMC_RegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Callb… in HAL_MMC_RegisterCallback() argument
1967 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1971 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RegisterCallback()
1976 hmmc->TxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1979 hmmc->RxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1982 hmmc->ErrorCallback = pCallback; in HAL_MMC_RegisterCallback()
1985 hmmc->AbortCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1988 hmmc->Read_DMADblBuf0CpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1991 hmmc->Read_DMADblBuf1CpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1994 hmmc->Write_DMADblBuf0CpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1997 hmmc->Write_DMADblBuf1CpltCallback = pCallback; in HAL_MMC_RegisterCallback()
2000 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2003 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2007 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2013 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_RegisterCallback()
2018 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2021 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2025 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2034 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2063 HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Cal… in HAL_MMC_UnRegisterCallback() argument
2067 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_UnRegisterCallback()
2072 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_UnRegisterCallback()
2075 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_UnRegisterCallback()
2078 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_UnRegisterCallback()
2081 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_UnRegisterCallback()
2084 hmmc->Read_DMADblBuf0CpltCallback = HAL_MMCEx_Read_DMADoubleBuf0CpltCallback; in HAL_MMC_UnRegisterCallback()
2087 hmmc->Read_DMADblBuf1CpltCallback = HAL_MMCEx_Read_DMADoubleBuf1CpltCallback; in HAL_MMC_UnRegisterCallback()
2090 hmmc->Write_DMADblBuf0CpltCallback = HAL_MMCEx_Write_DMADoubleBuf0CpltCallback; in HAL_MMC_UnRegisterCallback()
2093 hmmc->Write_DMADblBuf1CpltCallback = HAL_MMCEx_Write_DMADoubleBuf1CpltCallback; in HAL_MMC_UnRegisterCallback()
2096 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
2099 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
2103 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2109 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_UnRegisterCallback()
2114 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
2117 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
2121 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2130 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2166 HAL_StatusTypeDef HAL_MMC_GetCardCID(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID) in HAL_MMC_GetCardCID() argument
2168 pCID->ManufacturerID = (uint8_t)((hmmc->CID[0] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2170 pCID->OEM_AppliID = (uint16_t)((hmmc->CID[0] & 0x00FFFF00U) >> 8U); in HAL_MMC_GetCardCID()
2172 pCID->ProdName1 = (((hmmc->CID[0] & 0x000000FFU) << 24U) | ((hmmc->CID[1] & 0xFFFFFF00U) >> 8U)); in HAL_MMC_GetCardCID()
2174 pCID->ProdName2 = (uint8_t)(hmmc->CID[1] & 0x000000FFU); in HAL_MMC_GetCardCID()
2176 pCID->ProdRev = (uint8_t)((hmmc->CID[2] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2178 pCID->ProdSN = (((hmmc->CID[2] & 0x00FFFFFFU) << 8U) | ((hmmc->CID[3] & 0xFF000000U) >> 24U)); in HAL_MMC_GetCardCID()
2180 pCID->Reserved1 = (uint8_t)((hmmc->CID[3] & 0x00F00000U) >> 20U); in HAL_MMC_GetCardCID()
2182 pCID->ManufactDate = (uint16_t)((hmmc->CID[3] & 0x000FFF00U) >> 8U); in HAL_MMC_GetCardCID()
2184 pCID->CID_CRC = (uint8_t)((hmmc->CID[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCID()
2199 HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD) in HAL_MMC_GetCardCSD() argument
2203 pCSD->CSDStruct = (uint8_t)((hmmc->CSD[0] & 0xC0000000U) >> 30U); in HAL_MMC_GetCardCSD()
2205 pCSD->SysSpecVersion = (uint8_t)((hmmc->CSD[0] & 0x3C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2207 pCSD->Reserved1 = (uint8_t)((hmmc->CSD[0] & 0x03000000U) >> 24U); in HAL_MMC_GetCardCSD()
2209 pCSD->TAAC = (uint8_t)((hmmc->CSD[0] & 0x00FF0000U) >> 16U); in HAL_MMC_GetCardCSD()
2211 pCSD->NSAC = (uint8_t)((hmmc->CSD[0] & 0x0000FF00U) >> 8U); in HAL_MMC_GetCardCSD()
2213 pCSD->MaxBusClkFrec = (uint8_t)(hmmc->CSD[0] & 0x000000FFU); in HAL_MMC_GetCardCSD()
2215 pCSD->CardComdClasses = (uint16_t)((hmmc->CSD[1] & 0xFFF00000U) >> 20U); in HAL_MMC_GetCardCSD()
2217 pCSD->RdBlockLen = (uint8_t)((hmmc->CSD[1] & 0x000F0000U) >> 16U); in HAL_MMC_GetCardCSD()
2219 pCSD->PartBlockRead = (uint8_t)((hmmc->CSD[1] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2221 pCSD->WrBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2223 pCSD->RdBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2225 pCSD->DSRImpl = (uint8_t)((hmmc->CSD[1] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2229 if (MMC_ReadExtCSD(hmmc, &block_nbr, 212, 0x0FFFFFFFU) != HAL_OK) /* Field SEC_COUNT [215:212] */ in HAL_MMC_GetCardCSD()
2234 if (hmmc->MmcCard.CardType == MMC_LOW_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2236 … pCSD->DeviceSize = (((hmmc->CSD[1] & 0x000003FFU) << 2U) | ((hmmc->CSD[2] & 0xC0000000U) >> 30U)); in HAL_MMC_GetCardCSD()
2238 pCSD->MaxRdCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x38000000U) >> 27U); in HAL_MMC_GetCardCSD()
2240 pCSD->MaxRdCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x07000000U) >> 24U); in HAL_MMC_GetCardCSD()
2242 pCSD->MaxWrCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x00E00000U) >> 21U); in HAL_MMC_GetCardCSD()
2244 pCSD->MaxWrCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x001C0000U) >> 18U); in HAL_MMC_GetCardCSD()
2246 pCSD->DeviceSizeMul = (uint8_t)((hmmc->CSD[2] & 0x00038000U) >> 15U); in HAL_MMC_GetCardCSD()
2248 hmmc->MmcCard.BlockNbr = (pCSD->DeviceSize + 1U) ; in HAL_MMC_GetCardCSD()
2249 hmmc->MmcCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); in HAL_MMC_GetCardCSD()
2250 hmmc->MmcCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); in HAL_MMC_GetCardCSD()
2252hmmc->MmcCard.LogBlockNbr = (hmmc->MmcCard.BlockNbr) * ((hmmc->MmcCard.BlockSize) / MMC_BLOCKSIZE); in HAL_MMC_GetCardCSD()
2253 hmmc->MmcCard.LogBlockSize = MMC_BLOCKSIZE; in HAL_MMC_GetCardCSD()
2255 else if (hmmc->MmcCard.CardType == MMC_HIGH_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2257 hmmc->MmcCard.BlockNbr = block_nbr; in HAL_MMC_GetCardCSD()
2258 hmmc->MmcCard.LogBlockNbr = hmmc->MmcCard.BlockNbr; in HAL_MMC_GetCardCSD()
2259 hmmc->MmcCard.BlockSize = MMC_BLOCKSIZE; in HAL_MMC_GetCardCSD()
2260 hmmc->MmcCard.LogBlockSize = hmmc->MmcCard.BlockSize; in HAL_MMC_GetCardCSD()
2265 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardCSD()
2266 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_GetCardCSD()
2267 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardCSD()
2271 pCSD->EraseGrSize = (uint8_t)((hmmc->CSD[2] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2273 pCSD->EraseGrMul = (uint8_t)((hmmc->CSD[2] & 0x00003F80U) >> 7U); in HAL_MMC_GetCardCSD()
2275 pCSD->WrProtectGrSize = (uint8_t)(hmmc->CSD[2] & 0x0000007FU); in HAL_MMC_GetCardCSD()
2277 pCSD->WrProtectGrEnable = (uint8_t)((hmmc->CSD[3] & 0x80000000U) >> 31U); in HAL_MMC_GetCardCSD()
2279 pCSD->ManDeflECC = (uint8_t)((hmmc->CSD[3] & 0x60000000U) >> 29U); in HAL_MMC_GetCardCSD()
2281 pCSD->WrSpeedFact = (uint8_t)((hmmc->CSD[3] & 0x1C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2283 pCSD->MaxWrBlockLen = (uint8_t)((hmmc->CSD[3] & 0x03C00000U) >> 22U); in HAL_MMC_GetCardCSD()
2285 pCSD->WriteBlockPaPartial = (uint8_t)((hmmc->CSD[3] & 0x00200000U) >> 21U); in HAL_MMC_GetCardCSD()
2289 pCSD->ContentProtectAppli = (uint8_t)((hmmc->CSD[3] & 0x00010000U) >> 16U); in HAL_MMC_GetCardCSD()
2291 pCSD->FileFormatGroup = (uint8_t)((hmmc->CSD[3] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2293 pCSD->CopyFlag = (uint8_t)((hmmc->CSD[3] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2295 pCSD->PermWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2297 pCSD->TempWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2299 pCSD->FileFormat = (uint8_t)((hmmc->CSD[3] & 0x00000C00U) >> 10U); in HAL_MMC_GetCardCSD()
2301 pCSD->ECC = (uint8_t)((hmmc->CSD[3] & 0x00000300U) >> 8U); in HAL_MMC_GetCardCSD()
2303 pCSD->CSD_CRC = (uint8_t)((hmmc->CSD[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCSD()
2317 HAL_StatusTypeDef HAL_MMC_GetCardInfo(MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo) in HAL_MMC_GetCardInfo() argument
2319 pCardInfo->CardType = (uint32_t)(hmmc->MmcCard.CardType); in HAL_MMC_GetCardInfo()
2320 pCardInfo->Class = (uint32_t)(hmmc->MmcCard.Class); in HAL_MMC_GetCardInfo()
2321 pCardInfo->RelCardAdd = (uint32_t)(hmmc->MmcCard.RelCardAdd); in HAL_MMC_GetCardInfo()
2322 pCardInfo->BlockNbr = (uint32_t)(hmmc->MmcCard.BlockNbr); in HAL_MMC_GetCardInfo()
2323 pCardInfo->BlockSize = (uint32_t)(hmmc->MmcCard.BlockSize); in HAL_MMC_GetCardInfo()
2324 pCardInfo->LogBlockNbr = (uint32_t)(hmmc->MmcCard.LogBlockNbr); in HAL_MMC_GetCardInfo()
2325 pCardInfo->LogBlockSize = (uint32_t)(hmmc->MmcCard.LogBlockSize); in HAL_MMC_GetCardInfo()
2339 HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeou… in HAL_MMC_GetCardExtCSD() argument
2349 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_GetCardExtCSD()
2353 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetCardExtCSD()
2355 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_GetCardExtCSD()
2357 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetCardExtCSD()
2360 hmmc->Instance->DCTRL = 0; in HAL_MMC_GetCardExtCSD()
2372 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_GetCardExtCSD()
2373 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2376 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in HAL_MMC_GetCardExtCSD()
2380 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2381 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardExtCSD()
2382 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2387 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | in HAL_MMC_GetCardExtCSD()
2390 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF)) in HAL_MMC_GetCardExtCSD()
2395 *tmp_buf = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2403 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2404 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2405 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2410 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2413 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_GetCardExtCSD()
2416 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2417 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2418 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2421 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_GetCardExtCSD()
2424 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2425 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_GetCardExtCSD()
2426 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2429 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_GetCardExtCSD()
2432 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2433 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_GetCardExtCSD()
2434 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2443 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_GetCardExtCSD()
2444 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2461 HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode) in HAL_MMC_ConfigWideBusOperation() argument
2472 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigWideBusOperation()
2475 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) in HAL_MMC_ConfigWideBusOperation()
2477 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) in HAL_MMC_ConfigWideBusOperation()
2479 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_DDR); in HAL_MMC_ConfigWideBusOperation()
2483 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_HIGH); in HAL_MMC_ConfigWideBusOperation()
2488 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_DEFAULT); in HAL_MMC_ConfigWideBusOperation()
2495 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in HAL_MMC_ConfigWideBusOperation()
2499 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in HAL_MMC_ConfigWideBusOperation()
2503 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U); in HAL_MMC_ConfigWideBusOperation()
2518 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigWideBusOperation()
2525 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigWideBusOperation()
2540 Init = hmmc->Init; in HAL_MMC_ConfigWideBusOperation()
2542 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_ConfigWideBusOperation()
2557 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigWideBusOperation()
2562 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigWideBusOperation()
2563 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigWideBusOperation()
2582 HAL_StatusTypeDef HAL_MMC_ConfigSpeedBusOperation(MMC_HandleTypeDef *hmmc, uint32_t SpeedMode) in HAL_MMC_ConfigSpeedBusOperation() argument
2593 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigSpeedBusOperation()
2596 device_type = (hmmc->Ext_CSD[49] & 0x000000FFU); in HAL_MMC_ConfigSpeedBusOperation()
2602 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS) != 0U) && ((device_type & 0x04U) != 0U)) in HAL_MMC_ConfigSpeedBusOperation()
2605 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2608 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2612 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_CLKDIV) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2615 errorstate = MMC_DDR_Mode(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2618 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2626 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2629 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2640 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS) != 0U) && ((device_type & 0x04U) != 0U)) in HAL_MMC_ConfigSpeedBusOperation()
2643 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2646 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2650 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_CLKDIV) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2653 errorstate = MMC_DDR_Mode(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2656 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2664 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_ConfigSpeedBusOperation()
2674 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2677 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2683 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_ConfigSpeedBusOperation()
2690 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2693 errorstate = MMC_DDR_Mode(hmmc, DISABLE); in HAL_MMC_ConfigSpeedBusOperation()
2696 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2699 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2702 errorstate = MMC_HighSpeed(hmmc, DISABLE); in HAL_MMC_ConfigSpeedBusOperation()
2705 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2711 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ConfigSpeedBusOperation()
2718 while ((HAL_MMC_GetCardState(hmmc) != HAL_MMC_CARD_TRANSFER)) in HAL_MMC_ConfigSpeedBusOperation()
2722 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ConfigSpeedBusOperation()
2723 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSpeedBusOperation()
2729 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSpeedBusOperation()
2738 HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetCardState() argument
2744 errorstate = MMC_SendStatus(hmmc, &resp1); in HAL_MMC_GetCardState()
2747 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardState()
2761 HAL_StatusTypeDef HAL_MMC_Abort(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort() argument
2766 if (hmmc->State == HAL_MMC_STATE_BUSY) in HAL_MMC_Abort()
2769 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_Abort()
2771 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_Abort()
2779 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort()
2780 error_code = hmmc->ErrorCode; in HAL_MMC_Abort()
2787 if ((hmmc->Instance->DCTRL & SDMMC_DCTRL_DTDIR) == SDMMC_TRANSFER_DIR_TO_CARD) in HAL_MMC_Abort()
2789 if (hmmc->ErrorCode == HAL_MMC_ERROR_NONE) in HAL_MMC_Abort()
2791 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DABORT | SDMMC_FLAG_BUSYD0END)) in HAL_MMC_Abort()
2795 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2796 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2802 if (hmmc->ErrorCode == HAL_MMC_ERROR_CMD_RSP_TIMEOUT) in HAL_MMC_Abort()
2804 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND)) in HAL_MMC_Abort()
2808 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2809 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2815 else if ((hmmc->Instance->DCTRL & SDMMC_DCTRL_DTDIR) == SDMMC_TRANSFER_DIR_TO_SDMMC) in HAL_MMC_Abort()
2817 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DABORT | SDMMC_FLAG_DATAEND)) in HAL_MMC_Abort()
2821 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2822 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2838 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_Abort()
2839 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort()
2841 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_Abort()
2843 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2846 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Abort()
2856 HAL_StatusTypeDef HAL_MMC_Abort_IT(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort_IT() argument
2861 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_Abort_IT()
2865 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_Abort_IT()
2868 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort_IT()
2870 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort_IT()
2871 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort_IT()
2875 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort_IT()
2877 if (hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort_IT()
2884 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_Abort_IT()
2886 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_Abort_IT()
2912 HAL_StatusTypeDef HAL_MMC_EraseSequence(MMC_HandleTypeDef *hmmc, uint32_t EraseType, in HAL_MMC_EraseSequence() argument
2926 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_EraseSequence()
2931 if (end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_EraseSequence()
2933 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_EraseSequence()
2938 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_EraseSequence()
2943 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_EraseSequence()
2949 if (((hmmc->MmcCard.Class) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_EraseSequence()
2951 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_EraseSequence()
2956 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_EraseSequence()
2959 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_EraseSequence()
2962 if ((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_EraseSequence()
2964 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_EraseSequence()
2965 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_EraseSequence()
2970 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_EraseSequence()
2977 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_EraseSequence()
2981 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_EraseSequence()
2985 errorstate = SDMMC_CmdErase(hmmc->Instance, EraseType); in HAL_MMC_EraseSequence()
2991 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_EraseSequence()
3000 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_EraseSequence()
3007 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_EraseSequence()
3013 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_EraseSequence()
3014 hmmc->ErrorCode |= errorstate; in HAL_MMC_EraseSequence()
3043 HAL_StatusTypeDef HAL_MMC_Sanitize(MMC_HandleTypeDef *hmmc) in HAL_MMC_Sanitize() argument
3051 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Sanitize()
3054 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Sanitize()
3057 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03A50100U); in HAL_MMC_Sanitize()
3061 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_Sanitize()
3070 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_Sanitize()
3078 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_Sanitize()
3085 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_Sanitize()
3110 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Sanitize()
3116 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Sanitize()
3117 hmmc->ErrorCode |= errorstate; in HAL_MMC_Sanitize()
3154 HAL_StatusTypeDef HAL_MMC_ConfigSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t SRTMode) in HAL_MMC_ConfigSecRemovalType() argument
3165 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ConfigSecRemovalType()
3168 if (HAL_MMC_GetSupportedSecRemovalType(hmmc, &srt) == HAL_OK) in HAL_MMC_ConfigSecRemovalType()
3171 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigSecRemovalType()
3178 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03100000U | (srt << 8U))); in HAL_MMC_ConfigSecRemovalType()
3185 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigSecRemovalType()
3192 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigSecRemovalType()
3221 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSecRemovalType()
3232 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigSecRemovalType()
3233 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSecRemovalType()
3260 HAL_StatusTypeDef HAL_MMC_GetSupportedSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t *SupportedSR… in HAL_MMC_GetSupportedSecRemovalType() argument
3263 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetSupportedSecRemovalType()
3266 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetSupportedSecRemovalType()
3269 *SupportedSRT = (hmmc->Ext_CSD[4] & 0x0000000FU); /* Bits [3:0] of field 16 */ in HAL_MMC_GetSupportedSecRemovalType()
3272 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetSupportedSecRemovalType()
3287 HAL_StatusTypeDef HAL_MMC_SleepDevice(MMC_HandleTypeDef *hmmc) in HAL_MMC_SleepDevice() argument
3297 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_SleepDevice()
3300 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_SleepDevice()
3303 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220100U)); in HAL_MMC_SleepDevice()
3310 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_SleepDevice()
3317 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SleepDevice()
3336 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220400U)); in HAL_MMC_SleepDevice()
3340 sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_SLEEP_NOTIFICATION_TIME_INDEX / 4)] >> in HAL_MMC_SleepDevice()
3352 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SleepDevice()
3361 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SleepDevice()
3369 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, in HAL_MMC_SleepDevice()
3370 … (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U)); in HAL_MMC_SleepDevice()
3377 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SleepDevice()
3396 (void)SDMMC_CmdSelDesel(hmmc->Instance, 0U); in HAL_MMC_SleepDevice()
3399 sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_S_A_TIMEOUT_INDEX / 4)] >> in HAL_MMC_SleepDevice()
3410 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_STANDBY) in HAL_MMC_SleepDevice()
3413 errorstate = SDMMC_CmdSleepMmc(hmmc->Instance, in HAL_MMC_SleepDevice()
3414 … ((hmmc->MmcCard.RelCardAdd << 16U) | (0x1U << 15U))); in HAL_MMC_SleepDevice()
3418 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SleepDevice()
3427 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SleepDevice()
3451 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_SleepDevice()
3457 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_SleepDevice()
3458 hmmc->ErrorCode |= errorstate; in HAL_MMC_SleepDevice()
3485 HAL_StatusTypeDef HAL_MMC_AwakeDevice(MMC_HandleTypeDef *hmmc) in HAL_MMC_AwakeDevice() argument
3495 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_AwakeDevice()
3498 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_AwakeDevice()
3501 …sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_S_A_TIMEOUT_INDEX / 4)] >> MMC_EXT_CSD_S_A_TIMEOUT_PO… in HAL_MMC_AwakeDevice()
3513 errorstate = SDMMC_CmdSleepMmc(hmmc->Instance, (hmmc->MmcCard.RelCardAdd << 16U)); in HAL_MMC_AwakeDevice()
3517 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_AwakeDevice()
3526 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_AwakeDevice()
3530 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_STANDBY) in HAL_MMC_AwakeDevice()
3533 errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (hmmc->MmcCard.RelCardAdd << 16U)); in HAL_MMC_AwakeDevice()
3536 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_TRANSFER) in HAL_MMC_AwakeDevice()
3539 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220100U)); in HAL_MMC_AwakeDevice()
3546 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, in HAL_MMC_AwakeDevice()
3547 … (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U)); in HAL_MMC_AwakeDevice()
3554 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_AwakeDevice()
3591 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_AwakeDevice()
3597 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_AwakeDevice()
3598 hmmc->ErrorCode |= errorstate; in HAL_MMC_AwakeDevice()
3637 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc) in MMC_InitCard() argument
3645 if (SDMMC_GetPowerState(hmmc->Instance) == 0U) in MMC_InitCard()
3652 errorstate = SDMMC_CmdSendCID(hmmc->Instance); in MMC_InitCard()
3660 hmmc->CID[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
3661 hmmc->CID[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
3662 hmmc->CID[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
3663 hmmc->CID[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
3668 errorstate = SDMMC_CmdSetRelAddMmc(hmmc->Instance, mmc_rca); in MMC_InitCard()
3675 hmmc->MmcCard.RelCardAdd = mmc_rca; in MMC_InitCard()
3678 errorstate = SDMMC_CmdSendCSD(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_InitCard()
3686 hmmc->CSD[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
3687 hmmc->CSD[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
3688 hmmc->CSD[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
3689 hmmc->CSD[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
3693 hmmc->MmcCard.Class = (SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2) >> 20U); in MMC_InitCard()
3696 …errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << … in MMC_InitCard()
3703 if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK) in MMC_InitCard()
3705 return hmmc->ErrorCode; in MMC_InitCard()
3709 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
3712 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
3716 if (HAL_MMC_GetCardExtCSD(hmmc, hmmc->Ext_CSD, SDMMC_DATATIMEOUT) != HAL_OK) in MMC_InitCard()
3718 return hmmc->ErrorCode; in MMC_InitCard()
3722 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
3725 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
3729 Init = hmmc->Init; in MMC_InitCard()
3731 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_InitCard()
3744 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc) in MMC_PowerON() argument
3752 errorstate = SDMMC_CmdGoIdleState(hmmc->Instance); in MMC_PowerON()
3766 errorstate = SDMMC_CmdOpCondition(hmmc->Instance, MMC_VOLTAGE_RANGE); in MMC_PowerON()
3773 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PowerON()
3782 hmmc->MmcCard.CardType = MMC_HIGH_CAPACITY_CARD; in MMC_PowerON()
3786 hmmc->MmcCard.CardType = MMC_LOW_CAPACITY_CARD; in MMC_PowerON()
3797 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc) in MMC_PowerOFF() argument
3800 (void)SDMMC_PowerState_OFF(hmmc->Instance); in MMC_PowerOFF()
3810 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus) in MMC_SendStatus() argument
3820 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_SendStatus()
3827 *pCardStatus = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_SendStatus()
3840 static HAL_StatusTypeDef MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, in MMC_ReadExtCSD() argument
3850 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_ReadExtCSD()
3853 hmmc->Instance->DCTRL = 0; in MMC_ReadExtCSD()
3862 (void)SDMMC_ConfigData(hmmc->Instance, &config); in MMC_ReadExtCSD()
3865 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in MMC_ReadExtCSD()
3869 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3870 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
3871 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3876 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | in MMC_ReadExtCSD()
3879 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF)) in MMC_ReadExtCSD()
3884 tmp_data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_ReadExtCSD()
3898 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3899 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in MMC_ReadExtCSD()
3900 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3906 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in MMC_ReadExtCSD()
3909 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3910 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in MMC_ReadExtCSD()
3911 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3914 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in MMC_ReadExtCSD()
3917 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3918 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in MMC_ReadExtCSD()
3919 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3922 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in MMC_ReadExtCSD()
3925 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3926 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in MMC_ReadExtCSD()
3927 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3936 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_ReadExtCSD()
3939 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
3943 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in MMC_ReadExtCSD()
3945 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3956 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc) in MMC_Read_IT() argument
3962 tmp = hmmc->pRxBuffPtr; in MMC_Read_IT()
3964 if (hmmc->RxXferSize >= SDMMC_FIFO_SIZE) in MMC_Read_IT()
3969 data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_Read_IT()
3980 hmmc->pRxBuffPtr = tmp; in MMC_Read_IT()
3981 hmmc->RxXferSize -= SDMMC_FIFO_SIZE; in MMC_Read_IT()
3991 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc) in MMC_Write_IT() argument
3997 tmp = hmmc->pTxBuffPtr; in MMC_Write_IT()
3999 if (hmmc->TxXferSize >= SDMMC_FIFO_SIZE) in MMC_Write_IT()
4012 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in MMC_Write_IT()
4015 hmmc->pTxBuffPtr = tmp; in MMC_Write_IT()
4016 hmmc->TxXferSize -= SDMMC_FIFO_SIZE; in MMC_Write_IT()
4026 static uint32_t MMC_HighSpeed(MMC_HandleTypeDef *hmmc, FunctionalState state) in MMC_HighSpeed() argument
4034 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) && (state == DISABLE)) in MMC_HighSpeed()
4036 …errorstate = MMC_PwrClassUpdate(hmmc, (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS), SDMMC_SPEED_MO… in MMC_HighSpeed()
4040 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B90000U); in MMC_HighSpeed()
4044 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) == 0U) && (state != DISABLE)) in MMC_HighSpeed()
4046 …errorstate = MMC_PwrClassUpdate(hmmc, (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS), SDMMC_SPEED_MO… in MMC_HighSpeed()
4050 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B90100U); in MMC_HighSpeed()
4060 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_HighSpeed()
4067 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_HighSpeed()
4082 Init.ClockEdge = hmmc->Init.ClockEdge; in MMC_HighSpeed()
4083 Init.ClockPowerSave = hmmc->Init.ClockPowerSave; in MMC_HighSpeed()
4084 Init.BusWide = (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS); in MMC_HighSpeed()
4085 Init.HardwareFlowControl = hmmc->Init.HardwareFlowControl; in MMC_HighSpeed()
4089 Init.ClockDiv = hmmc->Init.ClockDiv; in MMC_HighSpeed()
4090 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_HighSpeed()
4092 CLEAR_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED); in MMC_HighSpeed()
4113 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_HighSpeed()
4115 SET_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED); in MMC_HighSpeed()
4139 static uint32_t MMC_DDR_Mode(MMC_HandleTypeDef *hmmc, FunctionalState state) in MMC_DDR_Mode() argument
4145 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) && (state == DISABLE)) in MMC_DDR_Mode()
4147 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS_0) != 0U) in MMC_DDR_Mode()
4149 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_4B, SDMMC_SPEED_MODE_HIGH); in MMC_DDR_Mode()
4153 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in MMC_DDR_Mode()
4158 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_8B, SDMMC_SPEED_MODE_HIGH); in MMC_DDR_Mode()
4162 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in MMC_DDR_Mode()
4167 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) == 0U) && (state != DISABLE)) in MMC_DDR_Mode()
4169 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS_0) != 0U) in MMC_DDR_Mode()
4171 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_4B, SDMMC_SPEED_MODE_DDR); in MMC_DDR_Mode()
4175 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70500U); in MMC_DDR_Mode()
4180 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_8B, SDMMC_SPEED_MODE_DDR); in MMC_DDR_Mode()
4184 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70600U); in MMC_DDR_Mode()
4195 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_DDR_Mode()
4202 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_DDR_Mode()
4219 CLEAR_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_DDR); in MMC_DDR_Mode()
4223 SET_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_DDR); in MMC_DDR_Mode()
4247 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide, uint32_t Speed) in MMC_PwrClassUpdate() argument
4260 …if (MMC_ReadExtCSD(hmmc, &power_class, 187, SDMMC_DATATIMEOUT) != HAL_OK) /* Field POWER_CLASS [18… in MMC_PwrClassUpdate()
4273 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_DDR_52_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL… in MMC_PwrClassUpdate()
4279 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_52_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL_52_… in MMC_PwrClassUpdate()
4285 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_26_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL_26_… in MMC_PwrClassUpdate()
4300 …errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03BB0000U | ((supported_pwr_class & 0x0FU) << 8U))… in MMC_PwrClassUpdate()
4308 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_PwrClassUpdate()
4315 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PwrClassUpdate()
4351 HAL_StatusTypeDef HAL_MMC_SwitchPartition(MMC_HandleTypeDef *hmmc, HAL_MMC_PartitionTypeDef Partiti… in HAL_MMC_SwitchPartition() argument
4360 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_SwitchPartition()
4363 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_SwitchPartition()
4366 errorstate = SDMMC_CmdSwitch(hmmc->Instance, arg); in HAL_MMC_SwitchPartition()
4370 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SwitchPartition()
4379 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SwitchPartition()
4387 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_SwitchPartition()
4394 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SwitchPartition()
4419 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_SwitchPartition()
4425 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_SwitchPartition()
4426 hmmc->ErrorCode |= errorstate; in HAL_MMC_SwitchPartition()
4455 HAL_StatusTypeDef HAL_MMC_RPMB_ProgramAuthenticationKey(MMC_HandleTypeDef *hmmc, const uint8_t *pKe… in HAL_MMC_RPMB_ProgramAuthenticationKey() argument
4473 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4477 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4479 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4481 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4484 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4486 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x80000001U); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4490 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4491 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4492 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4503 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4504 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4508 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4511 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4517 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4518 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4519 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4526 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ProgramAuthenticationKey()
4529 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4546 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4576 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4577 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4578 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4582 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4585 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4589 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4590 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4591 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4602 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4603 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4606 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4609 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4614 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4615 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4616 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4621 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4627 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ProgramAuthenticationKey()
4630 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4635 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4667 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4668 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4669 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4673 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4676 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) 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_DATA_TIMEOUT; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4681 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4684 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4687 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4688 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4689 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4692 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4695 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4696 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4697 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4706 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4708 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4713 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4721 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4733 uint32_t HAL_MMC_RPMB_GetWriteCounter(MMC_HandleTypeDef *hmmc, uint8_t *pNonce, uint32_t Timeout) in HAL_MMC_RPMB_GetWriteCounter() argument
4751 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_GetWriteCounter()
4752 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4756 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_GetWriteCounter()
4758 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_GetWriteCounter()
4759 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_GetWriteCounter()
4762 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_GetWriteCounter()
4764 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_GetWriteCounter()
4768 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4769 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4770 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4771 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4784 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_GetWriteCounter()
4785 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4788 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_GetWriteCounter()
4791 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_GetWriteCounter()
4796 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4797 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4798 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4799 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4805 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_GetWriteCounter()
4808 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_GetWriteCounter()
4826 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_GetWriteCounter()
4851 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4852 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4853 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4854 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4858 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4861 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_GetWriteCounter()
4865 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4866 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4867 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4868 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4879 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_GetWriteCounter()
4880 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4883 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_GetWriteCounter()
4886 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_GetWriteCounter()
4891 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4892 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4893 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4894 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4899 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4905 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_GetWriteCounter()
4908 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_GetWriteCounter()
4913 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4949 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4950 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_GetWriteCounter()
4951 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4952 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4956 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4959 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_GetWriteCounter()
4962 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4963 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_GetWriteCounter()
4964 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4965 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4968 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_GetWriteCounter()
4971 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4972 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_GetWriteCounter()
4973 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4974 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4977 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_GetWriteCounter()
4980 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4981 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_GetWriteCounter()
4982 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4983 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4992 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4994 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
5000 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
5010 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_GetWriteCounter()
5011 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
5027 HAL_StatusTypeDef HAL_MMC_RPMB_WriteBlocks(MMC_HandleTypeDef *hmmc, const uint8_t *pData, uint16_t … in HAL_MMC_RPMB_WriteBlocks() argument
5051 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_WriteBlocks()
5057 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_WriteBlocks()
5063 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_WriteBlocks()
5065 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_WriteBlocks()
5066 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5069 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_WriteBlocks()
5071 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_WriteBlocks()
5075 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5076 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5077 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5090 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5091 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5094 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5097 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5102 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5103 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5104 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5111 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5114 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5132 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_WriteBlocks()
5156 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5157 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5158 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5162 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5165 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001); in HAL_MMC_RPMB_WriteBlocks()
5169 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5170 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5171 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5182 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5183 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5186 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5189 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5194 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5195 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5196 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5201 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5207 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5210 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5215 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5251 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5252 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5253 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5257 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5260 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) 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_DATA_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5265 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5268 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_WriteBlocks()
5271 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5272 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_WriteBlocks()
5273 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5276 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_WriteBlocks()
5279 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5280 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_WriteBlocks()
5281 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5290 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5292 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5304 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5318 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_WriteBlocks()
5320 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_WriteBlocks()
5323 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5326 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_WriteBlocks()
5328 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_WriteBlocks()
5332 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5333 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5334 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5346 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5347 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5352 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5355 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5361 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5362 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5363 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5370 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5373 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5391 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_WriteBlocks()
5425 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5426 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5427 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5431 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5435 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_WriteBlocks()
5439 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5440 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5441 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5452 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5453 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5458 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5461 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5467 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5468 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5469 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5475 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5480 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5483 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5488 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5520 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5521 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5522 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5526 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5529 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) 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_DATA_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5534 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5537 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_WriteBlocks()
5540 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5541 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_WriteBlocks()
5542 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5545 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_WriteBlocks()
5548 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5549 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_WriteBlocks()
5550 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5559 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5561 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5566 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_WriteBlocks()
5574 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5591 HAL_StatusTypeDef HAL_MMC_RPMB_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint16_t BlockAd… in HAL_MMC_RPMB_ReadBlocks() argument
5623 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_ReadBlocks()
5625 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_ReadBlocks()
5626 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_ReadBlocks()
5629 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_ReadBlocks()
5631 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 1); in HAL_MMC_RPMB_ReadBlocks()
5635 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5636 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5637 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5650 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ReadBlocks()
5651 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5654 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ReadBlocks()
5657 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ReadBlocks()
5662 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5663 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5664 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5671 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ReadBlocks()
5674 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ReadBlocks()
5692 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_ReadBlocks()
5716 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5717 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5718 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5722 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5725 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_ReadBlocks()
5729 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5730 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5731 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5742 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ReadBlocks()
5743 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5746 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ReadBlocks()
5749 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ReadBlocks()
5754 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5755 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5756 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5761 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5767 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ReadBlocks()
5770 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ReadBlocks()
5775 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5824 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5825 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_ReadBlocks()
5826 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5830 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5833 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) 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_DATA_TIMEOUT; in HAL_MMC_RPMB_ReadBlocks()
5838 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5841 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_ReadBlocks()
5844 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5845 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_ReadBlocks()
5846 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5849 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_ReadBlocks()
5852 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5853 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_ReadBlocks()
5854 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5863 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5865 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5878 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_ReadBlocks()
5886 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_ReadBlocks()
5897 __weak void HAL_MMCEx_Read_DMADoubleBuf0CpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMCEx_Read_DMADoubleBuf0CpltCallback() argument
5900 UNUSED(hmmc); in HAL_MMCEx_Read_DMADoubleBuf0CpltCallback()
5912 __weak void HAL_MMCEx_Read_DMADoubleBuf1CpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMCEx_Read_DMADoubleBuf1CpltCallback() argument
5915 UNUSED(hmmc); in HAL_MMCEx_Read_DMADoubleBuf1CpltCallback()
5927 __weak void HAL_MMCEx_Write_DMADoubleBuf0CpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMCEx_Write_DMADoubleBuf0CpltCallback() argument
5930 UNUSED(hmmc); in HAL_MMCEx_Write_DMADoubleBuf0CpltCallback()
5942 __weak void HAL_MMCEx_Write_DMADoubleBuf1CpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMCEx_Write_DMADoubleBuf1CpltCallback() argument
5945 UNUSED(hmmc); in HAL_MMCEx_Write_DMADoubleBuf1CpltCallback()