MCUXpresso SDK API Reference Manual  Rev 2.16.000
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
SDIF HOST Adapter Driver

Overview

The SDIF host adapter driver provide adapter for blocking/non_blocking mode.

Data Structures

struct  _sdmmchost_
 sdmmc host handler More...
 

Macros

#define FSL_SDMMC_HOST_ADAPTER_VERSION   (MAKE_VERSION(2U, 4U, 0U)) /*2.4.0*/
 Middleware adapter version. More...
 
#define SDMMCHOST_SUPPORT_HIGH_SPEED   (1U)
 host capability
 
#define SDMMCHOST_INSTANCE_SUPPORT_8_BIT_WIDTH(host)   1U
 sdmmc host instance capability
 
#define SDMMCHOST_DMA_DESCRIPTOR_BUFFER_ALIGN_SIZE   (4U)
 SDMMC host dma descriptor buffer address align size.
 
#define SDMMCHOST_RESET_TIMEOUT_VALUE   (1000000U)
 SDMMC host reset timoue value.
 

Typedefs

typedef sdif_transfer_t sdmmchost_transfer_t
 sdmmc host transfer function
 
typedef struct _sdmmchost_ sdmmchost_t
 sdmmc host handler
 

Enumerations

enum  {
  kSDMMCHOST_SupportHighSpeed = 1U << 0U,
  kSDMMCHOST_SupportSuspendResume = 1U << 1U,
  kSDMMCHOST_SupportVoltage3v3 = 1U << 2U,
  kSDMMCHOST_SupportVoltage3v0 = 1U << 3U,
  kSDMMCHOST_SupportVoltage1v8 = 1U << 4U,
  kSDMMCHOST_SupportVoltage1v2 = 1U << 5U,
  kSDMMCHOST_Support4BitDataWidth = 1U << 6U,
  kSDMMCHOST_Support8BitDataWidth = 1U << 7U,
  kSDMMCHOST_SupportDDRMode = 1U << 8U,
  kSDMMCHOST_SupportDetectCardByData3 = 1U << 9U,
  kSDMMCHOST_SupportDetectCardByCD = 1U << 10U,
  kSDMMCHOST_SupportAutoCmd12 = 1U << 11U,
  kSDMMCHOST_SupportSDR104 = 1U << 12U,
  kSDMMCHOST_SupportSDR50 = 1U << 13U,
  kSDMMCHOST_SupportHS200 = 1U << 14U,
  kSDMMCHOST_SupportHS400 = 1U << 15U
}
 sdmmc host capability More...
 
enum  _sdmmchost_endian_mode {
  kSDMMCHOST_EndianModeBig = 0U,
  kSDMMCHOST_EndianModeHalfWordBig = 1U,
  kSDMMCHOST_EndianModeLittle = 2U
}
 host Endian mode corresponding to driver define More...
 

SDIF host controller function

void SDMMCHOST_SetCardBusWidth (sdmmchost_t *host, uint32_t dataBusWidth)
 set data bus width. More...
 
static void SDMMCHOST_SendCardActive (sdmmchost_t *host)
 Send initilization active 80 clocks to card. More...
 
static uint32_t SDMMCHOST_SetCardClock (sdmmchost_t *host, uint32_t targetClock)
 Set card bus clock. More...
 
static bool SDMMCHOST_IsCardBusy (sdmmchost_t *host)
 check card status by DATA0. More...
 
static status_t SDMMCHOST_StartBoot (sdmmchost_t *host, sdmmchost_boot_config_t *hostConfig, sdmmchost_cmd_t *cmd, uint8_t *buffer)
 start read boot data. More...
 
static status_t SDMMCHOST_ReadBootData (sdmmchost_t *host, sdmmchost_boot_config_t *hostConfig, uint8_t *buffer)
 read boot data. More...
 
static void SDMMCHOST_EnableBoot (sdmmchost_t *host, bool enable)
 enable boot mode. More...
 
static void SDMMCHOST_EnableCardInt (sdmmchost_t *host, bool enable)
 enable card interrupt. More...
 
status_t SDMMCHOST_CardIntInit (sdmmchost_t *host, void *sdioInt)
 card interrupt function. More...
 
status_t SDMMCHOST_CardDetectInit (sdmmchost_t *host, void *cd)
 card detect init function. More...
 
status_t SDMMCHOST_PollingCardDetectStatus (sdmmchost_t *host, uint32_t waitCardStatus, uint32_t timeout)
 Detect card insert, only need for SD cases. More...
 
uint32_t SDMMCHOST_CardDetectStatus (sdmmchost_t *host)
 card detect status. More...
 
status_t SDMMCHOST_Init (sdmmchost_t *host)
 Init host controller. More...
 
void SDMMCHOST_Deinit (sdmmchost_t *host)
 Deinit host controller. More...
 
