Lines Matching refs:hmmc

321 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc);
322 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc);
323 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus);
324 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc);
325 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc);
326 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc);
334 static uint32_t MMC_HighSpeed(MMC_HandleTypeDef *hmmc, FunctionalState state);
335 static uint32_t MMC_DDR_Mode(MMC_HandleTypeDef *hmmc, FunctionalState state);
337 static HAL_StatusTypeDef MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t Fie…
338 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide, uint32_t Speed);
369 HAL_StatusTypeDef HAL_MMC_Init(MMC_HandleTypeDef *hmmc) in HAL_MMC_Init() argument
372 if(hmmc == NULL) in HAL_MMC_Init()
378 assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_Init()
379 assert_param(IS_SDMMC_CLOCK_EDGE(hmmc->Init.ClockEdge)); in HAL_MMC_Init()
381 assert_param(IS_SDMMC_CLOCK_BYPASS(hmmc->Init.ClockBypass)); in HAL_MMC_Init()
383 assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hmmc->Init.ClockPowerSave)); in HAL_MMC_Init()
384 assert_param(IS_SDMMC_BUS_WIDE(hmmc->Init.BusWide)); in HAL_MMC_Init()
385 assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hmmc->Init.HardwareFlowControl)); in HAL_MMC_Init()
386 assert_param(IS_SDMMC_CLKDIV(hmmc->Init.ClockDiv)); in HAL_MMC_Init()
388 if(hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_Init()
391 hmmc->Lock = HAL_UNLOCKED; in HAL_MMC_Init()
394 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_Init()
395 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_Init()
396 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_Init()
397 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_Init()
399 hmmc->Read_DMADblBuf0CpltCallback = HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback; in HAL_MMC_Init()
400 hmmc->Read_DMADblBuf1CpltCallback = HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback; in HAL_MMC_Init()
401 hmmc->Write_DMADblBuf0CpltCallback = HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback; in HAL_MMC_Init()
402 hmmc->Write_DMADblBuf1CpltCallback = HAL_MMCEx_Write_DMADoubleBuffer1CpltCallback; in HAL_MMC_Init()
405 if(hmmc->MspInitCallback == NULL) in HAL_MMC_Init()
407 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_Init()
411 hmmc->MspInitCallback(hmmc); in HAL_MMC_Init()
414 HAL_MMC_MspInit(hmmc); in HAL_MMC_Init()
418 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Init()
421 if(HAL_MMC_InitCard(hmmc) == HAL_ERROR) in HAL_MMC_Init()
427 hmmc->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_MMC_Init()
430 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Init()
433 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Init()
436 if (hmmc->Init.BusWide != SDMMC_BUS_WIDE_1B) in HAL_MMC_Init()
438 if (HAL_MMC_ConfigWideBusOperation(hmmc, hmmc->Init.BusWide) != HAL_OK) in HAL_MMC_Init()
454 HAL_StatusTypeDef HAL_MMC_InitCard(MMC_HandleTypeDef *hmmc) in HAL_MMC_InitCard() argument
473 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
474 hmmc->ErrorCode = SDMMC_ERROR_INVALID_PARAMETER; in HAL_MMC_InitCard()
485 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_InitCard()
489 __HAL_MMC_DISABLE(hmmc); in HAL_MMC_InitCard()
493 (void)SDMMC_PowerState_ON(hmmc->Instance); in HAL_MMC_InitCard()
497 __HAL_MMC_ENABLE(hmmc); in HAL_MMC_InitCard()
510 errorstate = MMC_PowerON(hmmc); in HAL_MMC_InitCard()
513 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
514 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
519 errorstate = MMC_InitCard(hmmc); in HAL_MMC_InitCard()
522 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
523 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
528 errorstate = SDMMC_CmdBlockLength(hmmc->Instance, MMC_BLOCKSIZE); in HAL_MMC_InitCard()
532 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_InitCard()
533 hmmc->ErrorCode |= errorstate; in HAL_MMC_InitCard()
534 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_InitCard()
546 HAL_StatusTypeDef HAL_MMC_DeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_DeInit() argument
549 if(hmmc == NULL) in HAL_MMC_DeInit()
555 assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance)); in HAL_MMC_DeInit()
557 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_DeInit()
560 MMC_PowerOFF(hmmc); in HAL_MMC_DeInit()
563 if(hmmc->MspDeInitCallback == NULL) in HAL_MMC_DeInit()
565 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_DeInit()
569 hmmc->MspDeInitCallback(hmmc); in HAL_MMC_DeInit()
572 HAL_MMC_MspDeInit(hmmc); in HAL_MMC_DeInit()
575 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_DeInit()
576 hmmc->State = HAL_MMC_STATE_RESET; in HAL_MMC_DeInit()
587 __weak void HAL_MMC_MspInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspInit() argument
590 UNUSED(hmmc); in HAL_MMC_MspInit()
602 __weak void HAL_MMC_MspDeInit(MMC_HandleTypeDef *hmmc) in HAL_MMC_MspDeInit() argument
605 UNUSED(hmmc); in HAL_MMC_MspDeInit()
643 HAL_StatusTypeDef HAL_MMC_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, ui… in HAL_MMC_ReadBlocks() argument
654 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks()
658 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks()
660 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks()
662 if((add + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks()
664 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks()
668 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks()
671 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks()
673 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks()
689 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks()
691 __SDMMC_CMDTRANS_ENABLE( hmmc->Instance); in HAL_MMC_ReadBlocks()
697 hmmc->Context = MMC_CONTEXT_READ_MULTIPLE_BLOCK; in HAL_MMC_ReadBlocks()
700 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
704 hmmc->Context = MMC_CONTEXT_READ_SINGLE_BLOCK; in HAL_MMC_ReadBlocks()
707 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks()
712 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
713 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
714 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
715 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks()
721 …while(!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | S… in HAL_MMC_ReadBlocks()
723 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) && (dataremaining > 0U)) in HAL_MMC_ReadBlocks()
728 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
747 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
748 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
749 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
750 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks()
755 __SDMMC_CMDTRANS_DISABLE( hmmc->Instance); in HAL_MMC_ReadBlocks()
759 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_ReadBlocks()
762 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_ReadBlocks()
766 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
767 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks()
768 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
769 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks()
775 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_ReadBlocks()
778 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
779 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_ReadBlocks()
780 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
781 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks()
784 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_ReadBlocks()
787 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
788 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_ReadBlocks()
789 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
790 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks()
793 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_ReadBlocks()
796 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
797 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_ReadBlocks()
798 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
799 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks()
809 while ((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXDAVL)) && (dataremaining > 0U)) in HAL_MMC_ReadBlocks()
811 data = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_ReadBlocks()
828 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks()
829 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ReadBlocks()
830 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
831 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks()
838 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_ReadBlocks()
840 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks()
846 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_ReadBlocks()
863 HAL_StatusTypeDef HAL_MMC_WriteBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd, u… 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((add + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks()
884 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks()
888 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks()
891 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks()
893 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks()
906 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks()
907 __SDMMC_CMDTRANS_ENABLE( hmmc->Instance); in HAL_MMC_WriteBlocks()
913 hmmc->Context = MMC_CONTEXT_WRITE_MULTIPLE_BLOCK; in HAL_MMC_WriteBlocks()
916 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
920 hmmc->Context = MMC_CONTEXT_WRITE_SINGLE_BLOCK; in HAL_MMC_WriteBlocks()
923 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks()
928 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
929 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
930 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
931 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks()
943 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks()
948 …while(!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | … in HAL_MMC_WriteBlocks()
950 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) && (dataremaining > 0U)) in HAL_MMC_WriteBlocks()
967 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in HAL_MMC_WriteBlocks()
974 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
975 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
976 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
977 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks()
982 __SDMMC_CMDTRANS_DISABLE( hmmc->Instance); in HAL_MMC_WriteBlocks()
986 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) in HAL_MMC_WriteBlocks()
989 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_WriteBlocks()
993 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
994 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks()
995 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
996 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks()
1002 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_WriteBlocks()
1005 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1006 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_WriteBlocks()
1007 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1008 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks()
1011 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_WriteBlocks()
1014 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1015 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_WriteBlocks()
1016 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1017 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks()
1020 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXUNDERR)) in HAL_MMC_WriteBlocks()
1023 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks()
1024 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_WriteBlocks()
1025 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1026 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks()
1035 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_WriteBlocks()
1037 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks()
1043 hmmc->ErrorCode |= HAL_MMC_ERROR_BUSY; in HAL_MMC_WriteBlocks()
1061 HAL_StatusTypeDef HAL_MMC_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd,… in HAL_MMC_ReadBlocks_IT() argument
1069 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_IT()
1073 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_IT()
1075 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_IT()
1077 if((add + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_IT()
1079 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_IT()
1083 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_IT()
1086 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_IT()
1088 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_IT()
1089 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_IT()
1091 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_IT()
1107 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_IT()
1109 __SDMMC_CMDTRANS_ENABLE( hmmc->Instance); in HAL_MMC_ReadBlocks_IT()
1114 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1117 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1121 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_ReadBlocks_IT()
1124 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_IT()
1130 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_IT()
1131 hmmc->ErrorCode |= errorstate; in HAL_MMC_ReadBlocks_IT()
1132 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_IT()
1133 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks_IT()
1137 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_IT()
1160 HAL_StatusTypeDef HAL_MMC_WriteBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd… in HAL_MMC_WriteBlocks_IT() argument
1168 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_IT()
1172 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_IT()
1174 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_IT()
1176 if((add + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_IT()
1178 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_IT()
1182 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_IT()
1185 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_IT()
1187 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_IT()
1188 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_IT()
1190 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_IT()
1203 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_IT()
1205 __SDMMC_CMDTRANS_ENABLE( hmmc->Instance); in HAL_MMC_WriteBlocks_IT()
1211 hmmc->Context = (MMC_CONTEXT_WRITE_MULTIPLE_BLOCK| MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1214 errorstate = SDMMC_CmdWriteMultiBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1218 hmmc->Context = (MMC_CONTEXT_WRITE_SINGLE_BLOCK | MMC_CONTEXT_IT); in HAL_MMC_WriteBlocks_IT()
1221 errorstate = SDMMC_CmdWriteSingleBlock(hmmc->Instance, add); in HAL_MMC_WriteBlocks_IT()
1226 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_IT()
1227 hmmc->ErrorCode |= errorstate; in HAL_MMC_WriteBlocks_IT()
1228 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_IT()
1229 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks_IT()
1241 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_IT()
1245 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… in HAL_MMC_WriteBlocks_IT()
1268 HAL_StatusTypeDef HAL_MMC_ReadBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAdd… in HAL_MMC_ReadBlocks_DMA() argument
1276 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ReadBlocks_DMA()
1280 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ReadBlocks_DMA()
1282 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_ReadBlocks_DMA()
1284 if((add + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_ReadBlocks_DMA()
1286 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_ReadBlocks_DMA()
1290 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ReadBlocks_DMA()
1293 hmmc->Instance->DCTRL = 0U; in HAL_MMC_ReadBlocks_DMA()
1297 hmmc->hdmarx->XferCpltCallback = MMC_DMAReceiveCplt; in HAL_MMC_ReadBlocks_DMA()
1300 hmmc->hdmarx->XferErrorCallback = MMC_DMAError; in HAL_MMC_ReadBlocks_DMA()
1303 hmmc->hdmarx->XferAbortCallback = NULL; in HAL_MMC_ReadBlocks_DMA()
1306 hmmc->pRxBuffPtr = pData; in HAL_MMC_ReadBlocks_DMA()
1307 hmmc->RxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_ReadBlocks_DMA()
1310 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_ReadBlocks_DMA()
1323 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_DMA()
1325 __SDMMC_CMDTRANS_ENABLE( hmmc->Instance); in HAL_MMC_ReadBlocks_DMA()
1326 hmmc->Instance->IDMABASE0 = (uint32_t) pData ; in HAL_MMC_ReadBlocks_DMA()
1327 hmmc->Instance->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; in HAL_MMC_ReadBlocks_DMA()
1330 …if(HAL_DMA_Start_IT(hmmc->hdmarx, (uint32_t)&hmmc->Instance->FIFO, (uint32_t)pData, (uint32_t)(MMC… in HAL_MMC_ReadBlocks_DMA()
1332 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1333 hmmc->ErrorCode = HAL_MMC_ERROR_DMA; in HAL_MMC_ReadBlocks_DMA()
1334 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1340 __HAL_MMC_DMA_ENABLE(hmmc); in HAL_MMC_ReadBlocks_DMA()
1349 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_ReadBlocks_DMA()
1355 hmmc->Context = (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1358 errorstate = SDMMC_CmdReadMultiBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1362 hmmc->Context = (MMC_CONTEXT_READ_SINGLE_BLOCK | MMC_CONTEXT_DMA); in HAL_MMC_ReadBlocks_DMA()
1365 errorstate = SDMMC_CmdReadSingleBlock(hmmc->Instance, add); in HAL_MMC_ReadBlocks_DMA()
1370 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ReadBlocks_DMA()
1371 hmmc->ErrorCode = errorstate; in HAL_MMC_ReadBlocks_DMA()
1372 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ReadBlocks_DMA()
1373 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_ReadBlocks_DMA()
1378 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DAT… in HAL_MMC_ReadBlocks_DMA()
1404 HAL_StatusTypeDef HAL_MMC_WriteBlocks_DMA(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint32_t BlockAd… in HAL_MMC_WriteBlocks_DMA() argument
1412 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_WriteBlocks_DMA()
1416 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_WriteBlocks_DMA()
1418 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_WriteBlocks_DMA()
1420 if((add + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_WriteBlocks_DMA()
1422 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_WriteBlocks_DMA()
1426 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_WriteBlocks_DMA()
1429 hmmc->Instance->DCTRL = 0U; in HAL_MMC_WriteBlocks_DMA()
1433 hmmc->hdmatx->XferCpltCallback = MMC_DMATransmitCplt; in HAL_MMC_WriteBlocks_DMA()
1436 hmmc->hdmatx->XferErrorCallback = MMC_DMAError; in HAL_MMC_WriteBlocks_DMA()
1439 hmmc->hdmatx->XferAbortCallback = NULL; in HAL_MMC_WriteBlocks_DMA()
1441 hmmc->pTxBuffPtr = pData; in HAL_MMC_WriteBlocks_DMA()
1442 hmmc->TxXferSize = MMC_BLOCKSIZE * NumberOfBlocks; in HAL_MMC_WriteBlocks_DMA()
1445 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_WriteBlocks_DMA()
1458 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_DMA()
1460 __SDMMC_CMDTRANS_ENABLE( hmmc->Instance); in HAL_MMC_WriteBlocks_DMA()
1462 hmmc->Instance->IDMABASE0 = (uint32_t) pData ; in HAL_MMC_WriteBlocks_DMA()
1463 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()
1487 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks_DMA()
1493 __HAL_MMC_DMA_ENABLE(hmmc); in HAL_MMC_WriteBlocks_DMA()
1496 …if(HAL_DMA_Start_IT(hmmc->hdmatx, (uint32_t)pData, (uint32_t)&hmmc->Instance->FIFO, (uint32_t)(MMC… in HAL_MMC_WriteBlocks_DMA()
1498 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_WriteBlocks_DMA()
1499 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_WriteBlocks_DMA()
1500 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_WriteBlocks_DMA()
1501 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_WriteBlocks_DMA()
1513 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_WriteBlocks_DMA()
1516 __HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR)); in HAL_MMC_WriteBlocks_DMA()
1522 …__HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DA… in HAL_MMC_WriteBlocks_DMA()
1542 HAL_StatusTypeDef HAL_MMC_Erase(MMC_HandleTypeDef *hmmc, uint32_t BlockStartAdd, uint32_t BlockEndA… in HAL_MMC_Erase() argument
1548 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Erase()
1550 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_Erase()
1554 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_Erase()
1558 if(end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_Erase()
1560 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_Erase()
1564 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Erase()
1567 if(((hmmc->MmcCard.Class) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_Erase()
1570 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1571 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_Erase()
1572 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1576 if((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_Erase()
1579 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1580 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_Erase()
1581 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1585 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_Erase()
1592 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_Erase()
1596 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1597 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1598 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1603 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_Erase()
1607 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1608 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1609 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1614 errorstate = SDMMC_CmdErase(hmmc->Instance, 0UL); in HAL_MMC_Erase()
1618 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Erase()
1619 hmmc->ErrorCode |= errorstate; in HAL_MMC_Erase()
1620 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1624 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Erase()
1639 void HAL_MMC_IRQHandler(MMC_HandleTypeDef *hmmc) in HAL_MMC_IRQHandler() argument
1642 uint32_t context = hmmc->Context; in HAL_MMC_IRQHandler()
1645 if((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF) != RESET) && ((context & MMC_CONTEXT_IT) != 0U)) in HAL_MMC_IRQHandler()
1647 MMC_Read_IT(hmmc); in HAL_MMC_IRQHandler()
1650 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DATAEND) != RESET) in HAL_MMC_IRQHandler()
1652 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DATAEND); in HAL_MMC_IRQHandler()
1654 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT |\ in HAL_MMC_IRQHandler()
1659 hmmc->Instance->DCTRL &= ~(SDMMC_DCTRL_DTEN); in HAL_MMC_IRQHandler()
1661 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1662 __SDMMC_CMDTRANS_DISABLE( hmmc->Instance); in HAL_MMC_IRQHandler()
1668 hmmc->Instance->DLEN = 0; in HAL_MMC_IRQHandler()
1669 hmmc->Instance->DCTRL = 0; in HAL_MMC_IRQHandler()
1670 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA ; in HAL_MMC_IRQHandler()
1675 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1678 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1680 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1682 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1688 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1690 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1691 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_IRQHandler()
1695 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1697 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1703 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1705 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1711 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1714 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1716 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1718 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1724 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); in HAL_MMC_IRQHandler()
1726 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1727 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1728 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_IRQHandler()
1732 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1734 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1744 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1747 hmmc->ErrorCode |= errorstate; in HAL_MMC_IRQHandler()
1749 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1751 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1757 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1759 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1760 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_IRQHandler()
1764 hmmc->RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1766 HAL_MMC_RxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1772 hmmc->TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1774 HAL_MMC_TxCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1784 …else if((__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_TXFIFOHE) != RESET) && ((context & MMC_CONTEXT_IT) !=… in HAL_MMC_IRQHandler()
1786 MMC_Write_IT(hmmc); in HAL_MMC_IRQHandler()
1789 …else if (__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL| SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_RXOVERR | … in HAL_MMC_IRQHandler()
1792 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_DCRCFAIL) != RESET) in HAL_MMC_IRQHandler()
1794 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_IRQHandler()
1796 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_DTIMEOUT) != RESET) in HAL_MMC_IRQHandler()
1798 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_IRQHandler()
1800 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_RXOVERR) != RESET) in HAL_MMC_IRQHandler()
1802 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_IRQHandler()
1804 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_IT_TXUNDERR) != RESET) in HAL_MMC_IRQHandler()
1806 hmmc->ErrorCode |= HAL_MMC_ERROR_TX_UNDERRUN; in HAL_MMC_IRQHandler()
1810 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_IRQHandler()
1813 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ in HAL_MMC_IRQHandler()
1817 __SDMMC_CMDTRANS_DISABLE( hmmc->Instance); in HAL_MMC_IRQHandler()
1818 hmmc->Instance->DCTRL |= SDMMC_DCTRL_FIFORST; in HAL_MMC_IRQHandler()
1819 hmmc->Instance->CMD |= SDMMC_CMD_CMDSTOP; in HAL_MMC_IRQHandler()
1821 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_IRQHandler()
1823 hmmc->Instance->CMD &= ~(SDMMC_CMD_CMDSTOP); in HAL_MMC_IRQHandler()
1824 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_DABORT); in HAL_MMC_IRQHandler()
1830 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1831 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_IRQHandler()
1833 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1835 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1841 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_IRQHandler()
1844 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1845 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_IRQHandler()
1848 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1850 hmmc->ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1852 HAL_MMC_ErrorCallback(hmmc); in HAL_MMC_IRQHandler()
1857 if(hmmc->hdmatx != NULL) in HAL_MMC_IRQHandler()
1860 hmmc->hdmatx->XferAbortCallback = MMC_DMATxAbort; in HAL_MMC_IRQHandler()
1862 if(HAL_DMA_Abort_IT(hmmc->hdmatx) != HAL_OK) in HAL_MMC_IRQHandler()
1864 MMC_DMATxAbort(hmmc->hdmatx); in HAL_MMC_IRQHandler()
1867 else if(hmmc->hdmarx != NULL) in HAL_MMC_IRQHandler()
1870 hmmc->hdmarx->XferAbortCallback = MMC_DMARxAbort; in HAL_MMC_IRQHandler()
1872 if(HAL_DMA_Abort_IT(hmmc->hdmarx) != HAL_OK) in HAL_MMC_IRQHandler()
1874 MMC_DMARxAbort(hmmc->hdmarx); in HAL_MMC_IRQHandler()
1879 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_IRQHandler()
1880 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_IRQHandler()
1881 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_IRQHandler()
1883 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_IRQHandler()
1885 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_IRQHandler()
1897 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_IDMABTC) != RESET) in HAL_MMC_IRQHandler()
1899 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_IT_IDMABTC); in HAL_MMC_IRQHandler()
1900 if(READ_BIT(hmmc->Instance->IDMACTRL, SDMMC_IDMA_IDMABACT) == 0U) in HAL_MMC_IRQHandler()
1906 hmmc->Write_DMADblBuf1CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1908 HAL_MMCEx_Write_DMADoubleBuffer1CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1914 hmmc->Read_DMADblBuf1CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1916 HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1926 hmmc->Write_DMADblBuf0CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1928 HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1934 hmmc->Read_DMADblBuf0CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1936 HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback(hmmc); in HAL_MMC_IRQHandler()
1954 HAL_MMC_StateTypeDef HAL_MMC_GetState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetState() argument
1956 return hmmc->State; in HAL_MMC_GetState()
1965 uint32_t HAL_MMC_GetError(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetError() argument
1967 return hmmc->ErrorCode; in HAL_MMC_GetError()
1975 __weak void HAL_MMC_TxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_TxCpltCallback() argument
1978 UNUSED(hmmc); in HAL_MMC_TxCpltCallback()
1990 __weak void HAL_MMC_RxCpltCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_RxCpltCallback() argument
1993 UNUSED(hmmc); in HAL_MMC_RxCpltCallback()
2005 __weak void HAL_MMC_ErrorCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_ErrorCallback() argument
2008 UNUSED(hmmc); in HAL_MMC_ErrorCallback()
2020 __weak void HAL_MMC_AbortCallback(MMC_HandleTypeDef *hmmc) in HAL_MMC_AbortCallback() argument
2023 UNUSED(hmmc); in HAL_MMC_AbortCallback()
2050 HAL_StatusTypeDef HAL_MMC_RegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Callb… in HAL_MMC_RegisterCallback() argument
2057 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2062 __HAL_LOCK(hmmc); in HAL_MMC_RegisterCallback()
2064 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_RegisterCallback()
2069 hmmc->TxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
2072 hmmc->RxCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
2075 hmmc->ErrorCallback = pCallback; in HAL_MMC_RegisterCallback()
2078 hmmc->AbortCpltCallback = pCallback; in HAL_MMC_RegisterCallback()
2082 hmmc->Read_DMADblBuf0CpltCallback = pCallback; in HAL_MMC_RegisterCallback()
2085 hmmc->Read_DMADblBuf1CpltCallback = pCallback; in HAL_MMC_RegisterCallback()
2088 hmmc->Write_DMADblBuf0CpltCallback = pCallback; in HAL_MMC_RegisterCallback()
2091 hmmc->Write_DMADblBuf1CpltCallback = pCallback; in HAL_MMC_RegisterCallback()
2095 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2098 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2102 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2108 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_RegisterCallback()
2113 hmmc->MspInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2116 hmmc->MspDeInitCallback = pCallback; in HAL_MMC_RegisterCallback()
2120 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2129 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_RegisterCallback()
2135 __HAL_UNLOCK(hmmc); in HAL_MMC_RegisterCallback()
2157 HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_CallbackIDTypeDef Cal… in HAL_MMC_UnRegisterCallback() argument
2162 __HAL_LOCK(hmmc); in HAL_MMC_UnRegisterCallback()
2164 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_UnRegisterCallback()
2169 hmmc->TxCpltCallback = HAL_MMC_TxCpltCallback; in HAL_MMC_UnRegisterCallback()
2172 hmmc->RxCpltCallback = HAL_MMC_RxCpltCallback; in HAL_MMC_UnRegisterCallback()
2175 hmmc->ErrorCallback = HAL_MMC_ErrorCallback; in HAL_MMC_UnRegisterCallback()
2178 hmmc->AbortCpltCallback = HAL_MMC_AbortCallback; in HAL_MMC_UnRegisterCallback()
2182 hmmc->Read_DMADblBuf0CpltCallback = HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback; in HAL_MMC_UnRegisterCallback()
2185 hmmc->Read_DMADblBuf1CpltCallback = HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback; in HAL_MMC_UnRegisterCallback()
2188 hmmc->Write_DMADblBuf0CpltCallback = HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback; in HAL_MMC_UnRegisterCallback()
2191 hmmc->Write_DMADblBuf1CpltCallback = HAL_MMCEx_Write_DMADoubleBuffer1CpltCallback; in HAL_MMC_UnRegisterCallback()
2195 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
2198 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
2202 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2208 else if (hmmc->State == HAL_MMC_STATE_RESET) in HAL_MMC_UnRegisterCallback()
2213 hmmc->MspInitCallback = HAL_MMC_MspInit; in HAL_MMC_UnRegisterCallback()
2216 hmmc->MspDeInitCallback = HAL_MMC_MspDeInit; in HAL_MMC_UnRegisterCallback()
2220 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2229 hmmc->ErrorCode |= HAL_MMC_ERROR_INVALID_CALLBACK; in HAL_MMC_UnRegisterCallback()
2235 __HAL_UNLOCK(hmmc); in HAL_MMC_UnRegisterCallback()
2267 HAL_StatusTypeDef HAL_MMC_GetCardCID(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID) in HAL_MMC_GetCardCID() argument
2269 pCID->ManufacturerID = (uint8_t)((hmmc->CID[0] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2271 pCID->OEM_AppliID = (uint16_t)((hmmc->CID[0] & 0x00FFFF00U) >> 8U); in HAL_MMC_GetCardCID()
2273 pCID->ProdName1 = (((hmmc->CID[0] & 0x000000FFU) << 24U) | ((hmmc->CID[1] & 0xFFFFFF00U) >> 8U)); in HAL_MMC_GetCardCID()
2275 pCID->ProdName2 = (uint8_t)(hmmc->CID[1] & 0x000000FFU); in HAL_MMC_GetCardCID()
2277 pCID->ProdRev = (uint8_t)((hmmc->CID[2] & 0xFF000000U) >> 24U); in HAL_MMC_GetCardCID()
2279 pCID->ProdSN = (((hmmc->CID[2] & 0x00FFFFFFU) << 8U) | ((hmmc->CID[3] & 0xFF000000U) >> 24U)); in HAL_MMC_GetCardCID()
2281 pCID->Reserved1 = (uint8_t)((hmmc->CID[3] & 0x00F00000U) >> 20U); in HAL_MMC_GetCardCID()
2283 pCID->ManufactDate = (uint16_t)((hmmc->CID[3] & 0x000FFF00U) >> 8U); in HAL_MMC_GetCardCID()
2285 pCID->CID_CRC = (uint8_t)((hmmc->CID[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCID()
2300 HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD) in HAL_MMC_GetCardCSD() argument
2304 pCSD->CSDStruct = (uint8_t)((hmmc->CSD[0] & 0xC0000000U) >> 30U); in HAL_MMC_GetCardCSD()
2306 pCSD->SysSpecVersion = (uint8_t)((hmmc->CSD[0] & 0x3C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2308 pCSD->Reserved1 = (uint8_t)((hmmc->CSD[0] & 0x03000000U) >> 24U); in HAL_MMC_GetCardCSD()
2310 pCSD->TAAC = (uint8_t)((hmmc->CSD[0] & 0x00FF0000U) >> 16U); in HAL_MMC_GetCardCSD()
2312 pCSD->NSAC = (uint8_t)((hmmc->CSD[0] & 0x0000FF00U) >> 8U); in HAL_MMC_GetCardCSD()
2314 pCSD->MaxBusClkFrec = (uint8_t)(hmmc->CSD[0] & 0x000000FFU); in HAL_MMC_GetCardCSD()
2316 pCSD->CardComdClasses = (uint16_t)((hmmc->CSD[1] & 0xFFF00000U) >> 20U); in HAL_MMC_GetCardCSD()
2318 pCSD->RdBlockLen = (uint8_t)((hmmc->CSD[1] & 0x000F0000U) >> 16U); in HAL_MMC_GetCardCSD()
2320 pCSD->PartBlockRead = (uint8_t)((hmmc->CSD[1] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2322 pCSD->WrBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2324 pCSD->RdBlockMisalign = (uint8_t)((hmmc->CSD[1] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2326 pCSD->DSRImpl = (uint8_t)((hmmc->CSD[1] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2330 if(MMC_ReadExtCSD(hmmc, &block_nbr, 212, 0x0FFFFFFFU) != HAL_OK) /* Field SEC_COUNT [215:212] */ in HAL_MMC_GetCardCSD()
2335 if(hmmc->MmcCard.CardType == MMC_LOW_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2337 … pCSD->DeviceSize = (((hmmc->CSD[1] & 0x000003FFU) << 2U) | ((hmmc->CSD[2] & 0xC0000000U) >> 30U)); in HAL_MMC_GetCardCSD()
2339 pCSD->MaxRdCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x38000000U) >> 27U); in HAL_MMC_GetCardCSD()
2341 pCSD->MaxRdCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x07000000U) >> 24U); in HAL_MMC_GetCardCSD()
2343 pCSD->MaxWrCurrentVDDMin = (uint8_t)((hmmc->CSD[2] & 0x00E00000U) >> 21U); in HAL_MMC_GetCardCSD()
2345 pCSD->MaxWrCurrentVDDMax = (uint8_t)((hmmc->CSD[2] & 0x001C0000U) >> 18U); in HAL_MMC_GetCardCSD()
2347 pCSD->DeviceSizeMul = (uint8_t)((hmmc->CSD[2] & 0x00038000U) >> 15U); in HAL_MMC_GetCardCSD()
2349 hmmc->MmcCard.BlockNbr = (pCSD->DeviceSize + 1U) ; in HAL_MMC_GetCardCSD()
2350 hmmc->MmcCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); in HAL_MMC_GetCardCSD()
2351 hmmc->MmcCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); in HAL_MMC_GetCardCSD()
2353 hmmc->MmcCard.LogBlockNbr = (hmmc->MmcCard.BlockNbr) * ((hmmc->MmcCard.BlockSize) / 512U); in HAL_MMC_GetCardCSD()
2354 hmmc->MmcCard.LogBlockSize = 512U; in HAL_MMC_GetCardCSD()
2356 else if(hmmc->MmcCard.CardType == MMC_HIGH_CAPACITY_CARD) in HAL_MMC_GetCardCSD()
2358 hmmc->MmcCard.BlockNbr = block_nbr; in HAL_MMC_GetCardCSD()
2359 hmmc->MmcCard.LogBlockNbr = hmmc->MmcCard.BlockNbr; in HAL_MMC_GetCardCSD()
2360 hmmc->MmcCard.BlockSize = 512U; in HAL_MMC_GetCardCSD()
2361 hmmc->MmcCard.LogBlockSize = hmmc->MmcCard.BlockSize; in HAL_MMC_GetCardCSD()
2366 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardCSD()
2367 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_GetCardCSD()
2368 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardCSD()
2372 pCSD->EraseGrSize = (uint8_t)((hmmc->CSD[2] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2374 pCSD->EraseGrMul = (uint8_t)((hmmc->CSD[2] & 0x00003F80U) >> 7U); in HAL_MMC_GetCardCSD()
2376 pCSD->WrProtectGrSize = (uint8_t)(hmmc->CSD[2] & 0x0000007FU); in HAL_MMC_GetCardCSD()
2378 pCSD->WrProtectGrEnable = (uint8_t)((hmmc->CSD[3] & 0x80000000U) >> 31U); in HAL_MMC_GetCardCSD()
2380 pCSD->ManDeflECC = (uint8_t)((hmmc->CSD[3] & 0x60000000U) >> 29U); in HAL_MMC_GetCardCSD()
2382 pCSD->WrSpeedFact = (uint8_t)((hmmc->CSD[3] & 0x1C000000U) >> 26U); in HAL_MMC_GetCardCSD()
2384 pCSD->MaxWrBlockLen= (uint8_t)((hmmc->CSD[3] & 0x03C00000U) >> 22U); in HAL_MMC_GetCardCSD()
2386 pCSD->WriteBlockPaPartial = (uint8_t)((hmmc->CSD[3] & 0x00200000U) >> 21U); in HAL_MMC_GetCardCSD()
2390 pCSD->ContentProtectAppli = (uint8_t)((hmmc->CSD[3] & 0x00010000U) >> 16U); in HAL_MMC_GetCardCSD()
2392 pCSD->FileFormatGroup = (uint8_t)((hmmc->CSD[3] & 0x00008000U) >> 15U); in HAL_MMC_GetCardCSD()
2394 pCSD->CopyFlag = (uint8_t)((hmmc->CSD[3] & 0x00004000U) >> 14U); in HAL_MMC_GetCardCSD()
2396 pCSD->PermWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00002000U) >> 13U); in HAL_MMC_GetCardCSD()
2398 pCSD->TempWrProtect = (uint8_t)((hmmc->CSD[3] & 0x00001000U) >> 12U); in HAL_MMC_GetCardCSD()
2400 pCSD->FileFormat = (uint8_t)((hmmc->CSD[3] & 0x00000C00U) >> 10U); in HAL_MMC_GetCardCSD()
2402 pCSD->ECC= (uint8_t)((hmmc->CSD[3] & 0x00000300U) >> 8U); in HAL_MMC_GetCardCSD()
2404 pCSD->CSD_CRC = (uint8_t)((hmmc->CSD[3] & 0x000000FEU) >> 1U); in HAL_MMC_GetCardCSD()
2418 HAL_StatusTypeDef HAL_MMC_GetCardInfo(MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo) in HAL_MMC_GetCardInfo() argument
2420 pCardInfo->CardType = (uint32_t)(hmmc->MmcCard.CardType); in HAL_MMC_GetCardInfo()
2421 pCardInfo->Class = (uint32_t)(hmmc->MmcCard.Class); in HAL_MMC_GetCardInfo()
2422 pCardInfo->RelCardAdd = (uint32_t)(hmmc->MmcCard.RelCardAdd); in HAL_MMC_GetCardInfo()
2423 pCardInfo->BlockNbr = (uint32_t)(hmmc->MmcCard.BlockNbr); in HAL_MMC_GetCardInfo()
2424 pCardInfo->BlockSize = (uint32_t)(hmmc->MmcCard.BlockSize); in HAL_MMC_GetCardInfo()
2425 pCardInfo->LogBlockNbr = (uint32_t)(hmmc->MmcCard.LogBlockNbr); in HAL_MMC_GetCardInfo()
2426 pCardInfo->LogBlockSize = (uint32_t)(hmmc->MmcCard.LogBlockSize); in HAL_MMC_GetCardInfo()
2440 HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeou… in HAL_MMC_GetCardExtCSD() argument
2450 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_GetCardExtCSD()
2454 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetCardExtCSD()
2456 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in HAL_MMC_GetCardExtCSD()
2458 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetCardExtCSD()
2461 hmmc->Instance->DCTRL = 0; in HAL_MMC_GetCardExtCSD()
2477 (void)SDMMC_ConfigData(hmmc->Instance, &config); in HAL_MMC_GetCardExtCSD()
2479 __SDMMC_CMDTRANS_ENABLE( hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2483 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in HAL_MMC_GetCardExtCSD()
2487 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2488 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardExtCSD()
2489 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2494 …while(!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | S… in HAL_MMC_GetCardExtCSD()
2496 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF)) in HAL_MMC_GetCardExtCSD()
2501 *tmp_buf = SDMMC_ReadFIFO(hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2509 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2510 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2511 hmmc->State= HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2517 __SDMMC_CMDTRANS_DISABLE( hmmc->Instance); in HAL_MMC_GetCardExtCSD()
2521 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in HAL_MMC_GetCardExtCSD()
2524 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2525 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in HAL_MMC_GetCardExtCSD()
2526 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2529 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in HAL_MMC_GetCardExtCSD()
2532 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2533 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in HAL_MMC_GetCardExtCSD()
2534 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2537 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in HAL_MMC_GetCardExtCSD()
2540 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_GetCardExtCSD()
2541 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in HAL_MMC_GetCardExtCSD()
2542 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2551 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_GetCardExtCSD()
2552 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetCardExtCSD()
2569 HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode) in HAL_MMC_ConfigWideBusOperation() argument
2580 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigWideBusOperation()
2584 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) in HAL_MMC_ConfigWideBusOperation()
2586 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) in HAL_MMC_ConfigWideBusOperation()
2588 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_DDR); in HAL_MMC_ConfigWideBusOperation()
2592 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_HIGH); in HAL_MMC_ConfigWideBusOperation()
2597 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, SDMMC_SPEED_MODE_DEFAULT); in HAL_MMC_ConfigWideBusOperation()
2600 errorstate = MMC_PwrClassUpdate(hmmc, WideMode, 0U); in HAL_MMC_ConfigWideBusOperation()
2607 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in HAL_MMC_ConfigWideBusOperation()
2611 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in HAL_MMC_ConfigWideBusOperation()
2615 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U); in HAL_MMC_ConfigWideBusOperation()
2630 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigWideBusOperation()
2637 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigWideBusOperation()
2652 Init = hmmc->Init; in HAL_MMC_ConfigWideBusOperation()
2654 (void)SDMMC_Init(hmmc->Instance, Init); in HAL_MMC_ConfigWideBusOperation()
2669 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigWideBusOperation()
2674 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigWideBusOperation()
2675 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigWideBusOperation()
2695 HAL_StatusTypeDef HAL_MMC_ConfigSpeedBusOperation(MMC_HandleTypeDef *hmmc, uint32_t SpeedMode) in HAL_MMC_ConfigSpeedBusOperation() argument
2706 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigSpeedBusOperation()
2709 device_type = (hmmc->Ext_CSD[49] & 0x000000FFU); in HAL_MMC_ConfigSpeedBusOperation()
2715 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS) != 0U) && ((device_type & 0x04U) != 0U)) in HAL_MMC_ConfigSpeedBusOperation()
2718 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2721 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2725 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_CLKDIV) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2728 errorstate = MMC_DDR_Mode(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2731 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2739 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2742 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2753 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS) != 0U) && ((device_type & 0x04U) != 0U)) in HAL_MMC_ConfigSpeedBusOperation()
2756 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2759 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2763 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_CLKDIV) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2766 errorstate = MMC_DDR_Mode(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2769 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2777 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_ConfigSpeedBusOperation()
2787 errorstate = MMC_HighSpeed(hmmc, ENABLE); in HAL_MMC_ConfigSpeedBusOperation()
2790 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2796 hmmc->ErrorCode |= HAL_MMC_ERROR_UNSUPPORTED_FEATURE; in HAL_MMC_ConfigSpeedBusOperation()
2803 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2806 errorstate = MMC_DDR_Mode(hmmc, DISABLE); in HAL_MMC_ConfigSpeedBusOperation()
2809 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2812 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) in HAL_MMC_ConfigSpeedBusOperation()
2815 errorstate = MMC_HighSpeed(hmmc, DISABLE); in HAL_MMC_ConfigSpeedBusOperation()
2818 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSpeedBusOperation()
2824 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_ConfigSpeedBusOperation()
2831 while ((HAL_MMC_GetCardState(hmmc) != HAL_MMC_CARD_TRANSFER)) in HAL_MMC_ConfigSpeedBusOperation()
2835 hmmc->ErrorCode = HAL_MMC_ERROR_TIMEOUT; in HAL_MMC_ConfigSpeedBusOperation()
2836 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSpeedBusOperation()
2842 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSpeedBusOperation()
2852 HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc) in HAL_MMC_GetCardState() argument
2858 errorstate = MMC_SendStatus(hmmc, &resp1); in HAL_MMC_GetCardState()
2861 hmmc->ErrorCode |= errorstate; in HAL_MMC_GetCardState()
2875 HAL_StatusTypeDef HAL_MMC_Abort(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort() argument
2880 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ in HAL_MMC_Abort()
2884 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort()
2887 if((hmmc->hdmatx != NULL) || (hmmc->hdmarx != NULL)) in HAL_MMC_Abort()
2890 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); in HAL_MMC_Abort()
2893 if(hmmc->hdmatx != NULL) in HAL_MMC_Abort()
2895 if(HAL_DMA_Abort(hmmc->hdmatx) != HAL_OK) in HAL_MMC_Abort()
2897 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_Abort()
2901 if(hmmc->hdmarx != NULL) in HAL_MMC_Abort()
2903 if(HAL_DMA_Abort(hmmc->hdmarx) != HAL_OK) in HAL_MMC_Abort()
2905 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in HAL_MMC_Abort()
2911 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_Abort()
2914 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort()
2917 hmmc->Context = MMC_CONTEXT_NONE; in HAL_MMC_Abort()
2919 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort()
2922 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort()
2924 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort()
2937 HAL_StatusTypeDef HAL_MMC_Abort_IT(MMC_HandleTypeDef *hmmc) in HAL_MMC_Abort_IT() argument
2942 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ in HAL_MMC_Abort_IT()
2947 hmmc->Instance->IDMACTRL = SDMMC_DISABLE_IDMA; in HAL_MMC_Abort_IT()
2951 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in HAL_MMC_Abort_IT()
2954 if((hmmc->hdmatx != NULL) || (hmmc->hdmarx != NULL)) in HAL_MMC_Abort_IT()
2957 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); in HAL_MMC_Abort_IT()
2960 if(hmmc->hdmatx != NULL) in HAL_MMC_Abort_IT()
2962 hmmc->hdmatx->XferAbortCallback = MMC_DMATxAbort; in HAL_MMC_Abort_IT()
2963 if(HAL_DMA_Abort_IT(hmmc->hdmatx) != HAL_OK) in HAL_MMC_Abort_IT()
2965 hmmc->hdmatx = NULL; in HAL_MMC_Abort_IT()
2969 if(hmmc->hdmarx != NULL) in HAL_MMC_Abort_IT()
2971 hmmc->hdmarx->XferAbortCallback = MMC_DMARxAbort; in HAL_MMC_Abort_IT()
2972 if(HAL_DMA_Abort_IT(hmmc->hdmarx) != HAL_OK) in HAL_MMC_Abort_IT()
2974 hmmc->hdmarx = NULL; in HAL_MMC_Abort_IT()
2980 if((hmmc->hdmatx == NULL) && (hmmc->hdmarx == NULL)) in HAL_MMC_Abort_IT()
2983 CardState = HAL_MMC_GetCardState(hmmc); in HAL_MMC_Abort_IT()
2984 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Abort_IT()
2988 hmmc->ErrorCode = SDMMC_CmdStopTransfer(hmmc->Instance); in HAL_MMC_Abort_IT()
2990 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in HAL_MMC_Abort_IT()
2997 hmmc->AbortCpltCallback(hmmc); in HAL_MMC_Abort_IT()
2999 HAL_MMC_AbortCallback(hmmc); in HAL_MMC_Abort_IT()
3027 HAL_StatusTypeDef HAL_MMC_EraseSequence(MMC_HandleTypeDef *hmmc, uint32_t EraseType, uint32_t Block… in HAL_MMC_EraseSequence() argument
3040 hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM; in HAL_MMC_EraseSequence()
3045 if(end_add > (hmmc->MmcCard.LogBlockNbr)) in HAL_MMC_EraseSequence()
3047 hmmc->ErrorCode |= HAL_MMC_ERROR_ADDR_OUT_OF_RANGE; in HAL_MMC_EraseSequence()
3052 if(((hmmc->MmcCard.Class) & SDMMC_CCCC_ERASE) == 0U) in HAL_MMC_EraseSequence()
3054 hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE; in HAL_MMC_EraseSequence()
3059 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_EraseSequence()
3062 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_EraseSequence()
3065 if((SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) in HAL_MMC_EraseSequence()
3067 hmmc->ErrorCode |= HAL_MMC_ERROR_LOCK_UNLOCK_FAILED; in HAL_MMC_EraseSequence()
3068 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_EraseSequence()
3073 if ((hmmc->MmcCard.CardType) != MMC_HIGH_CAPACITY_CARD) in HAL_MMC_EraseSequence()
3080 errorstate = SDMMC_CmdEraseStartAdd(hmmc->Instance, start_add); in HAL_MMC_EraseSequence()
3084 errorstate = SDMMC_CmdEraseEndAdd(hmmc->Instance, end_add); in HAL_MMC_EraseSequence()
3088 errorstate = SDMMC_CmdErase(hmmc->Instance, EraseType); in HAL_MMC_EraseSequence()
3094 … while((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_EraseSequence()
3103 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_EraseSequence()
3110 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_EraseSequence()
3116 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_EraseSequence()
3117 hmmc->ErrorCode |= errorstate; in HAL_MMC_EraseSequence()
3146 HAL_StatusTypeDef HAL_MMC_Sanitize(MMC_HandleTypeDef *hmmc) in HAL_MMC_Sanitize() argument
3152 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_Sanitize()
3155 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_Sanitize()
3158 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03A50100U); in HAL_MMC_Sanitize()
3162 while((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_Sanitize()
3171 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_Sanitize()
3179 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_Sanitize()
3186 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_Sanitize()
3211 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_Sanitize()
3217 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_Sanitize()
3218 hmmc->ErrorCode |= errorstate; in HAL_MMC_Sanitize()
3253 HAL_StatusTypeDef HAL_MMC_ConfigSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t SRTMode) in HAL_MMC_ConfigSecRemovalType() argument
3261 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_ConfigSecRemovalType()
3264 if(HAL_MMC_GetSupportedSecRemovalType(hmmc, &srt) == HAL_OK) in HAL_MMC_ConfigSecRemovalType()
3267 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_ConfigSecRemovalType()
3274 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03100000U | (srt << 8U))); in HAL_MMC_ConfigSecRemovalType()
3281 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_ConfigSecRemovalType()
3288 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_ConfigSecRemovalType()
3317 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_ConfigSecRemovalType()
3328 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_ConfigSecRemovalType()
3329 hmmc->ErrorCode |= errorstate; in HAL_MMC_ConfigSecRemovalType()
3354 HAL_StatusTypeDef HAL_MMC_GetSupportedSecRemovalType(MMC_HandleTypeDef *hmmc, uint32_t *SupportedSR… in HAL_MMC_GetSupportedSecRemovalType() argument
3357 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_GetSupportedSecRemovalType()
3360 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_GetSupportedSecRemovalType()
3363 *SupportedSRT = (hmmc->Ext_CSD[4] & 0x0000000FU); /* Bits [3:0] of field 16 */ in HAL_MMC_GetSupportedSecRemovalType()
3366 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_GetSupportedSecRemovalType()
3381 HAL_StatusTypeDef HAL_MMC_SleepDevice(MMC_HandleTypeDef *hmmc) in HAL_MMC_SleepDevice() argument
3387 if(hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_SleepDevice()
3390 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_SleepDevice()
3393 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220100U)); in HAL_MMC_SleepDevice()
3400 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_SleepDevice()
3407 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SleepDevice()
3426 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220400U)); in HAL_MMC_SleepDevice()
3430 …sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_SLEEP_NOTIFICATION_TIME_INDEX/4)] >> MMC_EXT_CSD_SLEE… in HAL_MMC_SleepDevice()
3437 … while((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SleepDevice()
3446 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SleepDevice()
3454 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_SleepDevice()
3461 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_SleepDevice()
3480 (void)SDMMC_CmdSelDesel(hmmc->Instance, 0U); in HAL_MMC_SleepDevice()
3483 …sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_S_A_TIMEOUT_INDEX/4)] >> MMC_EXT_CSD_S_A_TIMEOUT_POS)… in HAL_MMC_SleepDevice()
3489 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_STANDBY) in HAL_MMC_SleepDevice()
3492 …errorstate = SDMMC_CmdSleepMmc(hmmc->Instance, ((hmmc->MmcCard.RelCardAdd << 16U) | (0x1U << 15U))… in HAL_MMC_SleepDevice()
3496 … while((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_SleepDevice()
3505 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_SleepDevice()
3529 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_SleepDevice()
3535 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_SleepDevice()
3536 hmmc->ErrorCode |= errorstate; in HAL_MMC_SleepDevice()
3563 HAL_StatusTypeDef HAL_MMC_AwakeDevice(MMC_HandleTypeDef *hmmc) in HAL_MMC_AwakeDevice() argument
3569 if (hmmc->State == HAL_MMC_STATE_READY) in HAL_MMC_AwakeDevice()
3572 hmmc->State = HAL_MMC_STATE_BUSY; in HAL_MMC_AwakeDevice()
3575 …sleep_timeout = ((hmmc->Ext_CSD[(MMC_EXT_CSD_S_A_TIMEOUT_INDEX/4)] >> MMC_EXT_CSD_S_A_TIMEOUT_POS)… in HAL_MMC_AwakeDevice()
3582 errorstate = SDMMC_CmdSleepMmc(hmmc->Instance, (hmmc->MmcCard.RelCardAdd << 16U)); in HAL_MMC_AwakeDevice()
3586 … while ((!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_BUSYD0END)) && (errorstate == HAL_MMC_ERROR_NONE)) in HAL_MMC_AwakeDevice()
3595 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_FLAG_BUSYD0END); in HAL_MMC_AwakeDevice()
3599 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_STANDBY) in HAL_MMC_AwakeDevice()
3602 …errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << … in HAL_MMC_AwakeDevice()
3605 if (HAL_MMC_GetCardState(hmmc) == HAL_MMC_CARD_TRANSFER) in HAL_MMC_AwakeDevice()
3608 errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03220100U)); in HAL_MMC_AwakeDevice()
3615 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in HAL_MMC_AwakeDevice()
3622 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in HAL_MMC_AwakeDevice()
3659 hmmc->State = HAL_MMC_STATE_READY; in HAL_MMC_AwakeDevice()
3665 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in HAL_MMC_AwakeDevice()
3666 hmmc->ErrorCode |= errorstate; in HAL_MMC_AwakeDevice()
3710 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMATransmitCplt() local
3713 __HAL_MMC_ENABLE_IT(hmmc, (SDMMC_IT_DATAEND)); in MMC_DMATransmitCplt()
3723 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMAReceiveCplt() local
3727 if(hmmc->Context == (MMC_CONTEXT_READ_MULTIPLE_BLOCK | MMC_CONTEXT_DMA)) in MMC_DMAReceiveCplt()
3729 errorstate = SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMAReceiveCplt()
3732 hmmc->ErrorCode |= errorstate; in MMC_DMAReceiveCplt()
3734 hmmc->ErrorCallback(hmmc); in MMC_DMAReceiveCplt()
3736 HAL_MMC_ErrorCallback(hmmc); in MMC_DMAReceiveCplt()
3743 hmmc->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); in MMC_DMAReceiveCplt()
3746 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in MMC_DMAReceiveCplt()
3748 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMAReceiveCplt()
3749 hmmc->Context = MMC_CONTEXT_NONE; in MMC_DMAReceiveCplt()
3752 hmmc->RxCpltCallback(hmmc); in MMC_DMAReceiveCplt()
3754 HAL_MMC_RxCpltCallback(hmmc); in MMC_DMAReceiveCplt()
3765 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMAError() local
3769 RxErrorCode = hmmc->hdmarx->ErrorCode; in MMC_DMAError()
3770 TxErrorCode = hmmc->hdmatx->ErrorCode; in MMC_DMAError()
3774 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_DMAError()
3777 __HAL_MMC_DISABLE_IT(hmmc, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ in MMC_DMAError()
3780 hmmc->ErrorCode |= HAL_MMC_ERROR_DMA; in MMC_DMAError()
3781 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMAError()
3784 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMAError()
3787 hmmc->State= HAL_MMC_STATE_READY; in MMC_DMAError()
3788 hmmc->Context = MMC_CONTEXT_NONE; in MMC_DMAError()
3792 hmmc->ErrorCallback(hmmc); in MMC_DMAError()
3794 HAL_MMC_ErrorCallback(hmmc); in MMC_DMAError()
3805 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMATxAbort() local
3808 if(hmmc->hdmatx != NULL) in MMC_DMATxAbort()
3810 hmmc->hdmatx = NULL; in MMC_DMATxAbort()
3814 if(hmmc->hdmarx == NULL) in MMC_DMATxAbort()
3816 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMATxAbort()
3817 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_DMATxAbort()
3818 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMATxAbort()
3819 hmmc->Context = MMC_CONTEXT_NONE; in MMC_DMATxAbort()
3822 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMATxAbort()
3824 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in MMC_DMATxAbort()
3827 hmmc->AbortCpltCallback(hmmc); in MMC_DMATxAbort()
3829 HAL_MMC_AbortCallback(hmmc); in MMC_DMATxAbort()
3835 hmmc->ErrorCallback(hmmc); in MMC_DMATxAbort()
3837 HAL_MMC_ErrorCallback(hmmc); in MMC_DMATxAbort()
3851 MMC_HandleTypeDef* hmmc = (MMC_HandleTypeDef* )(hdma->Parent); in MMC_DMARxAbort() local
3854 if(hmmc->hdmarx != NULL) in MMC_DMARxAbort()
3856 hmmc->hdmarx = NULL; in MMC_DMARxAbort()
3860 if(hmmc->hdmatx == NULL) in MMC_DMARxAbort()
3862 CardState = HAL_MMC_GetCardState(hmmc); in MMC_DMARxAbort()
3863 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_DMARxAbort()
3864 hmmc->State = HAL_MMC_STATE_READY; in MMC_DMARxAbort()
3865 hmmc->Context = MMC_CONTEXT_NONE; in MMC_DMARxAbort()
3868 hmmc->ErrorCode |= SDMMC_CmdStopTransfer(hmmc->Instance); in MMC_DMARxAbort()
3870 if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE) in MMC_DMARxAbort()
3873 hmmc->AbortCpltCallback(hmmc); in MMC_DMARxAbort()
3875 HAL_MMC_AbortCallback(hmmc); in MMC_DMARxAbort()
3881 hmmc->ErrorCallback(hmmc); in MMC_DMARxAbort()
3883 HAL_MMC_ErrorCallback(hmmc); in MMC_DMARxAbort()
3896 static uint32_t MMC_InitCard(MMC_HandleTypeDef *hmmc) in MMC_InitCard() argument
3904 if(SDMMC_GetPowerState(hmmc->Instance) == 0U) in MMC_InitCard()
3911 errorstate = SDMMC_CmdSendCID(hmmc->Instance); in MMC_InitCard()
3919 hmmc->CID[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
3920 hmmc->CID[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
3921 hmmc->CID[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
3922 hmmc->CID[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
3927 errorstate = SDMMC_CmdSetRelAddMmc(hmmc->Instance, mmc_rca); in MMC_InitCard()
3934 hmmc->MmcCard.RelCardAdd = mmc_rca; in MMC_InitCard()
3937 errorstate = SDMMC_CmdSendCSD(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_InitCard()
3945 hmmc->CSD[0U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_InitCard()
3946 hmmc->CSD[1U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2); in MMC_InitCard()
3947 hmmc->CSD[2U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP3); in MMC_InitCard()
3948 hmmc->CSD[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4); in MMC_InitCard()
3952 hmmc->MmcCard.Class = (SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2) >> 20U); in MMC_InitCard()
3955 …errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << … in MMC_InitCard()
3962 if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK) in MMC_InitCard()
3964 return hmmc->ErrorCode; in MMC_InitCard()
3968 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
3971 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
3975 if (HAL_MMC_GetCardExtCSD(hmmc, hmmc->Ext_CSD, SDMMC_DATATIMEOUT) != HAL_OK) in MMC_InitCard()
3977 return hmmc->ErrorCode; in MMC_InitCard()
3981 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_InitCard()
3984 hmmc->ErrorCode |= errorstate; in MMC_InitCard()
3988 Init = hmmc->Init; in MMC_InitCard()
3990 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_InitCard()
4003 static uint32_t MMC_PowerON(MMC_HandleTypeDef *hmmc) in MMC_PowerON() argument
4010 errorstate = SDMMC_CmdGoIdleState(hmmc->Instance); in MMC_PowerON()
4024 errorstate = SDMMC_CmdOpCondition(hmmc->Instance, MMC_VOLTAGE_RANGE); in MMC_PowerON()
4031 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PowerON()
4040 hmmc->MmcCard.CardType = MMC_HIGH_CAPACITY_CARD; in MMC_PowerON()
4044 hmmc->MmcCard.CardType = MMC_LOW_CAPACITY_CARD; in MMC_PowerON()
4055 static void MMC_PowerOFF(MMC_HandleTypeDef *hmmc) in MMC_PowerOFF() argument
4058 (void)SDMMC_PowerState_OFF(hmmc->Instance); in MMC_PowerOFF()
4068 static uint32_t MMC_SendStatus(MMC_HandleTypeDef *hmmc, uint32_t *pCardStatus) in MMC_SendStatus() argument
4078 errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(hmmc->MmcCard.RelCardAdd << 16U)); in MMC_SendStatus()
4085 *pCardStatus = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_SendStatus()
4098 static HAL_StatusTypeDef MMC_ReadExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pFieldData, uint16_t Fie… in MMC_ReadExtCSD() argument
4107 hmmc->ErrorCode = HAL_MMC_ERROR_NONE; in MMC_ReadExtCSD()
4110 hmmc->Instance->DCTRL = 0; in MMC_ReadExtCSD()
4119 (void)SDMMC_ConfigData(hmmc->Instance, &config); in MMC_ReadExtCSD()
4122 errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0); in MMC_ReadExtCSD()
4126 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
4127 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
4128 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
4133 …while(!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | S… in MMC_ReadExtCSD()
4135 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF)) in MMC_ReadExtCSD()
4140 tmp_data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_ReadExtCSD()
4154 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
4155 hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT; in MMC_ReadExtCSD()
4156 hmmc->State= HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
4162 if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT)) in MMC_ReadExtCSD()
4165 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
4166 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT; in MMC_ReadExtCSD()
4167 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
4170 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL)) in MMC_ReadExtCSD()
4173 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
4174 hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL; in MMC_ReadExtCSD()
4175 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
4178 else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR)) in MMC_ReadExtCSD()
4181 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS); in MMC_ReadExtCSD()
4182 hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN; in MMC_ReadExtCSD()
4183 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
4192 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_ReadExtCSD()
4195 hmmc->ErrorCode |= errorstate; in MMC_ReadExtCSD()
4199 __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS); in MMC_ReadExtCSD()
4201 hmmc->State = HAL_MMC_STATE_READY; in MMC_ReadExtCSD()
4212 static void MMC_Read_IT(MMC_HandleTypeDef *hmmc) in MMC_Read_IT() argument
4217 tmp = hmmc->pRxBuffPtr; in MMC_Read_IT()
4218 dataremaining = hmmc->RxXferSize; in MMC_Read_IT()
4225 data = SDMMC_ReadFIFO(hmmc->Instance); in MMC_Read_IT()
4240 hmmc->pRxBuffPtr = tmp; in MMC_Read_IT()
4241 hmmc->RxXferSize = dataremaining; in MMC_Read_IT()
4251 static void MMC_Write_IT(MMC_HandleTypeDef *hmmc) in MMC_Write_IT() argument
4256 tmp = hmmc->pTxBuffPtr; in MMC_Write_IT()
4257 dataremaining = hmmc->TxXferSize; in MMC_Write_IT()
4276 (void)SDMMC_WriteFIFO(hmmc->Instance, &data); in MMC_Write_IT()
4279 hmmc->pTxBuffPtr = tmp; in MMC_Write_IT()
4280 hmmc->TxXferSize = dataremaining; in MMC_Write_IT()
4291 static uint32_t MMC_HighSpeed(MMC_HandleTypeDef *hmmc, FunctionalState state) in MMC_HighSpeed() argument
4298 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) != 0U) && (state == DISABLE)) in MMC_HighSpeed()
4300 …errorstate = MMC_PwrClassUpdate(hmmc, (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS), SDMMC_SPEED_MO… in MMC_HighSpeed()
4304 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B90000U); in MMC_HighSpeed()
4308 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_BUSSPEED) == 0U) && (state != DISABLE)) in MMC_HighSpeed()
4310 …errorstate = MMC_PwrClassUpdate(hmmc, (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS), SDMMC_SPEED_MO… in MMC_HighSpeed()
4314 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B90100U); in MMC_HighSpeed()
4324 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_HighSpeed()
4331 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_HighSpeed()
4346 Init.ClockEdge = hmmc->Init.ClockEdge; in MMC_HighSpeed()
4347 Init.ClockPowerSave = hmmc->Init.ClockPowerSave; in MMC_HighSpeed()
4348 Init.BusWide = (hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS); in MMC_HighSpeed()
4349 Init.HardwareFlowControl = hmmc->Init.HardwareFlowControl; in MMC_HighSpeed()
4353 Init.ClockDiv = hmmc->Init.ClockDiv; in MMC_HighSpeed()
4354 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_HighSpeed()
4356 CLEAR_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED); in MMC_HighSpeed()
4376 (void)SDMMC_Init(hmmc->Instance, Init); in MMC_HighSpeed()
4378 SET_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_BUSSPEED); in MMC_HighSpeed()
4402 static uint32_t MMC_DDR_Mode(MMC_HandleTypeDef *hmmc, FunctionalState state) in MMC_DDR_Mode() argument
4407 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) != 0U) && (state == DISABLE)) in MMC_DDR_Mode()
4409 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS_0) != 0U) in MMC_DDR_Mode()
4411 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_4B, SDMMC_SPEED_MODE_HIGH); in MMC_DDR_Mode()
4415 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U); in MMC_DDR_Mode()
4420 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_8B, SDMMC_SPEED_MODE_HIGH); in MMC_DDR_Mode()
4424 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U); in MMC_DDR_Mode()
4429 if (((hmmc->Instance->CLKCR & SDMMC_CLKCR_DDR) == 0U) && (state != DISABLE)) in MMC_DDR_Mode()
4431 if ((hmmc->Instance->CLKCR & SDMMC_CLKCR_WIDBUS_0) != 0U) in MMC_DDR_Mode()
4433 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_4B, SDMMC_SPEED_MODE_DDR); in MMC_DDR_Mode()
4437 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70500U); in MMC_DDR_Mode()
4442 errorstate = MMC_PwrClassUpdate(hmmc, SDMMC_BUS_WIDE_8B, SDMMC_SPEED_MODE_DDR); in MMC_DDR_Mode()
4446 errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70600U); in MMC_DDR_Mode()
4457 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_DDR_Mode()
4464 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_DDR_Mode()
4483 CLEAR_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_DDR); in MMC_DDR_Mode()
4487 SET_BIT(hmmc->Instance->CLKCR, SDMMC_CLKCR_DDR); in MMC_DDR_Mode()
4513 static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide, uint32_t Speed) in MMC_PwrClassUpdate() argument
4525 …if(MMC_ReadExtCSD(hmmc, &power_class, 187, SDMMC_DATATIMEOUT) != HAL_OK) /* Field POWER_CLASS [187… in MMC_PwrClassUpdate()
4539 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_DDR_52_INDEX/4)] >> MMC_EXT_CSD_PWR_CL_D… in MMC_PwrClassUpdate()
4544 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_52_INDEX/4)] >> MMC_EXT_CSD_PWR_CL_52_PO… in MMC_PwrClassUpdate()
4552 …supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_26_INDEX/4)] >> MMC_EXT_CSD_PWR_CL_26_PO… in MMC_PwrClassUpdate()
4566 …errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03BB0000U | ((supported_pwr_class & 0x0FU) << 8U))… in MMC_PwrClassUpdate()
4574 …errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) <… in MMC_PwrClassUpdate()
4581 response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1); in MMC_PwrClassUpdate()