116 lines
4.3 KiB
C
116 lines
4.3 KiB
C
/*
|
|
* Copyright 2021 NXP
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include "sdmmc_config.h"
|
|
/*******************************************************************************
|
|
* Definitions
|
|
******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
* Prototypes
|
|
******************************************************************************/
|
|
/*******************************************************************************
|
|
* Variables
|
|
******************************************************************************/
|
|
/*!brief sdmmc dma buffer */
|
|
SDK_ALIGN(uint32_t s_sdmmcHostDmaBuffer[BOARD_SDMMC_HOST_DMA_DESCRIPTOR_BUFFER_SIZE],
|
|
SDMMCHOST_DMA_DESCRIPTOR_BUFFER_ALIGN_SIZE);
|
|
#if defined(SDIO_ENABLED) || defined(SD_ENABLED)
|
|
static sd_detect_card_t s_cd;
|
|
#endif
|
|
static sdmmchost_t s_host;
|
|
#ifdef SDIO_ENABLED
|
|
sdio_card_int_t s_sdioInt;
|
|
#endif
|
|
|
|
/*******************************************************************************
|
|
* Code
|
|
******************************************************************************/
|
|
void Board_InitSdifUnusedDataPin(void)
|
|
{
|
|
}
|
|
|
|
uint32_t BOARD_SDIF0ClockConfiguration(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
#ifdef SD_ENABLED
|
|
void BOARD_SD_Config(void *card, sd_cd_t cd, uint32_t hostIRQPriority, void *userData)
|
|
{
|
|
assert(card);
|
|
|
|
s_host.dmaDesBuffer = s_sdmmcHostDmaBuffer;
|
|
s_host.dmaDesBufferWordsNum = BOARD_SDMMC_HOST_DMA_DESCRIPTOR_BUFFER_SIZE;
|
|
((sd_card_t *)card)->host = &s_host;
|
|
((sd_card_t *)card)->host->hostController.base = BOARD_SDMMC_SD_HOST_BASEADDR;
|
|
((sd_card_t *)card)->host->hostController.sourceClock_Hz = BOARD_SDIF0ClockConfiguration();
|
|
|
|
((sd_card_t *)card)->usrParam.cd = &s_cd;
|
|
|
|
/* This function is used to init the SDIF unused data pin, DATA4 - DATA7, these pin should be configured
|
|
* ,otherswise the SDIF will not work, please check the corresponding errata.
|
|
*/
|
|
Board_InitSdifUnusedDataPin();
|
|
|
|
NVIC_SetPriority(BOARD_SDMMC_SD_HOST_IRQ, hostIRQPriority);
|
|
}
|
|
#endif
|
|
|
|
#ifdef SDIO_ENABLED
|
|
void BOARD_SDIO_Config(void *card, sd_cd_t cd, uint32_t hostIRQPriority, sdio_int_t cardInt)
|
|
{
|
|
assert(card);
|
|
|
|
s_host.dmaDesBuffer = s_sdmmcHostDmaBuffer;
|
|
s_host.dmaDesBufferWordsNum = BOARD_SDMMC_HOST_DMA_DESCRIPTOR_BUFFER_SIZE;
|
|
((sdio_card_t *)card)->host = &s_host;
|
|
((sdio_card_t *)card)->host->hostController.base = BOARD_SDMMC_SDIO_HOST_BASEADDR;
|
|
((sdio_card_t *)card)->host->hostController.sourceClock_Hz = BOARD_SDIF0ClockConfiguration();
|
|
|
|
((sdio_card_t *)card)->usrParam.cd = &s_cd;
|
|
if (cardInt != NULL)
|
|
{
|
|
s_sdioInt.cardInterrupt = cardInt;
|
|
((sdio_card_t *)card)->usrParam.sdioInt = &s_sdioInt;
|
|
}
|
|
|
|
/* This function is used to init the SDIF unused data pin, DATA4 - DATA7, these pin should be configured
|
|
* ,otherswise the SDIF will not work, please check the corresponding errata.
|
|
*/
|
|
Board_InitSdifUnusedDataPin();
|
|
|
|
BOARD_SDCardDetectInit(cd, NULL);
|
|
|
|
NVIC_SetPriority(BOARD_SDMMC_SDIO_HOST_IRQ, hostIRQPriority);
|
|
}
|
|
#endif
|
|
|
|
#ifdef MMC_ENABLED
|
|
void BOARD_MMC_Config(void *card, uint32_t hostIRQPriority)
|
|
|
|
{
|
|
assert(card);
|
|
|
|
s_host.dmaDesBuffer = s_sdmmcHostDmaBuffer;
|
|
s_host.dmaDesBufferWordsNum = BOARD_SDMMC_HOST_DMA_DESCRIPTOR_BUFFER_SIZE;
|
|
((mmc_card_t *)card)->host = &s_host;
|
|
((mmc_card_t *)card)->host->hostController.base = BOARD_SDMMC_MMC_HOST_BASEADDR;
|
|
((mmc_card_t *)card)->host->hostController.sourceClock_Hz = BOARD_SDIF0ClockConfiguration();
|
|
|
|
((mmc_card_t *)card)->hostVoltageWindowVCC = BOARD_SDMMC_MMC_VCC_SUPPLY;
|
|
((mmc_card_t *)card)->hostVoltageWindowVCCQ = BOARD_SDMMC_MMC_VCCQ_SUPPLY;
|
|
|
|
/* This function is used to init the SDIF unused data pin, DATA4 - DATA7, these pin should be configured
|
|
* ,otherswise the SDIF will not work, please check the corresponding errata.
|
|
*/
|
|
Board_InitSdifUnusedDataPin();
|
|
|
|
NVIC_SetPriority(BOARD_SDMMC_MMC_HOST_IRQ, hostIRQPriority);
|
|
}
|
|
#endif
|