void SDMMCHOST_SetCardPower (sdmmchost_t *host, bool enable)
 host power off card function. More...
 
status_t SDMMCHOST_TransferFunction (sdmmchost_t *host, sdmmchost_transfer_t *content)
 host transfer function. More...
 
void SDMMCHOST_Reset (sdmmchost_t *host)
 host reset function. More...
 
static void SDMMCHOST_SwitchToVoltage (sdmmchost_t *host, uint32_t voltage)
 switch to voltage. More...
 
static status_t SDMMCHOST_ExecuteTuning (sdmmchost_t *host, uint32_t tuningCmd, uint32_t *revBuf, uint32_t blockSize)
 sdmmc host excute tuning. More...
 
static void SDMMCHOST_EnableDDRMode (sdmmchost_t *host, bool enable, uint32_t nibblePos)
 enable DDR mode. More...
 
static void SDMMCHOST_EnableHS400Mode (sdmmchost_t *host, bool enable)
 enable HS400 mode. More...
 
static void SDMMCHOST_EnableStrobeDll (sdmmchost_t *host, bool enable)
 enable STROBE DLL. More...
 
static uint32_t SDMMCHOST_GetSignalLineStatus (sdmmchost_t *host, uint32_t signalLine)
 Get signal line status. More...
 
static void SDMMCHOST_ForceClockOn (sdmmchost_t *host, bool enable)
 force card clock on. More...
 
void SDMMCHOST_ConvertDataToLittleEndian (sdmmchost_t *host, uint32_t *data, uint32_t wordSize, uint32_t format)
 sdmmc host convert data sequence to little endian sequence More...
 

Data Structure Documentation

struct _sdmmchost_

Data Fields

sdif_host_t hostController
 host configuration
 
uint8_t hostPort
 host port number, used for one instance support two card
 
void * dmaDesBuffer
 DMA descriptor buffer address.
 
uint32_t dmaDesBufferWordsNum
 DMA descriptor buffer size in byte.
 
sdif_handle_t handle
 host controller handler
 
uint32_t capability
 host controller capability
 
uint32_t maxBlockCount
 host controller maximum block count
 
uint32_t maxBlockSize
 host controller maximum block size
 
sdmmc_osa_event_t hostEvent
 host event handler
 
void * cd
 card detect
 
void * cardInt
 call back function for card interrupt
 
sdmmc_osa_mutex_t lock
 host access lock
 

Macro Definition Documentation

#define FSL_SDMMC_HOST_ADAPTER_VERSION   (MAKE_VERSION(2U, 4U, 0U)) /*2.4.0*/

Enumeration Type Documentation

anonymous enum
Enumerator
kSDMMCHOST_SupportHighSpeed 

high speed capability

kSDMMCHOST_SupportSuspendResume 

suspend resume capability

kSDMMCHOST_SupportVoltage3v3 

3V3 capability

kSDMMCHOST_SupportVoltage3v0 

3V0 capability

kSDMMCHOST_SupportVoltage1v8 

1V8 capability

kSDMMCHOST_SupportVoltage1v2 

1V2 capability

kSDMMCHOST_Support4BitDataWidth 

4 bit data width capability

kSDMMCHOST_Support8BitDataWidth 

8 bit data width capability

kSDMMCHOST_SupportDDRMode 

DDR mode capability.

kSDMMCHOST_SupportDetectCardByData3 

data3 detect card capability

kSDMMCHOST_SupportDetectCardByCD 

CD detect card capability.

kSDMMCHOST_SupportAutoCmd12 

auto command 12 capability

kSDMMCHOST_SupportSDR104 

SDR104 capability.

kSDMMCHOST_SupportSDR50 

SDR50 capability.

kSDMMCHOST_SupportHS200 

HS200 capability.

kSDMMCHOST_SupportHS400 

HS400 capability.

Enumerator
kSDMMCHOST_EndianModeBig 

Big endian mode.

kSDMMCHOST_EndianModeHalfWordBig 

Half word big endian mode.

kSDMMCHOST_EndianModeLittle 

Little endian mode.

Function Documentation

