Lines Matching refs:hmmc

367 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc);
368 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc);
369 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus);
370 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc);
371 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc);
372 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc);
373 static uint32_t MMC_HighSpeed(MMC_HandleTypeDef *hmmc, FunctionalState state);
374 static uint32_t MMC_DDR_Mode(MMC_HandleTypeDef *hmmc, FunctionalState state);
375 static HAL_StatusTypeDef MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t Fie…
377 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide, uint32_t Speed);
408 HAL_StatusTypeDef HAL_MMC_Init(MMC_HandleTypeDef *hmmc) in HAL_MMC_Init() argument
411 if (hmmc == NULL) in HAL_MMC_Init()
417 assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_Init()
418 assert_param(IS_SDMMC_CLOCK_EDGE(hmmc->Init.ClockEdge)); in HAL_MMC_Init()
419 assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hmmc->Init.ClockPowerSave)); in HAL_MMC_Init()
420 assert_param(IS_SDMMC_BUS_WIDE(hmmc->Init.BusWide)); in HAL_MMC_Init()
421 assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hmmc->Init.HardwareFlowControl)); in HAL_MMC_Init()
422 assert_param(IS_SDMMC_CLKDIV(hmmc->Init.ClockDiv)); in HAL_MMC_Init()
424 if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_Init()
427 hmmc->Lock = HAL_UNLOCKED; in HAL_MMC_Init()
430 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_Init()
431 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_Init()
432 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_Init()
433 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_Init()
434 hmmc->Read_DMALnkLstBufCpltCallback = HAL_MMCEx_Read_DMALnkLstBufCpltCallback; in HAL_MMC_Init()
435 hmmc->Write_DMALnkLstBufCpltCallback = HAL_MMCEx_Write_DMALnkLstBufCpltCallback; in HAL_MMC_Init()
437 if (hmmc->MspInitCallback == NULL) in HAL_MMC_Init()
439 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_Init()
443 hmmc->MspInitCallback(hmmc); in HAL_MMC_Init()
446 HAL_MMC_MspInit(hmmc); in HAL_MMC_Init()
450 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Init()
453 if (HAL_MMC_InitCard(hmmc) == HAL_ERROR) in HAL_MMC_Init()
459 hmmc->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_MMC_Init()
462 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Init()
465 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Init()
468 if (hmmc->Init.BusWide != SDMMC_BUS_WIDE_1B) in HAL_MMC_Init()
470 if (HAL_MMC_ConfigWideBusOperation(hmmc, hmmc->Init.BusWide) != HAL_OK) in HAL_MMC_Init()
486 HAL_StatusTypeDef HAL_MMC_InitCard(MMC_HandleTypeDef *hmmc) in HAL_MMC_InitCard() argument
502 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
503 hmmc->ErrorCode = SDMMC_ERROR_INVALID_PARAMETER; in HAL_MMC_InitCard()
513 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_InitCard()
516 (void)SDMMC_PowerState_ON(hmmc->Instance); in HAL_MMC_InitCard()
531 errorstate = MMC_PowerON(hmmc); in HAL_MMC_InitCard()
534 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
535 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
540 errorstate = MMC_InitCard(hmmc); in HAL_MMC_InitCard()
543 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
544 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
549 errorstate = SDMMC_CmdBlockLength(hmmc->Instance, MMC_BLOCKSIZE); in HAL_MMC_InitCard()
553 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_InitCard()
554 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
555 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
567 HAL_StatusTypeDef HAL_MMC_DeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_DeInit() argument
570 if (hmmc == NULL) in HAL_MMC_DeInit()
576 assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_DeInit()
578 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_DeInit()
581 MMC_PowerOFF(hmmc); in HAL_MMC_DeInit()
584 if (hmmc->MspDeInitCallback == NULL) in HAL_MMC_DeInit()
586 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_DeInit()
590 hmmc->MspDeInitCallback(hmmc); in HAL_MMC_DeInit()
593 HAL_MMC_MspDeInit(hmmc); in HAL_MMC_DeInit()
596 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_DeInit()
597 hmmc->State = HAL_MMC_STATE_RESET; in HAL_MMC_DeInit()
607 __weak void HAL_MMC_MspInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspInit() argument
610 UNUSED(hmmc); in HAL_MMC_MspInit()
622 __weak void HAL_MMC_MspDeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspDeInit() argument
625 UNUSED(hmmc); in HAL_MMC_MspDeInit()
663 HAL_StatusTypeDef HAL_MMC_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks() argument
678 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks()
682 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks()
684 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks()
686 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks()
688 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks()
693 if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) in HAL_MMC_ReadBlocks()
699 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks()
706 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks()
711 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks()
714 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks()
716 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks()
728 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks()
729 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks()
734 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_ReadBlocks()
737 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
741 hmmc->Context = MMC_CONTEXT_READ_SINGLE_BLOCK; in HAL_MMC_ReadBlocks()
744 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
749 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
750 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
751 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
757 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_ReadBlocks()
760 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_ReadBlocks()
765 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
781 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
782 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
783 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
787 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_ReadBlocks()
790 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_ReadBlocks()
793 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_ReadBlocks()
797 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
798 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
799 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
805 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_ReadBlocks()
808 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
809 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_ReadBlocks()
810 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
813 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_ReadBlocks()
816 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
817 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_ReadBlocks()
818 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
821 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_ReadBlocks()
824 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
825 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_ReadBlocks()
826 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
835 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_ReadBlocks()
837 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
843 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_ReadBlocks()
860 HAL_StatusTypeDef HAL_MMC_WriteBlocks(MMC_HandleTypeDef *hmmc, const uint8_t *pData, uint32_t Block… in HAL_MMC_WriteBlocks() argument
874 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks()
878 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks()
880 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks()
882 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks()
884 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks()
889 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_WriteBlocks()
894 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks()
901 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks()
906 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks()
909 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks()
911 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks()
923 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks()
924 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks()
929 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_WriteBlocks()
932 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
936 hmmc->Context = MMC_CONTEXT_WRITE_SINGLE_BLOCK; in HAL_MMC_WriteBlocks()
939 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
944 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
945 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
946 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
952 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_WriteBlocks()
955 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_WriteBlocks()
968 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_WriteBlocks()
976 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
977 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
978 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
982 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_WriteBlocks()
985 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_WriteBlocks()
988 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_WriteBlocks()
992 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
993 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
994 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1000 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_WriteBlocks()
1003 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1004 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_WriteBlocks()
1005 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1008 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_WriteBlocks()
1011 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1012 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_WriteBlocks()
1013 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1016 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_WriteBlocks()
1019 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1020 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_WriteBlocks()
1021 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1030 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_WriteBlocks()
1032 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1038 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_WriteBlocks()
1056 HAL_StatusTypeDef HAL_MMC_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks_IT() argument
1065 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_IT()
1069 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_IT()
1071 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_IT()
1073 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_IT()
1075 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_IT()
1080 …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()
1085 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks_IT()
1092 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks_IT()
1097 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_IT()
1100 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_IT()
1102 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_IT()
1103 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_IT()
1105 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_IT()
1117 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_IT()
1118 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks_IT()
1123 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1126 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1130 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1133 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1139 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_IT()
1140 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks_IT()
1141 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_IT()
1145 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_IT()
1169 HAL_StatusTypeDef HAL_MMC_WriteBlocks_IT(MMC_HandleTypeDef *hmmc, const uint8_t *pData, in HAL_MMC_WriteBlocks_IT() argument
1178 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_IT()
1182 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_IT()
1184 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_IT()
1186 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_IT()
1188 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_IT()
1193 …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()
1198 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks_IT()
1205 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks_IT()
1210 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_IT()
1213 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_IT()
1215 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_IT()
1216 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_IT()
1218 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_IT()
1230 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_IT()
1232 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks_IT()
1237 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1240 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1244 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1247 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1252 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_IT()
1253 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_IT()
1254 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_IT()
1259 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… in HAL_MMC_WriteBlocks_IT()
1283 HAL_StatusTypeDef HAL_MMC_ReadBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, in HAL_MMC_ReadBlocks_DMA() argument
1292 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_DMA()
1296 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_DMA()
1298 hmmc->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_MMC_ReadBlocks_DMA()
1300 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_DMA()
1302 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_DMA()
1307 …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()
1312 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_ReadBlocks_DMA()
1319 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_ReadBlocks_DMA()
1324 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_DMA()
1327 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_DMA()
1329 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_DMA()
1330 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_DMA()
1332 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_DMA()
1344 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_DMA()
1346 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_ReadBlocks_DMA()
1347 hmmc->Instance->IDMABASER = (uint32_t) pData ; in HAL_MMC_ReadBlocks_DMA()
1348 hmmc->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_MMC_ReadBlocks_DMA()
1353 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1356 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1360 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1363 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1368 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1369 hmmc->ErrorCode = errorstate; in HAL_MMC_ReadBlocks_DMA()
1370 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1375 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_DMA()
1398 HAL_StatusTypeDef HAL_MMC_WriteBlocks_DMA(MMC_HandleTypeDef *hmmc, const uint8_t *pData, in HAL_MMC_WriteBlocks_DMA() argument
1407 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_DMA()
1411 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_DMA()
1413 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_DMA()
1415 if ((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_DMA()
1417 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_DMA()
1422 …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()
1427 hmmc->ErrorCode |= HAL_MMC_ERROR_BLOCK_LEN_ERR; in HAL_MMC_WriteBlocks_DMA()
1434 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_WriteBlocks_DMA()
1439 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_DMA()
1442 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_DMA()
1444 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_DMA()
1445 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_DMA()
1447 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_DMA()
1459 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_DMA()
1461 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_WriteBlocks_DMA()
1463 hmmc->Instance->IDMABASER = (uint32_t) pData ; in HAL_MMC_WriteBlocks_DMA()
1464 hmmc->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_MMC_WriteBlocks_DMA()
1469 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1472 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1476 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_WriteBlocks_DMA()
1479 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_DMA()
1484 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1485 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_DMA()
1486 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_DMA()
1491 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… in HAL_MMC_WriteBlocks_DMA()
1510 HAL_StatusTypeDef HAL_MMC_Erase(MMC_HandleTypeDef *hmmc, uint32_t BlockStartAdd, uint32_t BlockEndA… in HAL_MMC_Erase() argument
1516 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Erase()
1518 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_Erase()
1522 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_Erase()
1526 if (end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_Erase()
1528 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_Erase()
1533 if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) in HAL_MMC_Erase()
1539 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_Erase()
1544 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Erase()
1547 if (((hmmc->MmcCard.Class) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_Erase()
1550 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1551 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_Erase()
1552 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1556 if ((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_Erase()
1559 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1560 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_Erase()
1561 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1565 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_Erase()
1572 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_Erase()
1576 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1577 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1578 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1583 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_Erase()
1587 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1588 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1589 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1594 errorstate = SDMMC_CmdErase(hmmc->Instance, 0UL); in HAL_MMC_Erase()
1598 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1599 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1600 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1604 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1619 void HAL_MMC_IRQHandler(MMC_HandleTypeDef *hmmc) in HAL_MMC_IRQHandler() argument
1622 uint32_t context = hmmc->Context; in HAL_MMC_IRQHandler()
1625 …if ((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) != RESET) && ((context & MMC_CONTEXT_IT) != 0U)) in HAL_MMC_IRQHandler()
1627 MMC_Read_IT(hmmc); in HAL_MMC_IRQHandler()
1630 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) != RESET) in HAL_MMC_IRQHandler()
1632 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DATAEND); in HAL_MMC_IRQHandler()
1634 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_IRQHandler()
1638 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1639 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_IRQHandler()
1643 hmmc->Instance->DLEN = 0; in HAL_MMC_IRQHandler()
1644 hmmc->Instance->DCTRL = 0; in HAL_MMC_IRQHandler()
1645 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA ; in HAL_MMC_IRQHandler()
1650 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1653 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1655 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1657 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1663 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1665 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1669 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1671 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1677 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1679 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1688 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1691 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1693 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1695 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1701 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1703 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1707 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1709 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1715 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1717 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1727 …else if ((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) != RESET) && ((context & MMC_CONTEXT_IT) !… in HAL_MMC_IRQHandler()
1729 MMC_Write_IT(hmmc); in HAL_MMC_IRQHandler()
1732 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL | in HAL_MMC_IRQHandler()
1736 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_DCRCFAIL) != RESET) in HAL_MMC_IRQHandler()
1738 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_IRQHandler()
1740 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_DTIMEOUT) != RESET) in HAL_MMC_IRQHandler()
1742 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_IRQHandler()
1744 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_RXOVERR) != RESET) in HAL_MMC_IRQHandler()
1746 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_IRQHandler()
1748 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_TXUNDERR) != RESET) in HAL_MMC_IRQHandler()
1750 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_IRQHandler()
1754 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1757 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_IRQHandler()
1760 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_IRQHandler()
1761 hmmc->Instance->DCTRL |= SDMMC_DCTRL_FIFORST; in HAL_MMC_IRQHandler()
1762 hmmc->Instance->CMD |= SDMMC_CMD_CMDSTOP; in HAL_MMC_IRQHandler()
1763 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1764 hmmc->Instance->CMD &= ~(SDMMC_CMD_CMDSTOP); in HAL_MMC_IRQHandler()
1765 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DABORT); in HAL_MMC_IRQHandler()
1770 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1772 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1774 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1779 if (hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_IRQHandler()
1782 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1783 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_IRQHandler()
1786 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1788 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1790 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1800 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_IDMABTC) != RESET) in HAL_MMC_IRQHandler()
1802 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1807 hmmc->Write_DMALnkLstBufCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1809 HAL_MMCEx_Write_DMALnkLstBufCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1815 hmmc->Read_DMALnkLstBufCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1817 HAL_MMCEx_Read_DMALnkLstBufCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1833 HAL_MMC_StateTypeDef HAL_MMC_GetState(const MMC_HandleTypeDef *hmmc) in HAL_MMC_GetState() argument
1835 return hmmc->State; in HAL_MMC_GetState()
1844 uint32_t HAL_MMC_GetError(const MMC_HandleTypeDef *hmmc) in HAL_MMC_GetError() argument
1846 return hmmc->ErrorCode; in HAL_MMC_GetError()
1854 __weak void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_TxCpltCallback() argument
1857 UNUSED(hmmc); in HAL_MMC_TxCpltCallback()
1869 __weak void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_RxCpltCallback() argument
1872 UNUSED(hmmc); in HAL_MMC_RxCpltCallback()
1884 __weak void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_ErrorCallback() argument
1887 UNUSED(hmmc); in HAL_MMC_ErrorCallback()
1899 __weak void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_AbortCallback() argument
1902 UNUSED(hmmc); in HAL_MMC_AbortCallback()
1930 HAL_StatusTypeDef HAL_MMC_RegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Callb… in HAL_MMC_RegisterCallback() argument
1938 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1942 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RegisterCallback()
1947 hmmc->TxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1950 hmmc->RxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1953 hmmc->ErrorCallback = pCallback; in HAL_MMC_RegisterCallback()
1956 hmmc->AbortCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1959 hmmc->Read_DMALnkLstBufCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1962 hmmc->Write_DMALnkLstBufCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
1965 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1968 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1972 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1978 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_RegisterCallback()
1983 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1986 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
1990 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
1999 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2026 HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Cal… in HAL_MMC_UnRegisterCallback() argument
2030 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_UnRegisterCallback()
2035 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_UnRegisterCallback()
2038 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_UnRegisterCallback()
2041 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_UnRegisterCallback()
2044 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_UnRegisterCallback()
2047 hmmc->Read_DMALnkLstBufCpltCallback = HAL_MMCEx_Read_DMALnkLstBufCpltCallback; in HAL_MMC_UnRegisterCallback()
2050 hmmc->Write_DMALnkLstBufCpltCallback = HAL_MMCEx_Write_DMALnkLstBufCpltCallback; in HAL_MMC_UnRegisterCallback()
2053 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
2056 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
2060 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2066 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_UnRegisterCallback()
2071 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
2074 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
2078 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2087 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2123 HAL_StatusTypeDef HAL_MMC_GetCardCID(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID) in HAL_MMC_GetCardCID() argument
2125 pCID->ManufacturerID = (uint8_t)((hmmc->CID[0] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2127 pCID->OEM_AppliID = (uint16_t)((hmmc->CID[0] & 0x00FFFF00U) >> 8U); in HAL_MMC_GetCardCID()
2129 pCID->ProdName1 = (((hmmc->CID[0] & 0x000000FFU) << 24U) | ((hmmc->CID[1] & 0xFFFFFF00U) >> 8U)); in HAL_MMC_GetCardCID()
2131 pCID->ProdName2 = (uint8_t)(hmmc->CID[1] & 0x000000FFU); in HAL_MMC_GetCardCID()
2133 pCID->ProdRev = (uint8_t)((hmmc->CID[2] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2135 pCID->ProdSN = (((hmmc->CID[2] & 0x00FFFFFFU) << 8U) | ((hmmc->CID[3] & 0xFF000000U) >> 24U)); in HAL_MMC_GetCardCID()
2137 pCID->Reserved1 = (uint8_t)((hmmc->CID[3] & 0x00F00000U) >> 20U); in HAL_MMC_GetCardCID()
2139 pCID->ManufactDate = (uint16_t)((hmmc->CID[3] & 0x000FFF00U) >> 8U); in HAL_MMC_GetCardCID()
2141 pCID->CID_CRC = (uint8_t)((hmmc->CID[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCID()
2156 HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD) in HAL_MMC_GetCardCSD() argument
2160 pCSD->CSDStruct = (uint8_t)((hmmc->CSD[0] & 0xC0000000U) >> 30U); in HAL_MMC_GetCardCSD()
2162 pCSD->SysSpecVersion = (uint8_t)((hmmc->CSD[0] & 0x3C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2164 pCSD->Reserved1 = (uint8_t)((hmmc->CSD[0] & 0x03000000U) >> 24U); in HAL_MMC_GetCardCSD()
2166 pCSD->TAAC = (uint8_t)((hmmc->CSD[0] & 0x00FF0000U) >> 16U); in HAL_MMC_GetCardCSD()
2168 pCSD->NSAC = (uint8_t)((hmmc->CSD[0] & 0x0000FF00U) >> 8U); in HAL_MMC_GetCardCSD()
2170 pCSD->MaxBusClkFrec = (uint8_t)(hmmc->CSD[0] & 0x000000FFU); in HAL_MMC_GetCardCSD()
2172 pCSD->CardComdClasses = (uint16_t)((hmmc->CSD[1] & 0xFFF00000U) >> 20U); in HAL_MMC_GetCardCSD()
2174 pCSD->RdBlockLen = (uint8_t)((hmmc->CSD[1] & 0x000F0000U) >> 16U); in HAL_MMC_GetCardCSD()
2176 pCSD->PartBlockRead = (uint8_t)((hmmc->CSD[1] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2178 pCSD->WrBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2180 pCSD->RdBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2182 pCSD->DSRImpl = (uint8_t)((hmmc->CSD[1] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2186 if (MMC_ReadExtCSD(hmmc, &block_nbr, 212, 0x0FFFFFFFU) != HAL_OK) /* Field SEC_COUNT [215:212] */ in HAL_MMC_GetCardCSD()
2191 if (hmmc->MmcCard.CardType == MMC_LOW_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2193 … pCSD->DeviceSize = (((hmmc->CSD[1] & 0x000003FFU) << 2U) | ((hmmc->CSD[2] & 0xC0000000U) >> 30U)); in HAL_MMC_GetCardCSD()
2195 pCSD->MaxRdCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x38000000U) >> 27U); in HAL_MMC_GetCardCSD()
2197 pCSD->MaxRdCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x07000000U) >> 24U); in HAL_MMC_GetCardCSD()
2199 pCSD->MaxWrCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x00E00000U) >> 21U); in HAL_MMC_GetCardCSD()
2201 pCSD->MaxWrCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x001C0000U) >> 18U); in HAL_MMC_GetCardCSD()
2203 pCSD->DeviceSizeMul = (uint8_t)((hmmc->CSD[2] & 0x00038000U) >> 15U); in HAL_MMC_GetCardCSD()
2205 hmmc->MmcCard.BlockNbr = (pCSD->DeviceSize + 1U) ; in HAL_MMC_GetCardCSD()
2206 hmmc->MmcCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); in HAL_MMC_GetCardCSD()
2207 hmmc->MmcCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); in HAL_MMC_GetCardCSD()
2209hmmc->MmcCard.LogBlockNbr = (hmmc->MmcCard.BlockNbr) * ((hmmc->MmcCard.BlockSize) / MMC_BLOCKSIZE); in HAL_MMC_GetCardCSD()
2210 hmmc->MmcCard.LogBlockSize = MMC_BLOCKSIZE; in HAL_MMC_GetCardCSD()
2212 else if (hmmc->MmcCard.CardType == MMC_HIGH_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2214 hmmc->MmcCard.BlockNbr = block_nbr; in HAL_MMC_GetCardCSD()
2215 hmmc->MmcCard.LogBlockNbr = hmmc->MmcCard.BlockNbr; in HAL_MMC_GetCardCSD()
2216 hmmc->MmcCard.BlockSize = MMC_BLOCKSIZE; in HAL_MMC_GetCardCSD()
2217 hmmc->MmcCard.LogBlockSize = hmmc->MmcCard.BlockSize; in HAL_MMC_GetCardCSD()
2222 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardCSD()
2223 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_GetCardCSD()
2224 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardCSD()
2228 pCSD->EraseGrSize = (uint8_t)((hmmc->CSD[2] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2230 pCSD->EraseGrMul = (uint8_t)((hmmc->CSD[2] & 0x00003F80U) >> 7U); in HAL_MMC_GetCardCSD()
2232 pCSD->WrProtectGrSize = (uint8_t)(hmmc->CSD[2] & 0x0000007FU); in HAL_MMC_GetCardCSD()
2234 pCSD->WrProtectGrEnable = (uint8_t)((hmmc->CSD[3] & 0x80000000U) >> 31U); in HAL_MMC_GetCardCSD()
2236 pCSD->ManDeflECC = (uint8_t)((hmmc->CSD[3] & 0x60000000U) >> 29U); in HAL_MMC_GetCardCSD()
2238 pCSD->WrSpeedFact = (uint8_t)((hmmc->CSD[3] & 0x1C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2240 pCSD->MaxWrBlockLen = (uint8_t)((hmmc->CSD[3] & 0x03C00000U) >> 22U); in HAL_MMC_GetCardCSD()
2242 pCSD->WriteBlockPaPartial = (uint8_t)((hmmc->CSD[3] & 0x00200000U) >> 21U); in HAL_MMC_GetCardCSD()
2246 pCSD->ContentProtectAppli = (uint8_t)((hmmc->CSD[3] & 0x00010000U) >> 16U); in HAL_MMC_GetCardCSD()
2248 pCSD->FileFormatGroup = (uint8_t)((hmmc->CSD[3] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2250 pCSD->CopyFlag = (uint8_t)((hmmc->CSD[3] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2252 pCSD->PermWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2254 pCSD->TempWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2256 pCSD->FileFormat = (uint8_t)((hmmc->CSD[3] & 0x00000C00U) >> 10U); in HAL_MMC_GetCardCSD()
2258 pCSD->ECC = (uint8_t)((hmmc->CSD[3] & 0x00000300U) >> 8U); in HAL_MMC_GetCardCSD()
2260 pCSD->CSD_CRC = (uint8_t)((hmmc->CSD[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCSD()
2274 HAL_StatusTypeDef HAL_MMC_GetCardInfo(MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo) in HAL_MMC_GetCardInfo() argument
2276 pCardInfo->CardType = (uint32_t)(hmmc->MmcCard.CardType); in HAL_MMC_GetCardInfo()
2277 pCardInfo->Class = (uint32_t)(hmmc->MmcCard.Class); in HAL_MMC_GetCardInfo()
2278 pCardInfo->RelCardAdd = (uint32_t)(hmmc->MmcCard.RelCardAdd); in HAL_MMC_GetCardInfo()
2279 pCardInfo->BlockNbr = (uint32_t)(hmmc->MmcCard.BlockNbr); in HAL_MMC_GetCardInfo()
2280 pCardInfo->BlockSize = (uint32_t)(hmmc->MmcCard.BlockSize); in HAL_MMC_GetCardInfo()
2281 pCardInfo->LogBlockNbr = (uint32_t)(hmmc->MmcCard.LogBlockNbr); in HAL_MMC_GetCardInfo()
2282 pCardInfo->LogBlockSize = (uint32_t)(hmmc->MmcCard.LogBlockSize); in HAL_MMC_GetCardInfo()
2296 HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeou… in HAL_MMC_GetCardExtCSD() argument
2306 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_GetCardExtCSD()
2310 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetCardExtCSD()
2312 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_GetCardExtCSD()
2314 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetCardExtCSD()
2317 hmmc->Instance->DCTRL = 0; in HAL_MMC_GetCardExtCSD()
2329 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_GetCardExtCSD()
2330 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2333 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in HAL_MMC_GetCardExtCSD()
2337 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2338 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardExtCSD()
2339 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2344 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | in HAL_MMC_GetCardExtCSD()
2347 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF)) in HAL_MMC_GetCardExtCSD()
2352 *tmp_buf = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2360 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2361 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2362 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2367 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2370 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_GetCardExtCSD()
2373 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2374 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2375 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2378 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_GetCardExtCSD()
2381 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2382 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_GetCardExtCSD()
2383 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2386 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_GetCardExtCSD()
2389 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2390 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_GetCardExtCSD()
2391 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2400 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_GetCardExtCSD()
2401 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2418 HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode) in HAL_MMC_ConfigWideBusOperation() argument
2429 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigWideBusOperation()
2432 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) in HAL_MMC_ConfigWideBusOperation()
2434 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) in HAL_MMC_ConfigWideBusOperation()
2436 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_DDR); in HAL_MMC_ConfigWideBusOperation()
2440 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_HIGH); in HAL_MMC_ConfigWideBusOperation()
2445 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_DEFAULT); in HAL_MMC_ConfigWideBusOperation()
2452 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in HAL_MMC_ConfigWideBusOperation()
2456 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in HAL_MMC_ConfigWideBusOperation()
2460 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U); in HAL_MMC_ConfigWideBusOperation()
2475 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigWideBusOperation()
2482 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigWideBusOperation()
2497 Init = hmmc->Init; in HAL_MMC_ConfigWideBusOperation()
2499 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_ConfigWideBusOperation()
2514 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigWideBusOperation()
2519 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigWideBusOperation()
2520 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigWideBusOperation()
2539 HAL_StatusTypeDef HAL_MMC_ConfigSpeedBusOperation(MMC_HandleTypeDef *hmmc, uint32_t SpeedMode) in HAL_MMC_ConfigSpeedBusOperation() argument
2550 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigSpeedBusOperation()
2553 device_type = (hmmc->Ext_CSD[49] & 0x000000FFU); in HAL_MMC_ConfigSpeedBusOperation()
2559 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS) != 0U) && ((device_type & 0x04U) != 0U)) in HAL_MMC_ConfigSpeedBusOperation()
2562 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2565 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2569 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_CLKDIV) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2572 errorstate = MMC_DDR_Mode(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2575 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2583 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2586 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2597 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS) != 0U) && ((device_type & 0x04U) != 0U)) in HAL_MMC_ConfigSpeedBusOperation()
2600 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2603 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2607 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_CLKDIV) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2610 errorstate = MMC_DDR_Mode(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2613 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2621 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_ConfigSpeedBusOperation()
2631 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2634 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2640 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_ConfigSpeedBusOperation()
2647 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2650 errorstate = MMC_DDR_Mode(hmmc, DISABLE); in HAL_MMC_ConfigSpeedBusOperation()
2653 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2656 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2659 errorstate = MMC_HighSpeed(hmmc, DISABLE); in HAL_MMC_ConfigSpeedBusOperation()
2662 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2668 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ConfigSpeedBusOperation()
2675 while ((HAL_MMC_GetCardState(hmmc) != HAL_MMC_CARD_TRANSFER)) in HAL_MMC_ConfigSpeedBusOperation()
2679 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ConfigSpeedBusOperation()
2680 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSpeedBusOperation()
2686 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSpeedBusOperation()
2695 HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetCardState() argument
2701 errorstate = MMC_SendStatus(hmmc, &resp1); in HAL_MMC_GetCardState()
2704 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardState()
2718 HAL_StatusTypeDef HAL_MMC_Abort(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort() argument
2723 if (hmmc->State == HAL_MMC_STATE_BUSY) in HAL_MMC_Abort()
2726 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_Abort()
2728 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_Abort()
2736 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort()
2737 error_code = hmmc->ErrorCode; in HAL_MMC_Abort()
2744 if ((hmmc->Instance->DCTRL & SDMMC_DCTRL_DTDIR) == SDMMC_TRANSFER_DIR_TO_CARD) in HAL_MMC_Abort()
2746 if (hmmc->ErrorCode == HAL_MMC_ERROR_NONE) in HAL_MMC_Abort()
2748 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DABORT | SDMMC_FLAG_BUSYD0END)) in HAL_MMC_Abort()
2752 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2753 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2759 if (hmmc->ErrorCode == HAL_MMC_ERROR_CMD_RSP_TIMEOUT) in HAL_MMC_Abort()
2761 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND)) in HAL_MMC_Abort()
2765 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2766 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2772 else if ((hmmc->Instance->DCTRL & SDMMC_DCTRL_DTDIR) == SDMMC_TRANSFER_DIR_TO_SDMMC) in HAL_MMC_Abort()
2774 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DABORT | SDMMC_FLAG_DATAEND)) in HAL_MMC_Abort()
2778 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_Abort()
2779 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2795 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_Abort()
2796 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort()
2798 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_Abort()
2800 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2803 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Abort()
2813 HAL_StatusTypeDef HAL_MMC_Abort_IT(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort_IT() argument
2818 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | \ in HAL_MMC_Abort_IT()
2822 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_Abort_IT()
2825 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort_IT()
2827 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort_IT()
2828 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort_IT()
2832 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort_IT()
2834 if (hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort_IT()
2841 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_Abort_IT()
2843 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_Abort_IT()
2869 HAL_StatusTypeDef HAL_MMC_EraseSequence(MMC_HandleTypeDef *hmmc, uint32_t EraseType, in HAL_MMC_EraseSequence() argument
2883 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_EraseSequence()
2888 if (end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_EraseSequence()
2890 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_EraseSequence()
2895 …if (((hmmc->Ext_CSD[(MMC_EXT_CSD_DATA_SEC_SIZE_INDEX / 4)] >> MMC_EXT_CSD_DATA_SEC_SIZE_POS) & 0x0… in HAL_MMC_EraseSequence()
2900 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_MISALIGNED; in HAL_MMC_EraseSequence()
2906 if (((hmmc->MmcCard.Class) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_EraseSequence()
2908 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_EraseSequence()
2913 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_EraseSequence()
2916 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_EraseSequence()
2919 if ((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_EraseSequence()
2921 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_EraseSequence()
2922 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_EraseSequence()
2927 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_EraseSequence()
2934 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_EraseSequence()
2938 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_EraseSequence()
2942 errorstate = SDMMC_CmdErase(hmmc->Instance, EraseType); in HAL_MMC_EraseSequence()
2948 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_EraseSequence()
2957 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_EraseSequence()
2964 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_EraseSequence()
2970 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_EraseSequence()
2971 hmmc->ErrorCode |= errorstate; in HAL_MMC_EraseSequence()
3000 HAL_StatusTypeDef HAL_MMC_Sanitize(MMC_HandleTypeDef *hmmc) in HAL_MMC_Sanitize() argument
3008 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Sanitize()
3011 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Sanitize()
3014 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03A50100U); in HAL_MMC_Sanitize()
3018 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_Sanitize()
3027 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_Sanitize()
3035 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_Sanitize()
3042 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_Sanitize()
3067 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Sanitize()
3073 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Sanitize()
3074 hmmc->ErrorCode |= errorstate; in HAL_MMC_Sanitize()
3111 HAL_StatusTypeDef HAL_MMC_ConfigSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t SRTMode) in HAL_MMC_ConfigSecRemovalType() argument
3122 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ConfigSecRemovalType()
3125 if (HAL_MMC_GetSupportedSecRemovalType(hmmc, &srt) == HAL_OK) in HAL_MMC_ConfigSecRemovalType()
3128 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigSecRemovalType()
3135 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03100000U | (srt << 8U))); in HAL_MMC_ConfigSecRemovalType()
3142 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigSecRemovalType()
3149 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigSecRemovalType()
3178 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSecRemovalType()
3189 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigSecRemovalType()
3190 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSecRemovalType()
3217 HAL_StatusTypeDef HAL_MMC_GetSupportedSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t *SupportedSR… in HAL_MMC_GetSupportedSecRemovalType() argument
3220 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetSupportedSecRemovalType()
3223 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetSupportedSecRemovalType()
3226 *SupportedSRT = (hmmc->Ext_CSD[4] & 0x0000000FU); /* Bits [3:0] of field 16 */ in HAL_MMC_GetSupportedSecRemovalType()
3229 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetSupportedSecRemovalType()
3244 HAL_StatusTypeDef HAL_MMC_SleepDevice(MMC_HandleTypeDef *hmmc) in HAL_MMC_SleepDevice() argument
3254 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_SleepDevice()
3257 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_SleepDevice()
3260 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220100U)); in HAL_MMC_SleepDevice()
3267 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_SleepDevice()
3274 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SleepDevice()
3293 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220400U)); in HAL_MMC_SleepDevice()
3297 sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_SLEEP_NOTIFICATION_TIME_INDEX / 4)] >> in HAL_MMC_SleepDevice()
3309 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SleepDevice()
3318 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SleepDevice()
3326 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, in HAL_MMC_SleepDevice()
3327 … (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U)); in HAL_MMC_SleepDevice()
3334 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SleepDevice()
3353 (void)SDMMC_CmdSelDesel(hmmc->Instance, 0U); in HAL_MMC_SleepDevice()
3356 sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_S_A_TIMEOUT_INDEX / 4)] >> in HAL_MMC_SleepDevice()
3367 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_STANDBY) in HAL_MMC_SleepDevice()
3370 errorstate = SDMMC_CmdSleepMmc(hmmc->Instance, in HAL_MMC_SleepDevice()
3371 … ((hmmc->MmcCard.RelCardAdd << 16U) | (0x1U << 15U))); in HAL_MMC_SleepDevice()
3375 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SleepDevice()
3384 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SleepDevice()
3408 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_SleepDevice()
3414 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_SleepDevice()
3415 hmmc->ErrorCode |= errorstate; in HAL_MMC_SleepDevice()
3442 HAL_StatusTypeDef HAL_MMC_AwakeDevice(MMC_HandleTypeDef *hmmc) in HAL_MMC_AwakeDevice() argument
3452 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_AwakeDevice()
3455 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_AwakeDevice()
3458 …sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_S_A_TIMEOUT_INDEX / 4)] >> MMC_EXT_CSD_S_A_TIMEOUT_PO… in HAL_MMC_AwakeDevice()
3470 errorstate = SDMMC_CmdSleepMmc(hmmc->Instance, (hmmc->MmcCard.RelCardAdd << 16U)); in HAL_MMC_AwakeDevice()
3474 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_AwakeDevice()
3483 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_AwakeDevice()
3487 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_STANDBY) in HAL_MMC_AwakeDevice()
3490 errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (hmmc->MmcCard.RelCardAdd << 16U)); in HAL_MMC_AwakeDevice()
3493 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_TRANSFER) in HAL_MMC_AwakeDevice()
3496 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220100U)); in HAL_MMC_AwakeDevice()
3503 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, in HAL_MMC_AwakeDevice()
3504 … (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U)); in HAL_MMC_AwakeDevice()
3511 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_AwakeDevice()
3548 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_AwakeDevice()
3554 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_AwakeDevice()
3555 hmmc->ErrorCode |= errorstate; in HAL_MMC_AwakeDevice()
3594 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc) in MMC_InitCard() argument
3602 if (SDMMC_GetPowerState(hmmc->Instance) == 0U) in MMC_InitCard()
3609 errorstate = SDMMC_CmdSendCID(hmmc->Instance); in MMC_InitCard()
3617 hmmc->CID[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
3618 hmmc->CID[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
3619 hmmc->CID[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
3620 hmmc->CID[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
3625 errorstate = SDMMC_CmdSetRelAddMmc(hmmc->Instance, mmc_rca); in MMC_InitCard()
3632 hmmc->MmcCard.RelCardAdd = mmc_rca; in MMC_InitCard()
3635 errorstate = SDMMC_CmdSendCSD(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_InitCard()
3643 hmmc->CSD[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
3644 hmmc->CSD[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
3645 hmmc->CSD[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
3646 hmmc->CSD[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
3650 hmmc->MmcCard.Class = (SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2) >> 20U); in MMC_InitCard()
3653 …errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << … in MMC_InitCard()
3660 if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK) in MMC_InitCard()
3662 return hmmc->ErrorCode; in MMC_InitCard()
3666 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
3669 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
3673 if (HAL_MMC_GetCardExtCSD(hmmc, hmmc->Ext_CSD, SDMMC_DATATIMEOUT) != HAL_OK) in MMC_InitCard()
3675 return hmmc->ErrorCode; in MMC_InitCard()
3679 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
3682 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
3686 Init = hmmc->Init; in MMC_InitCard()
3688 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_InitCard()
3701 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc) in MMC_PowerON() argument
3709 errorstate = SDMMC_CmdGoIdleState(hmmc->Instance); in MMC_PowerON()
3723 errorstate = SDMMC_CmdOpCondition(hmmc->Instance, MMC_VOLTAGE_RANGE); in MMC_PowerON()
3730 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PowerON()
3739 hmmc->MmcCard.CardType = MMC_HIGH_CAPACITY_CARD; in MMC_PowerON()
3743 hmmc->MmcCard.CardType = MMC_LOW_CAPACITY_CARD; in MMC_PowerON()
3754 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc) in MMC_PowerOFF() argument
3757 (void)SDMMC_PowerState_OFF(hmmc->Instance); in MMC_PowerOFF()
3767 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus) in MMC_SendStatus() argument
3777 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_SendStatus()
3784 *pCardStatus = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_SendStatus()
3797 static HAL_StatusTypeDef MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, in MMC_ReadExtCSD() argument
3807 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_ReadExtCSD()
3810 hmmc->Instance->DCTRL = 0; in MMC_ReadExtCSD()
3819 (void)SDMMC_ConfigData(hmmc->Instance, &config); in MMC_ReadExtCSD()
3822 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in MMC_ReadExtCSD()
3826 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3827 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
3828 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3833 while (!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | in MMC_ReadExtCSD()
3836 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF)) in MMC_ReadExtCSD()
3841 tmp_data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_ReadExtCSD()
3855 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3856 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in MMC_ReadExtCSD()
3857 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3863 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in MMC_ReadExtCSD()
3866 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3867 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in MMC_ReadExtCSD()
3868 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3871 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in MMC_ReadExtCSD()
3874 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3875 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in MMC_ReadExtCSD()
3876 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3879 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in MMC_ReadExtCSD()
3882 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
3883 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in MMC_ReadExtCSD()
3884 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3893 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_ReadExtCSD()
3896 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
3900 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in MMC_ReadExtCSD()
3902 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
3913 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc) in MMC_Read_IT() argument
3919 tmp = hmmc->pRxBuffPtr; in MMC_Read_IT()
3921 if (hmmc->RxXferSize >= SDMMC_FIFO_SIZE) in MMC_Read_IT()
3926 data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_Read_IT()
3937 hmmc->pRxBuffPtr = tmp; in MMC_Read_IT()
3938 hmmc->RxXferSize -= SDMMC_FIFO_SIZE; in MMC_Read_IT()
3948 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc) in MMC_Write_IT() argument
3954 tmp = hmmc->pTxBuffPtr; in MMC_Write_IT()
3956 if (hmmc->TxXferSize >= SDMMC_FIFO_SIZE) in MMC_Write_IT()
3969 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in MMC_Write_IT()
3972 hmmc->pTxBuffPtr = tmp; in MMC_Write_IT()
3973 hmmc->TxXferSize -= SDMMC_FIFO_SIZE; in MMC_Write_IT()
3983 static uint32_t MMC_HighSpeed(MMC_HandleTypeDef *hmmc, FunctionalState state) in MMC_HighSpeed() argument
3991 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) && (state == DISABLE)) in MMC_HighSpeed()
3993 …errorstate = MMC_PwrClassUpdate(hmmc, (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS), SDMMC_SPEED_MO… in MMC_HighSpeed()
3997 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B90000U); in MMC_HighSpeed()
4001 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) == 0U) && (state != DISABLE)) in MMC_HighSpeed()
4003 …errorstate = MMC_PwrClassUpdate(hmmc, (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS), SDMMC_SPEED_MO… in MMC_HighSpeed()
4007 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B90100U); in MMC_HighSpeed()
4017 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_HighSpeed()
4024 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_HighSpeed()
4039 Init.ClockEdge = hmmc->Init.ClockEdge; in MMC_HighSpeed()
4040 Init.ClockPowerSave = hmmc->Init.ClockPowerSave; in MMC_HighSpeed()
4041 Init.BusWide = (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS); in MMC_HighSpeed()
4042 Init.HardwareFlowControl = hmmc->Init.HardwareFlowControl; in MMC_HighSpeed()
4046 Init.ClockDiv = hmmc->Init.ClockDiv; in MMC_HighSpeed()
4047 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_HighSpeed()
4049 CLEAR_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED); in MMC_HighSpeed()
4070 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_HighSpeed()
4072 SET_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED); in MMC_HighSpeed()
4096 static uint32_t MMC_DDR_Mode(MMC_HandleTypeDef *hmmc, FunctionalState state) in MMC_DDR_Mode() argument
4102 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) && (state == DISABLE)) in MMC_DDR_Mode()
4104 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS_0) != 0U) in MMC_DDR_Mode()
4106 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_4B, SDMMC_SPEED_MODE_HIGH); in MMC_DDR_Mode()
4110 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in MMC_DDR_Mode()
4115 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_8B, SDMMC_SPEED_MODE_HIGH); in MMC_DDR_Mode()
4119 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in MMC_DDR_Mode()
4124 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) == 0U) && (state != DISABLE)) in MMC_DDR_Mode()
4126 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS_0) != 0U) in MMC_DDR_Mode()
4128 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_4B, SDMMC_SPEED_MODE_DDR); in MMC_DDR_Mode()
4132 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70500U); in MMC_DDR_Mode()
4137 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_8B, SDMMC_SPEED_MODE_DDR); in MMC_DDR_Mode()
4141 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70600U); in MMC_DDR_Mode()
4152 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_DDR_Mode()
4159 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_DDR_Mode()
4176 CLEAR_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_DDR); in MMC_DDR_Mode()
4180 SET_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_DDR); in MMC_DDR_Mode()
4204 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide, uint32_t Speed) in MMC_PwrClassUpdate() argument
4217 …if (MMC_ReadExtCSD(hmmc, &power_class, 187, SDMMC_DATATIMEOUT) != HAL_OK) /* Field POWER_CLASS [18… in MMC_PwrClassUpdate()
4230 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_DDR_52_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL… in MMC_PwrClassUpdate()
4236 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_52_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL_52_… in MMC_PwrClassUpdate()
4242 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_26_INDEX / 4)] >> MMC_EXT_CSD_PWR_CL_26_… in MMC_PwrClassUpdate()
4257 …errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03BB0000U | ((supported_pwr_class & 0x0FU) << 8U))… in MMC_PwrClassUpdate()
4265 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_PwrClassUpdate()
4272 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PwrClassUpdate()
4307 HAL_StatusTypeDef HAL_MMC_SwitchPartition(MMC_HandleTypeDef *hmmc, HAL_MMC_PartitionTypeDef Partiti… in HAL_MMC_SwitchPartition() argument
4316 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_SwitchPartition()
4319 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_SwitchPartition()
4322 errorstate = SDMMC_CmdSwitch(hmmc->Instance, arg); in HAL_MMC_SwitchPartition()
4326 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SwitchPartition()
4335 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SwitchPartition()
4343 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_SwitchPartition()
4350 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SwitchPartition()
4375 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_SwitchPartition()
4381 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_SwitchPartition()
4382 hmmc->ErrorCode |= errorstate; in HAL_MMC_SwitchPartition()
4411 HAL_StatusTypeDef HAL_MMC_RPMB_ProgramAuthenticationKey(MMC_HandleTypeDef *hmmc, const uint8_t *pKe… in HAL_MMC_RPMB_ProgramAuthenticationKey() argument
4429 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4433 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4435 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4437 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4440 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4442 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x80000001U); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4446 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4447 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4448 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4459 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4460 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4464 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4467 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4473 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4474 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4475 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4482 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ProgramAuthenticationKey()
4485 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4502 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4532 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4533 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4534 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4538 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4541 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4545 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4546 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4547 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4558 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4559 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4562 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4565 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4570 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4571 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4572 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4577 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4583 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ProgramAuthenticationKey()
4586 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4591 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4623 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4624 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4625 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4629 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4632 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4635 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4636 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4637 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4640 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4643 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4644 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4645 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4648 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_ProgramAuthenticationKey()
4651 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4652 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4653 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4662 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ProgramAuthenticationKey()
4664 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4669 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4677 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_ProgramAuthenticationKey()
4689 uint32_t HAL_MMC_RPMB_GetWriteCounter(MMC_HandleTypeDef *hmmc, uint8_t *pNonce, uint32_t Timeout) in HAL_MMC_RPMB_GetWriteCounter() argument
4707 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_GetWriteCounter()
4708 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4712 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_GetWriteCounter()
4714 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_GetWriteCounter()
4715 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_GetWriteCounter()
4718 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_GetWriteCounter()
4720 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_GetWriteCounter()
4724 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4725 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4726 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4727 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4740 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_GetWriteCounter()
4741 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4744 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_GetWriteCounter()
4747 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_GetWriteCounter()
4752 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4753 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4754 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4755 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4761 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_GetWriteCounter()
4764 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_GetWriteCounter()
4782 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_GetWriteCounter()
4807 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4808 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4809 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4810 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4814 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4817 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_GetWriteCounter()
4821 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4822 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4823 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4824 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4835 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_GetWriteCounter()
4836 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4839 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_GetWriteCounter()
4842 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_GetWriteCounter()
4847 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4848 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_GetWriteCounter()
4849 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4850 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4855 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4861 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_GetWriteCounter()
4864 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_GetWriteCounter()
4869 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4905 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4906 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_GetWriteCounter()
4907 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4908 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4912 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_GetWriteCounter()
4915 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_GetWriteCounter()
4918 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4919 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_GetWriteCounter()
4920 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4921 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4924 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_GetWriteCounter()
4927 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4928 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_GetWriteCounter()
4929 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4930 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4933 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_GetWriteCounter()
4936 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4937 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_GetWriteCounter()
4938 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4939 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4948 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_GetWriteCounter()
4950 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_GetWriteCounter()
4956 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4966 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_GetWriteCounter()
4967 hmmc->RPMBErrorCode |= HAL_MMC_ERROR_RPMB_COUNTER_FAILURE; in HAL_MMC_RPMB_GetWriteCounter()
4983 HAL_StatusTypeDef HAL_MMC_RPMB_WriteBlocks(MMC_HandleTypeDef *hmmc, const uint8_t *pData, uint16_t … in HAL_MMC_RPMB_WriteBlocks() argument
5007 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_WriteBlocks()
5013 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_RPMB_WriteBlocks()
5019 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_WriteBlocks()
5021 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_WriteBlocks()
5022 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5025 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_WriteBlocks()
5027 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001U); in HAL_MMC_RPMB_WriteBlocks()
5031 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5032 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5033 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5046 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5047 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5050 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5053 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5058 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5059 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5060 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5067 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5070 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5088 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_WriteBlocks()
5112 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5113 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5114 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5118 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5121 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 0x00000001); in HAL_MMC_RPMB_WriteBlocks()
5125 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5126 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5127 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5138 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5139 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5142 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5145 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5150 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5151 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5152 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5157 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5163 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5166 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5171 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5207 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5208 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5209 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5213 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5216 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_WriteBlocks()
5219 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5220 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5221 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5224 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_WriteBlocks()
5227 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5228 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_WriteBlocks()
5229 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5232 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_WriteBlocks()
5235 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5236 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_WriteBlocks()
5237 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5246 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5248 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5260 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5274 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_WriteBlocks()
5276 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_WriteBlocks()
5279 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5282 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_WriteBlocks()
5284 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_WriteBlocks()
5288 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5289 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5290 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5302 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5303 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5308 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5311 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5317 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5318 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5319 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5326 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5329 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5347 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_WriteBlocks()
5381 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5382 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5383 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5387 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5391 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_WriteBlocks()
5395 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5396 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5397 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5408 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_WriteBlocks()
5409 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5414 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_WriteBlocks()
5417 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_WriteBlocks()
5423 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5424 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_WriteBlocks()
5425 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5431 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5436 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_WriteBlocks()
5439 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_WriteBlocks()
5444 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5476 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5477 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5478 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5482 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_WriteBlocks()
5485 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_WriteBlocks()
5488 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5489 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_WriteBlocks()
5490 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5493 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_WriteBlocks()
5496 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5497 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_WriteBlocks()
5498 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5501 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_WriteBlocks()
5504 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5505 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_WriteBlocks()
5506 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5515 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_WriteBlocks()
5517 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_WriteBlocks()
5522 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_WriteBlocks()
5530 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_WriteBlocks()
5547 HAL_StatusTypeDef HAL_MMC_RPMB_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint16_t BlockAd… in HAL_MMC_RPMB_ReadBlocks() argument
5579 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RPMB_ReadBlocks()
5581 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_RPMB_ReadBlocks()
5582 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_RPMB_ReadBlocks()
5585 hmmc->Instance->DCTRL = 0U; in HAL_MMC_RPMB_ReadBlocks()
5587 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, 1); in HAL_MMC_RPMB_ReadBlocks()
5591 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5592 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5593 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5606 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ReadBlocks()
5607 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5610 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ReadBlocks()
5613 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ReadBlocks()
5618 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5619 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5620 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5627 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ReadBlocks()
5630 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ReadBlocks()
5648 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_RPMB_ReadBlocks()
5672 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5673 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5674 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5678 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5681 errorstate = SDMMC_CmdBlockCount(hmmc->Instance, arg); in HAL_MMC_RPMB_ReadBlocks()
5685 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5686 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5687 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5698 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_RPMB_ReadBlocks()
5699 __SDMMC_CMDTRANS_ENABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5702 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_RPMB_ReadBlocks()
5705 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, 0); in HAL_MMC_RPMB_ReadBlocks()
5710 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5711 hmmc->ErrorCode |= errorstate; in HAL_MMC_RPMB_ReadBlocks()
5712 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5717 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5723 while (!__HAL_MMC_GET_FLAG(hmmc, in HAL_MMC_RPMB_ReadBlocks()
5726 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining >= SDMMC_FIFO_SIZE)) in HAL_MMC_RPMB_ReadBlocks()
5731 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5780 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5781 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_RPMB_ReadBlocks()
5782 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5786 __SDMMC_CMDTRANS_DISABLE(hmmc->Instance); in HAL_MMC_RPMB_ReadBlocks()
5789 if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_RPMB_ReadBlocks()
5792 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5793 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_RPMB_ReadBlocks()
5794 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5797 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_RPMB_ReadBlocks()
5800 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5801 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_RPMB_ReadBlocks()
5802 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5805 else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_RPMB_ReadBlocks()
5808 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5809 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_RPMB_ReadBlocks()
5810 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5819 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_RPMB_ReadBlocks()
5821 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_RPMB_ReadBlocks()
5834 hmmc->RPMBErrorCode |= tail_pack[9]; in HAL_MMC_RPMB_ReadBlocks()
5842 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_RPMB_ReadBlocks()
5853 __weak void HAL_MMCEx_Read_DMALnkLstBufCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMCEx_Read_DMALnkLstBufCpltCallback() argument
5856 UNUSED(hmmc); in HAL_MMCEx_Read_DMALnkLstBufCpltCallback()
5867 __weak void HAL_MMCEx_Write_DMALnkLstBufCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMCEx_Write_DMALnkLstBufCpltCallback() argument
5870 UNUSED(hmmc); in HAL_MMCEx_Write_DMALnkLstBufCpltCallback()