void SDMMCHOST_SetCardBusWidth ( sdmmchost_t host,
uint32_t  dataBusWidth 
)
Parameters
hosthost handler
dataBusWidthdata bus width
static void SDMMCHOST_SendCardActive ( sdmmchost_t host)
inlinestatic
Parameters
hosthost handler
static uint32_t SDMMCHOST_SetCardClock ( sdmmchost_t host,
uint32_t  targetClock 
)
inlinestatic
Parameters
hosthost handler
targetClocktarget clock frequency
Return values
actualclock frequency can be reach.
static bool SDMMCHOST_IsCardBusy ( sdmmchost_t host)
inlinestatic
Parameters
hosthost handler
Return values
trueis busy, false is idle.
static status_t SDMMCHOST_StartBoot ( sdmmchost_t host,
sdmmchost_boot_config_t *  hostConfig,
sdmmchost_cmd_t cmd,
uint8_t *  buffer 
)
inlinestatic
Parameters
hosthost handler
hostConfigboot configuration
cmdboot command
bufferbuffer address
static status_t SDMMCHOST_ReadBootData ( sdmmchost_t host,
sdmmchost_boot_config_t *  hostConfig,
uint8_t *  buffer 
)
inlinestatic
Parameters
hosthost handler
hostConfigboot configuration
bufferbuffer address
static void SDMMCHOST_EnableBoot ( sdmmchost_t host,
bool  enable 
)
inlinestatic
Parameters
hosthost handler
enabletrue is enable, false is disable
static void SDMMCHOST_EnableCardInt ( sdmmchost_t host,
bool  enable 
)
inlinestatic
Parameters
hosthost handler
enabletrue is enable, false is disable.
status_t SDMMCHOST_CardIntInit ( sdmmchost_t host,
void *  sdioInt 
)
Parameters
hosthost handler
sdioIntcard interrupt configuration
status_t SDMMCHOST_CardDetectInit ( sdmmchost_t host,
void *  cd 
)
Parameters
hosthost handler
cdcard detect configuration
status_t SDMMCHOST_PollingCardDetectStatus ( sdmmchost_t host,
uint32_t  waitCardStatus,
uint32_t  timeout 
)
Parameters
hosthost handler
waitCardStatusstatus which user want to wait
timeoutwait time out.
Return values
kStatus_Successdetect card insert
kStatus_Failcard insert event fail
uint32_t SDMMCHOST_CardDetectStatus ( sdmmchost_t host)
Parameters
hosthost handler
Return values
kSD_Inserted,kSD_Removed
status_t SDMMCHOST_Init ( sdmmchost_t host)

Thread safe function, please note that the function will create the mutex lock dynamically by default, so to avoid the mutex create redundantly, application must follow bellow sequence for card re-initialization

*
Parameters
hosthost handler
Return values
kStatus_Successhost init success
kStatus_Failevent fail
void SDMMCHOST_Deinit ( sdmmchost_t host)

Please note it is a thread safe function.

Parameters
hosthost handler
void SDMMCHOST_SetCardPower ( sdmmchost_t host,
bool  enable 
)
Parameters
hosthost handler
enabletrue is power on, false is power down.
status_t SDMMCHOST_TransferFunction ( sdmmchost_t host,
sdmmchost_transfer_t content 
)

Please note it is a thread safe function.

Parameters
hosthost handler
contenttransfer content.
void SDMMCHOST_Reset ( sdmmchost_t host)

Please note it is a thread safe function.

Parameters
hosthost handler
static void SDMMCHOST_SwitchToVoltage ( sdmmchost_t host,
uint32_t  voltage 
)
inlinestatic
Parameters
hosthost handler
voltageswitch to voltage level.
static status_t SDMMCHOST_ExecuteTuning ( sdmmchost_t host,
uint32_t  tuningCmd,
uint32_t *  revBuf,
uint32_t  blockSize 
)
inlinestatic
Parameters
hosthost handler
tuningCmdtuning command.
revBufreceive buffer pointer
blockSizetuning data block size.
static void SDMMCHOST_EnableDDRMode ( sdmmchost_t host,
bool  enable,
uint32_t  nibblePos 
)
inlinestatic
Parameters
hosthost handler
enabletrue is enable, false is disable.
nibblePosnibble position indictation. 0- the sequence is 'odd high nibble -> even high nibble -> odd low nibble -> even low nibble'; 1- the sequence is 'odd high nibble -> odd low nibble -> even high nibble -> even low nibble'.
static void SDMMCHOST_EnableHS400Mode ( sdmmchost_t host,
bool  enable 
)
inlinestatic
Parameters
hosthost handler
enabletrue is enable, false is disable.
static void SDMMCHOST_EnableStrobeDll ( sdmmchost_t host,
bool  enable 
)
inlinestatic
Parameters
hosthost handler
enabletrue is enable, false is disable.
static uint32_t SDMMCHOST_GetSignalLineStatus ( sdmmchost_t host,
uint32_t  signalLine 
)
inlinestatic
Parameters
hosthost handler
signalLinesignal line type, reference _sdmmc_signal_line
static void SDMMCHOST_ForceClockOn ( sdmmchost_t host,
bool  enable 
)
inlinestatic
Parameters
hosthost handler
enabletrue is enable, false is disable.
void SDMMCHOST_ConvertDataToLittleEndian ( sdmmchost_t host,
uint32_t *  data,
uint32_t  wordSize,
uint32_t  format 
)
Parameters
hosthost handler.
datadata buffer address.
wordSizedata buffer size in word.
formatdata packet format.