![]() |
![]() |
Functions | |
| CSL_Status | SDIO_init (void) |
| CSL_SdioHandle | SDIO_open (CSL_SdioControllerObj *pSdioContObj, CSL_SdioInstId instId, CSL_Status *status) |
| CSL_Status | SDIO_close (CSL_SdioHandle hSdio) |
| CSL_Status | SDIO_config (CSL_SdioHandle hSdio, CSL_SdioConfig *pSdioConfig) |
| CSL_Status | SDIO_detectCard (CSL_SdioHandle hSdio, CSL_SdioCardObj *pSdioCardObj) |
| CSL_Status | SDIO_initCard (CSL_SdioHandle hSdio, Uint32 OpCondReg, Bool initMem) |
| CSL_Status | SDIO_resetCard (CSL_SdioHandle hSdio) |
| CSL_Status | SDIO_getRca (CSL_SdioHandle hSdio, Uint16 *pRCardAddr) |
| CSL_Status | SDIO_deselectCard (CSL_SdioHandle hSdio) |
| CSL_Status | SDIO_selectCard (CSL_SdioHandle hSdio, Uint16 rca) |
| CSL_Status | SDIO_sendCommand (CSL_SdioHandle hSdio, Uint32 cmd, Uint32 arg, Uint16 respTimeout) |
| CSL_Status | SDIO_getResponse (CSL_SdioHandle hSdio, CSL_SdioRespType respType, CSL_SdioResponse *pResponse) |
| CSL_Status | SDIO_clearResponse (CSL_SdioHandle hSdio) |
| Uint32 | SDIO_getStatus (CSL_SdioHandle hSdio, Uint32 maskValue, CSL_Status *pStatus) |
| Uint32 | SDIO_getSdioStatus (CSL_SdioHandle hSdio, Uint32 maskValue, CSL_Status *pStatus) |
| CSL_Status | SDIO_eventEnable (CSL_SdioHandle hSdio, CSL_SdioEventType sdioEvent) |
| CSL_Status | SDIO_eventDisable (CSL_SdioHandle hSdio, CSL_SdioEventType sdioEvent) |
| CSL_Status | SDIO_readWaitEnable (CSL_SdioHandle hSdio) |
| CSL_Status | SDIO_readWaitDisable (CSL_SdioHandle hSdio) |
| CSL_Status | SDIO_readSingleByte (CSL_SdioHandle hSdio, Uint32 readAddr, Uint8 funNum, Uint8 *pReadData) |
| CSL_Status | SDIO_writeSingleByte (CSL_SdioHandle hSdio, Uint32 writeAddr, Uint8 funNum, Uint8 writeData) |
| CSL_Status | SDIO_readBytes (CSL_SdioHandle hSdio, Uint32 readAddr, Uint8 funNum, Bool opCode, Uint16 noOfBytes, Uint16 *pReadBuf) |
| CSL_Status | SDIO_writeBytes (CSL_SdioHandle hSdio, Uint32 writeAddr, Uint8 funNum, Bool opCode, Uint16 noOfBytes, Uint16 *pWriteBuf) |
| CSL_Status | SDIO_readBlocks (CSL_SdioHandle hSdio, Uint32 readAddr, Uint8 funNum, Bool opCode, Uint16 noOfBlocks, Uint16 blockSize, Uint16 *pReadBuf) |
| CSL_Status | SDIO_writeBlocks (CSL_SdioHandle hSdio, Uint32 writeAddr, Uint8 funNum, Bool opCode, Uint16 noOfBlocks, Uint16 blockSize, Uint16 *pWriteBuf) |
| CSL_Status | SDIO_setEndianMode (CSL_SdioHandle hSdio, CSL_SdioEndianMode writeEndianMode, CSL_SdioEndianMode readEndianMode) |
| CSL_Status | SDIO_setClock (CSL_SdioHandle hSdio, Uint16 clockRate) |
| CSL_Status SDIO_clearResponse | ( | CSL_SdioHandle | hSdio | ) |
===========================================================================
SDIO_clearResponse
Description
This function is used to clear all the response registers.
Arguments
hSdio Handle to the SDIO.
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called successfully.
Post Condition
None
Modifies
Response structure
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
CSL_SdioResponse response;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_clearResponse(hSdio);
===========================================================================
References CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_close | ( | CSL_SdioHandle | hSdio | ) |
===========================================================================
SDIO_close
Description
This function closes the specified handle to SDIO.
Arguments
hSdio Handle to the SDIO
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called successfully before this function.
Post Condition
None
Modifies
SDIO handle
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_close(hSdio);
===========================================================================
References CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_config | ( | CSL_SdioHandle | hSdio, |
| CSL_SdioConfig * | pSdioConfig | ||
| ) |
===========================================================================
SDIO_config
Description
This function configures the SDIO controller hardware registers.
Arguments
hSdio Handle to the SDIO.
pSdioConfig Pointer to the SDIO config Parameter.
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called before this function.
Post Condition
None
Modifies
SDIO Registers.
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
CSL_SdioConfig sdioConfig;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
// Initialize SDIO configuration structure
sdioConfig.mmcctl = .... ;
...
...
sdioConfig.sdioien = .... ;
// Configure SDIO
status = SDIO_config(hSdio, &sdioConfig);
===========================================================================
References CSL_SdioConfig::mmcblen, CSL_SdioConfig::mmcclk, CSL_SdioConfig::mmcctl, CSL_SdioConfig::mmcfifoctl, CSL_SdioConfig::mmcim, CSL_SdioConfig::mmcnblk, CSL_SdioConfig::mmctod, CSL_SdioConfig::mmctor, CSL_SdioConfig::sdioctl, CSL_SdioConfig::sdioien, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_deselectCard | ( | CSL_SdioHandle | hSdio | ) |
===========================================================================
SDIO_deselectCard
Description
This function is used to deselect SDIO which has been selected earlier. CMD7 shall be sent to the SDIO card with the relative card address set to 0x0000.
Arguments
hSdio Handle to the SDIO.
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called.
3:Card should be active
Post Condition
Deselects the SDIO card
Modifies
None
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
CSL_SdioCardObj sdioCardObj;
Uint32 ocr;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
status = SDIO_initCard(hSdio, ocr, TRUE);
status = SDIO_deselectCard(hSdio);
===========================================================================
References CSL_SdioCardObj::cardActive, CSL_SDIO_CARD_DESELECT_RCA, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_STUFF_BITS, CSL_SdioControllerObj::pSdioCardObj, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_detectCard | ( | CSL_SdioHandle | hSdio, |
| CSL_SdioCardObj * | pSdioCardObj | ||
| ) |
===========================================================================
SDIO_detectCard
Description
This function is used to detect type of the SDIO card inserted. This function sends SDIO specification defined command sequence to detect type of the card. Type of the card shall be populated in pSdioCardObj. This function also populates other fields of card object structure. Address pointed by 'pSdioCardObj' should be global structure variable which persists till end of the program since it is stored by SDIO CSL for reference in other APIs. This API returns success only incase of SDIO card inserted into the MMC/SD slot of the EVM. For the SDIO cards which returns OCR value as 0, card type will be set to 'CSL_SDIO_INVALID_CARD'. Application/Driver programs should validate card type and ocr value updated in the card object structure to proceed further.
Arguments
hSdio Handle to the SDIO.
pSdioCardObj Pointer to SDIO card object structure
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called before this function.
Post Condition
None
Modifies
pSdioCardObj
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
CSL_SdioCardObj sdioCardObj;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
===========================================================================
References CSL_SdioCardObj::cardReady, CSL_SdioControllerObj::cmd8Resp, CSL_SDIO_CARD_NONE, CSL_SDIO_CLK_DIV_INIT, CSL_SDIO_CMD_0, CSL_SDIO_CMD_5, CSL_SDIO_CMD_8, CSL_SDIO_CMD_8_ARG, CSL_SDIO_CMD_RETRY_COUNT, CSL_SDIO_COMBO_CARD, CSL_SDIO_DATA_RW_TIMEOUT, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR, CSL_SDIO_EVENT_ERROR_CMDCRC, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_GET_C, CSL_SDIO_GET_FUNCNT, CSL_SDIO_GET_MEM, CSL_SDIO_GET_OCR, CSL_SDIO_INVALID_CARD, CSL_SDIO_IO_CARD, CSL_SDIO_LSHIFT, CSL_SDIO_MASK_WORD, CSL_SDIO_RESPONSE_TIMEOUT, CSL_SDIO_RSHIFT, CSL_SDIO_SHIFT_WORD, CSL_SDIO_STUFF_BITS, CSL_SdioCardObj::funCount, CSL_SdioCardObj::ocr, CSL_SdioControllerObj::pSdioCardObj, CSL_SdioCardObj::sdioCardType, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_eventDisable | ( | CSL_SdioHandle | hSdio, |
| CSL_SdioEventType | sdioEvent | ||
| ) |
===========================================================================
SDIO_eventDisable
Description
This function will disable the events in the MMC interrupt mask register and SDIO interrupt enable register.
Arguments
hSdio Handle to the SDIO.
sdioEvent Event type.
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called successfully.
Post Condition
Disables the given event
Modifies
MMC/SDIO Interrupt Mask Register
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_eventDisable(hSdio, CSL_SDIO_EDRRDY_INTERRUPT);
===========================================================================
References CSL_SDIO_CARD_INTERRUPT, CSL_SDIO_EBSYDNE_INTERRUPT, CSL_SDIO_ECRCRD_INTERRUPT, CSL_SDIO_ECRCRS_INTERRUPT, CSL_SDIO_ECRCWR_INTERRUPT, CSL_SDIO_EDATDNE_INTERRUPT, CSL_SDIO_EDATED_INTERRUPT, CSL_SDIO_EDRRDY_INTERRUPT, CSL_SDIO_EDXRDY_INTERRUPT, CSL_SDIO_ERSPDNE_INTERRUPT, CSL_SDIO_ETOUTRD_INTERRUPT, CSL_SDIO_ETOUTRS_INTERRUPT, CSL_SDIO_ETRNDNE_INTERRUPT, CSL_SDIO_MMCIM_ALL_INTERRUPT, CSL_SDIO_MMCIM_REG_MASK, CSL_SDIO_READWAIT_INTERRUPT, CSL_SDIO_SDIOIEN_ALL_INTERRUPT, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_eventEnable | ( | CSL_SdioHandle | hSdio, |
| CSL_SdioEventType | sdioEvent | ||
| ) |
===========================================================================
SDIO_eventEnable
Description
This function will enable the events in the MMC interrupt mask register and SDIO interrupt enable register.
Arguments
hSdio Handle to the SDIO.
sdioEvent Event type.
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called successfully.
Post Condition
Enables the given event
Modifies
MMC/SDIO Interrupt Mask Registers
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_eventEnable(hSdio, CSL_SDIO_EDRRDY_INTERRUPT);
===========================================================================
References CSL_SDIO_CARD_INTERRUPT, CSL_SDIO_EBSYDNE_INTERRUPT, CSL_SDIO_ECRCRD_INTERRUPT, CSL_SDIO_ECRCRS_INTERRUPT, CSL_SDIO_ECRCWR_INTERRUPT, CSL_SDIO_EDATDNE_INTERRUPT, CSL_SDIO_EDATED_INTERRUPT, CSL_SDIO_EDRRDY_INTERRUPT, CSL_SDIO_EDXRDY_INTERRUPT, CSL_SDIO_ERSPDNE_INTERRUPT, CSL_SDIO_ETOUTRD_INTERRUPT, CSL_SDIO_ETOUTRS_INTERRUPT, CSL_SDIO_ETRNDNE_INTERRUPT, CSL_SDIO_MMCIM_ALL_INTERRUPT, CSL_SDIO_MMCIM_REG_MASK, CSL_SDIO_READWAIT_INTERRUPT, CSL_SDIO_SDIOIEN_ALL_INTERRUPT, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_getRca | ( | CSL_SdioHandle | hSdio, |
| Uint16 * | pRCardAddr | ||
| ) |
===========================================================================
SDIO_getRca
Description
This function is used to read new relative card address from the card. This function sends CMD3 and reads relative card address. RCA read from the card will be populated to the pRCardAddr and card object structure in SDIO handle.
Arguments
hSdio Handle to the SDIO.
pRCardAddr Relative card address.
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called.
Post Condition
None
Modifies
pRCardAddr variable will be populated.
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint16 rca;
Uint32 ocr;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_initCard(hSdio, ocr, TRUE);
status = SDIO_getRca(hSdio, &rca);
===========================================================================
References CSL_SDIO_CMD_3, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_STUFF_BITS, CSL_SdioControllerObj::pSdioCardObj, CSL_SdioCardObj::rca, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_getResponse | ( | CSL_SdioHandle | hSdio, |
| CSL_SdioRespType | respType, | ||
| CSL_SdioResponse * | pResponse | ||
| ) |
===========================================================================
SDIO_getResponse
Description
This function is used to read the response registers. This function reads response registers based on the response type and populates the response structure. Response registers are not cleared by this function.
Response type Response bits Resp buf Fields populated
============== ============ =========================
R1,R3,R4,R5,R6 [23:8] pResponse->respBuf[6]
[39:24] pResponse->respBuf[7]
R2 [15:0] pResponse->respBuf[0]
[31:16] pResponse->respBuf[1]
[47:32] pResponse->respBuf[2]
[63:48] pResponse->respBuf[3]
[79:64] pResponse->respBuf[4]
[95:80] pResponse->respBuf[5]
[111:96] pResponse->respBuf[6]
[127:112] pResponse->respBuf[7]
NOTE: IF RESPONSE TYPE SENT IS NOT RECOGNIZED BY THIS API ALL THE RESPONSE REGISTERS ARE POPULATED IN THE SAME FORMAT MENTIONED ABOVE FOR R2 RESPONSE.
Arguments
hSdio Handle to the SDIO.
respType Type of the response
pResponse Pointer to response structure
Return Value CSL_Status
Pre Condition
SDIO_sendCommand() API should be called successfully.
Post Condition
None
Modifies
Response structure
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint32 cmd;
Uint32 arg;
Uint16 respTimeout;
CSL_SdioResponse response;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
//Send Command 5
cmd = 0x205;
arg = 0;
respTimeout = 0xFFFF;
status = SDIO_sendCommand(hSdio, cmd, arg, respTimeout);
status = SDIO_getResponse(hSdio, CSL_SDIO_RESPTYPE_R4, &response);
===========================================================================
References CSL_SDIO_RESPTYPE_R1, CSL_SDIO_RESPTYPE_R2, CSL_SDIO_RESPTYPE_R3, CSL_SDIO_RESPTYPE_R4, CSL_SDIO_RESPTYPE_R5, CSL_SDIO_RESPTYPE_R6, CSL_SdioResponse::respBuf, and CSL_SdioControllerObj::sdioRegs.
| Uint32 SDIO_getSdioStatus | ( | CSL_SdioHandle | hSdio, |
| Uint32 | maskValue, | ||
| CSL_Status * | pStatus | ||
| ) |
===========================================================================
SDIO_getSdioStatus
Description
This function reads SDIOST0 and SDIOIST registers and returns the value. When mask value is set to 0xFFFFFFFF, value of SDIOST0 will be stored in lower 16 bits and value of SDIOIST will be store in upper 16 bits. Value of a particular bit in the passed mask should be set to '1' to read the corresponding bit in the SDIO status register.
Arguments
hSdio Handle to the SDIO.
maskValue Mask value to specify the field.
pStatus status of API Success of Failed.
Return Value Uint32 Status - SDIOST0 and SDIOIST register value.
Pre Condition
SDIO_open() API should be called successfully.
Post Condition
None
Modifies
None
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint32 sdiostatus;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
sdiostatus = SDIO_getSdioStatus(hSdio, 0xFFFF, &status);
===========================================================================
References CSL_SDIO_SHIFT_WORD, and CSL_SdioControllerObj::sdioRegs.
| Uint32 SDIO_getStatus | ( | CSL_SdioHandle | hSdio, |
| Uint32 | maskValue, | ||
| CSL_Status * | pStatus | ||
| ) |
===========================================================================
SDIO_getStatus
Description
This function reads MMCST0 and MMCST1 registers and returns the value. When mask value is set to 0xFFFFFFFF, value of MMCST0 will be stored in lower 16 bits and value of MMCST1 will be store in upper 16 bits. Value of a particular bit in the passed mask should be set to '1' to read the corresponding bit in the MMC status register.
Arguments
hSdio Handle to the SDIO.
maskValue Mask value to specify the field.
pStatus Status of API Success or Failed.
Return Value Uint32 Status - MMCST0 and MMCST1 register value.
Pre Condition
SDIO_open() API should be called successfully.
Post Condition
None
Modifies
None
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint32 mmcstatus;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
mmcstatus = SDIO_getStatus(hSdio, 0xFFFF, &status);
===========================================================================
References CSL_SDIO_SHIFT_WORD, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_init | ( | void | ) |
===========================================================================
SDIO_init
Description
This is the initialization function for the SDIO CSL. The function must be called before calling any other API from this CSL. This function is for enabling the clock to the SDIO Controller. This function should be called only once during system initialization time. This function gates the clock for the two MMCSD modules. Application programs may disable the clocks for MMCSD module which is not in use.
NOTE: Calling this function is not required if MMC_init is called since both functions use the same MMCSD controller
Arguments
Return Value CSL_Status
Pre Condition
This should be called before calling any other SDIO Function.
Post Condition
Enables clock for MMCSD controller
Modifies
None
Example
CSL_status status;
status = SDIO_init();
===========================================================================
References CSL_SDIO_RESET_COUNT.
| CSL_Status SDIO_initCard | ( | CSL_SdioHandle | hSdio, |
| Uint32 | OpCondReg, | ||
| Bool | initMem | ||
| ) |
===========================================================================
SDIO_initCard
Description
This function is used to initialize the SDIO card inserted. This function sends SDIO specification defined command sequence to initialize the SDIO card. Proper OCR value should be sent to this function based on the OCR value received from the card during card detection. SDIO card shall be ready to use after successful execution of this function. This function also supports initializing memory portion of the COMBO SDIO card. Parameter 'initMem' is useful to select(initMem = 1) or skip(initMem = 0) the initialization of COMBO SDIO cards. This function returns with error incase of IO portion or memory(COMBO) portion of the card is not ready.
Arguments
hSdio Handle to the SDIO.
OpCondReg Operation Conditions Regsiter(OCR) value
initMem Flag to select/skip memory initialization
Return Value CSL_Status
Pre Condition
SDIO_detectCard() API should be called before this function.
Post Condition
Initializes SDIO card
Modifies
SDIO card registers
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
CSL_SdioCardObj sdioCardObj;
Uint32 ocr;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
status = SDIO_initCard(hSdio, ocr, TRUE);
===========================================================================
References CSL_SdioCardObj::cardActive, CSL_SdioCardObj::cardReady, CSL_SdioControllerObj::cmd8Resp, CSL_ESDIO_IO_NOTREADY, CSL_ESDIO_MEM_NOTREADY, CSL_SDIO_CMD41_RESP, CSL_SDIO_CMD_3, CSL_SDIO_CMD_41, CSL_SDIO_CMD_41_ARG, CSL_SDIO_CMD_41_HCS_ARG, CSL_SDIO_CMD_5, CSL_SDIO_CMD_55, CSL_SDIO_CMD_7, CSL_SDIO_CMD_RETRY_COUNT, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_COMBO_CARD, CSL_SDIO_EVENT_CARD_EXITBUSY, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_GET_C, CSL_SDIO_LSHIFT, CSL_SDIO_MASK_WORD, CSL_SDIO_RSHIFT, CSL_SDIO_SDHC_RESP, CSL_SDIO_SHIFT_WORD, CSL_SDIO_STUFF_BITS, CSL_SdioControllerObj::pSdioCardObj, CSL_SdioCardObj::rca, CSL_SdioCardObj::sdHcDetected, CSL_SdioCardObj::sdioCardType, and CSL_SdioControllerObj::sdioRegs.
| CSL_SdioHandle SDIO_open | ( | CSL_SdioControllerObj * | pSdioContObj, |
| CSL_SdioInstId | instId, | ||
| CSL_Status * | status | ||
| ) |
===========================================================================
SDIO_open
Description
This function opens the CSL SDIO module and returns handle to the SDIO object structure.
NOTE: THIS API SETS THE ENDIAN MODE OF SDIO READ AND WRITE OPERATIONS TO LITTLE ENDIAN. USE SDIO_setEndianMode() TO CHANGE ENDIAN MODE.
Arguments
pSdioContObj SDIO Controller object structure
instId Instance number for SDIO
status Status of the function
Return Value CSL_SdioHandle
Valid SDIO handle will be returned if status value is equal to CSL_SOK.
Pre Condition
SDIO_init() API should be called before SDIO_open().
Post Condition
1. The status is returned in the status variable. If status returned is
Modifies
1. Status variable
2. CSL_SdioObj object structure
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
...
===========================================================================
References CSL_SDIO_ENDIAN_LITTLE, CSL_SDIO_INST0, CSL_SDIO_INST1, CSL_SdioControllerObj::readEndianMode, CSL_SdioControllerObj::sdioRegs, and CSL_SdioControllerObj::writeEndianMode.
| CSL_Status SDIO_readBlocks | ( | CSL_SdioHandle | hSdio, |
| Uint32 | readAddr, | ||
| Uint8 | funNum, | ||
| Bool | opCode, | ||
| Uint16 | noOfBlocks, | ||
| Uint16 | blockSize, | ||
| Uint16 * | pReadBuf | ||
| ) |
===========================================================================
SDIO_readBlocks
Description
This function reads requested number of blocks of data from SDIO card. 'readAddr' is address on the SDIO card from where the reading starts. Block size of IO function to read data should be configured before calling this function.
Reading of data can be done from a fixed address(opCode = 0) or incrementing address(opCode = 1). Fixed mode data read is useful when I/O data is transferred using a FIFO inside SDIO card. Opcode should be 1 for the SDIO cards which doesn't have support for FIFO.
NOTE: Endian mode of the data transfer depends on the parameter 'readEndianMode' in the SDIO handle. Default value for the endian mode is 'LITTLE ENDIAN' which will be set during SDIO open. Endian mode can be configured using SDIO_setEndianMode(). DO NOT CHANGE THE ENDIAN MODE WITH OUT USING THIS API.
Arguments
hSdio Handle to the SDIO.
readAddr Location to read from.
funNum IO function number to read data
opCode Bit to decide source address mode
- Fixed/Incrementing
noOfBlocks Number of blocks to read.
blockSize Size of each block
pReadBuf pointer to a buffer.
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called successfully.
Post Condition
Reads data from the SDIO card
Modifies
readBuffer will be populated.
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint32 ocr;
Uint16 readBuf[512];
Uint32 readAddr;
Uint16 noOfBlocks;
Bool opCode;
Uint8 funNum;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
status = SDIO_initCard(hSdio, ocr, TRUE);
readAddr = 0x0;
noOfBlocks = 2;
opCode = 1;
funNum = 0;
status = SDIO_readBlocks(hSdio, readAddr, funNum, opCode,
noOfBlocks, 256, readBuf);
===========================================================================
References CSL_SDIO_CMD_53_READ, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_DATA_TOUT_CRC_ERROR, CSL_SDIO_ENDIAN_LITTLE, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_EVENT_ERROR_DATATIMEOUT, CSL_SDIO_MAKE_CMD53_ARG, CSL_SDIO_MASK_BYTE, CSL_SDIO_MASK_WORD, CSL_SDIO_MAX_BLOCK_COUNT, CSL_SDIO_MAX_BLOCK_SIZE, CSL_SDIO_MAX_FUNCTION_COUNT, CSL_SDIO_READ_FIFO_LEVEL, CSL_SDIO_READ_READY, CSL_SDIO_RSHIFT, CSL_SDIO_SHIFT_BYTE, CSL_SDIO_SHIFT_WORD, CSL_SdioControllerObj::readEndianMode, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_readBytes | ( | CSL_SdioHandle | hSdio, |
| Uint32 | readAddr, | ||
| Uint8 | funNum, | ||
| Bool | opCode, | ||
| Uint16 | noOfBytes, | ||
| Uint16 * | pReadBuf | ||
| ) |
===========================================================================
SDIO_readBytes
Description
This function reads requested number of bytes from the SDIO card. 'readAddr' is address on the SDIO card from where the reading starts. This function reads multiple bytes of data from the given address and populates into read buffer. Maximum number of bytes that can be read using this function are 512.
Reading of data can be done from a fixed address(opCode = 0) or incrementing address(opCode = 1). Fixed mode data read is useful when I/O data is transferred using a FIFO inside SDIO card. Opcode should be 1 for the SDIO cards which doesn't have support for FIFO.
NOTE: Endian mode of the data transfer depends on the parameter 'readEndianMode' in the SDIO handle. Default value for the endian mode is 'LITTLE ENDIAN' which will be set during SDIO open. Endian mode can be configured using SDIO_setEndianMode(). DO NOT CHANGE THE ENDIAN MODE WITH OUT USING THIS API.
Arguments
hSdio Handle to the SDIO.
readAddr Location to read from.
funNum IO function number to read data
opCode Bit to decide source address mode
- Fixed/Incrementing
noOfBytes no of bytes to read.
pReadBuf pointer to a buffer.
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called successfully.
Post Condition
Reads data from the SDIO card
Modifies
readBuffer will be populated.
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint16 rca;
Uint32 ocr;
Uint16 readBuf[512];
Uint32 readAddr;
Uint16 noOfBytes;
Bool opCode;
Uint8 funNum;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
status = SDIO_initCard(hSdio, ocr, TRUE);
readAddr = 0x0;
noOfBytes = 16;
opCode = 1;
funNum = 0;
status = SDIO_readBytes(hSdio, readAddr, funNum, opCode,
noOfBytes, readBuf);
===========================================================================
References CSL_SDIO_CMD_53_READ, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_DATA_TOUT_CRC_ERROR, CSL_SDIO_ENDIAN_LITTLE, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_EVENT_ERROR_DATATIMEOUT, CSL_SDIO_MAKE_CMD53_ARG, CSL_SDIO_MASK_BYTE, CSL_SDIO_MASK_WORD, CSL_SDIO_MAX_BYTE_COUNT, CSL_SDIO_MAX_FUNCTION_COUNT, CSL_SDIO_READ_FIFO_LEVEL, CSL_SDIO_READ_READY, CSL_SDIO_RSHIFT, CSL_SDIO_SHIFT_BYTE, CSL_SDIO_SHIFT_WORD, CSL_SdioControllerObj::readEndianMode, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_readSingleByte | ( | CSL_SdioHandle | hSdio, |
| Uint32 | readAddr, | ||
| Uint8 | funNum, | ||
| Uint8 * | pReadData | ||
| ) |
===========================================================================
SDIO_readSingleByte
Description
This function reads a single byte of data from the SDIO card. 'readAddr' is address on the SDIO card from where data byte will be read. Command 52 (IO_RW_DIRECT Command) is used to read the data.
Arguments
hSdio Handle to the SDIO.
readAddr Location to read from.
funNum IO function number to read data
pReadData Pointer to populate data read
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called successfully.
Post Condition
Reads a byte of data from the SDIO card
Modifies
Read data pointer will be populated.
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint16 rca;
Uint32 ocr;
Uint8 readData;
Uint32 readAddr;
Uint8 funNum;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
status = SDIO_initCard(hSdio, ocr, TRUE);
readAddr = 0x0;
funNum = 0;
status = SDIO_readSingleByte(hSdio, readAddr, funNum, &readData);
===========================================================================
References CSL_SDIO_CMD_52, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_MAKE_CMD52_READ_ARG, CSL_SDIO_MASK_BYTE, CSL_SDIO_MASK_WORD, CSL_SDIO_MAX_FUNCTION_COUNT, CSL_SDIO_RSHIFT, CSL_SDIO_SHIFT_WORD, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_readWaitDisable | ( | CSL_SdioHandle | hSdio | ) |
===========================================================================
SDIO_readWaitDisable
Description
This function is used to disable SDIO read-wait bit in SDIO control register.
Arguments
hSdio Handle to the SDIO.
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called successfully.
Post Condition
Disables the sdio read-wait
Modifies
SDIO control Register
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_readWaitDisable(hSdio);
===========================================================================
References CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_readWaitEnable | ( | CSL_SdioHandle | hSdio | ) |
===========================================================================
SDIO_readWaitEnable
Description
This function is used to enable SDIO read-wait bit in SDIO control register.
Arguments
hSdio Handle to the SDIO.
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called successfully.
Post Condition
Enables the sdio read-wait
Modifies
SDIO control Register
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_readWaitEnable(hSdio);
===========================================================================
References CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_resetCard | ( | CSL_SdioHandle | hSdio | ) |
===========================================================================
SDIO_resetCard
Description
This function is used to reset the SDIO card. This function uses CMD52 to reset SDIO card. After execution of this function SDIO card will not receive any commands except CMD5.
Arguments
hSdio Handle to the SDIO.
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called before this function.
Post Condition
Resets SDIO card
Modifies
SDIO card registers
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_resetCard(hSdio);
===========================================================================
References CSL_SDIO_CMD_52, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_MAKE_CMD52_WRITE_ARG, CSL_SDIO_MASK_WORD, CSL_SDIO_RSHIFT, CSL_SDIO_SHIFT_WORD, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_selectCard | ( | CSL_SdioHandle | hSdio, |
| Uint16 | rca | ||
| ) |
===========================================================================
SDIO_selectCard
Description
This function is used to select SDIO card. CMD7 shall be sent to the SDIO card along with the relative card address to select the card. RCA value should be the one published by the card. Sending CMD7 with invalid RCA will put the card into standby/disabled state.
Arguments
hSdio Handle to the SDIO.
rca Relative card address.
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called.
Post Condition
Selects the SDIO card
Modifies
rca
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint16 rca;
Uint32 ocr;
CSL_SdioCardObj sdioCardObj;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
rca = sdioCardObj.rca;
status = SDIO_initCard(hSdio, ocr, TRUE);
status = SDIO_selectCard(hSdio, rca);
===========================================================================
References CSL_SdioCardObj::cardActive, CSL_SDIO_CMD_7, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_EVENT_CARD_EXITBUSY, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_STUFF_BITS, CSL_SdioControllerObj::pSdioCardObj, CSL_SdioCardObj::rca, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_sendCommand | ( | CSL_SdioHandle | hSdio, |
| Uint32 | cmd, | ||
| Uint32 | arg, | ||
| Uint16 | respTimeout | ||
| ) |
===========================================================================
SDIO_sendCommand
Description
This function is used to send commands to the SDIO card. This function sends given command to the card and waits for the response. Lower 16 bits of the parameter 'cmd' should contain the command that needs to be written to MMCCMD1 register. Upper 16 bits of the 'cmd' should contain the data that needs to be written to MMCCMD2 register.
NOTE:SETTING THE MMCCMD2 VALUE TO '1' IS ALLOWED ONLY FOR DATA WRITE COMMANDS THAT USES DMA FOR DATA TRANSFER. FOR OTHER COMMANDS UPPER 16 BITS OF 'CMD' SHOULD ALWAYS BE ZERO.
Arguments
hSdio Handle to the SDIO.
cmd MMCCMD1 and MMCCMD2 register value.
arg Command argument.
respTimeout Timeout value for the response.
Return Value CSL_Status
Pre Condition
SDIO_open() API should be called successfully.
Post Condition
Sends command to the card
Modifies
Card Command registers
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint32 cmd;
Uint32 arg;
Uint16 respTimeout;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
//Send Command 5
cmd = 0x205;
arg = 0;
respTimeout = 0xFFFF;
status = SDIO_sendCommand(hSdio, cmd, arg, respTimeout);
===========================================================================
References CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_MASK_WORD, CSL_SDIO_SHIFT_WORD, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_setClock | ( | CSL_SdioHandle | hSdio, |
| Uint16 | clockRate | ||
| ) |
===========================================================================
SDIO_setClock
Description
This function is used to set SDIO controller clock divider value. Clock controller register bits are configured by this function. Clock rate or clock divider value can range from 0 to 0xFF.
Arguments
hSdio Handle to the SDIO.
clockRate Value of clock rate
Return Value
Pre Condition
SDIO_open() function should be called successfully
Post Condition
Sets SDIO clock
Modifies
SDIO clock control register
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_setClock(hSdio, 5);
===========================================================================
References CSL_SDIO_MAX_CLKRATE, and CSL_SdioControllerObj::sdioRegs.
| CSL_Status SDIO_setEndianMode | ( | CSL_SdioHandle | hSdio, |
| CSL_SdioEndianMode | writeEndianMode, | ||
| CSL_SdioEndianMode | readEndianMode | ||
| ) |
===========================================================================
SDIO_setEndianMode
Description
This function is used to set endian mode of the SDIO controller. Endian mode set using this API decides the way in which data is transferred from FIFO to storage device.
Default endianness of SDIO controller: Chip C5504 and C5505: LITTLE ENDIAN. Chip C5514 and C5515: BIG ENDIAN.
Arguments
hSdio Handle to the SDIO.
writeEndianMode Endian mode for SDIO write operation
readEndianMode Endian mode for SDIO read operation
Return Value
Pre Condition
SDIO_open() function should be called successfully
Post Condition
Sets SDIO endian mode for write and read operations
Modifies
SDIO control register
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_setEndianMode(hSdio, CSL_SDIO_ENDIAN_LITTLE,
CSL_SDIO_ENDIAN_LITTLE);
...
===========================================================================
References CSL_SDIO_ENDIAN_BIG, CSL_SDIO_ENDIAN_LITTLE, CSL_SdioControllerObj::readEndianMode, CSL_SdioControllerObj::sdioRegs, and CSL_SdioControllerObj::writeEndianMode.
| CSL_Status SDIO_writeBlocks | ( | CSL_SdioHandle | hSdio, |
| Uint32 | writeAddr, | ||
| Uint8 | funNum, | ||
| Bool | opCode, | ||
| Uint16 | noOfBlocks, | ||
| Uint16 | blockSize, | ||
| Uint16 * | pWriteBuf | ||
| ) |
===========================================================================
SDIO_writeBlocks
Description
This function writes requested number of blocks of data to SDIO card. 'writeAddr' is address on the SDIO card from where the writing starts. Block size of IO function to write data should be configured before calling this function.
Writing of data can be done to a fixed address(opCode = 0) or incrementing address(opCode = 1). Fixed mode data write is useful when I/O data is transferred using a FIFO inside SDIO card. Opcode should be 1 for the SDIO cards which doesn't have support for FIFO.
NOTE: Endian mode of the data transfer depends on the parameter 'writeEndianMode' in the SDIO handle. Default value for the endian mode is 'LITTLE ENDIAN' which will be set during SDIO open. Endian mode can be configured using SDIO_setEndianMode(). DO NOT CHANGE THE ENDIAN MODE WITH OUT USING THIS API.
Arguments
hSdio Handle to the SDIO.
writeAddr Location to write to.
funNum IO function number to write data
opCode Bit to decide destination address mode
- Fixed/Incrementing
noOfBlocks Number of blocks to write.
blockSize Size of each block
pWriteBuf Pointer to write buffer.
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called successfully.
Post Condition
Writes data to the SDIO card
Modifies
Data registers
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint32 ocr;
Uint16 writeBuf[512];
Uint32 writeAddr;
Uint16 noOfBlocks;
Bool opCode;
Uint8 funNum;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
status = SDIO_initCard(hSdio, ocr, TRUE);
writeAddr = 0x110;
noOfBlocks = 2;
opCode = 1;
funNum = 0;
status = SDIO_writeBlocks(hSdio, writeAddr, funNum, opCode,
noOfBlocks, 256, writeBuf);
===========================================================================
References CSL_SDIO_CMD_53_WRITE, CSL_SDIO_ENDIAN_LITTLE, CSL_SDIO_EVENT_BLOCK_XFERRED, CSL_SDIO_EVENT_ERROR, CSL_SDIO_EVENT_ERROR_DATACRC, CSL_SDIO_MAKE_CMD53_ARG, CSL_SDIO_MASK_BYTE, CSL_SDIO_MASK_WORD, CSL_SDIO_MAX_BLOCK_COUNT, CSL_SDIO_MAX_BLOCK_SIZE, CSL_SDIO_MAX_FUNCTION_COUNT, CSL_SDIO_RSHIFT, CSL_SDIO_SHIFT_BYTE, CSL_SDIO_SHIFT_WORD, CSL_SDIO_WRITE_FIFO_LEVEL, CSL_SDIO_WRITE_READY, CSL_SdioControllerObj::readEndianMode, CSL_SdioControllerObj::sdioRegs, and CSL_SdioControllerObj::writeEndianMode.
| CSL_Status SDIO_writeBytes | ( | CSL_SdioHandle | hSdio, |
| Uint32 | writeAddr, | ||
| Uint8 | funNum, | ||
| Bool | opCode, | ||
| Uint16 | noOfBytes, | ||
| Uint16 * | pWriteBuf | ||
| ) |
===========================================================================
SDIO_writeBytes
Description
This function writes requested number of bytes to the SDIO card. 'writeAddr' is address on the SDIO card from where the writing starts. Maximum length of the data that can be written using this function is 512 bytes.
Writing of data can be done to a fixed address(opCode = 0) or incrementing address(opCode = 1). Fixed mode data write is useful when I/O data is transferred using a FIFO inside SDIO card. Opcode should be 1 for the SDIO cards which doesn't have support for FIFO.
NOTE: Endian mode of the data transfer depends on the parameter 'writeEndianMode' in the SDIO handle. Default value for the endian mode is 'LITTLE ENDIAN' which will be set during SDIO open. Endian mode can be configured using SDIO_setEndianMode(). DO NOT CHANGE THE ENDIAN MODE WITH OUT USING THIS API.
Arguments
hSdio Handle to the SDIO.
writeAddr Location to write to.
funNum IO function number to write data
opCode Bit to decide destination address mode
- Fixed/Incrementing
noOfBytes Number of bytes to write.
pWriteBuf Pointer to write buffer.
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called successfully.
Post Condition
Writes data to the SDIO card
Modifies
Data registers
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint32 ocr;
Uint16 writeBuf[512];
Uint32 writeAddr;
Uint16 noOfBytes;
Bool opCode;
Uint8 funNum;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
status = SDIO_initCard(hSdio, ocr, TRUE);
writeAddr = 0x07;
noOfBytes = 1;
opCode = 1;
funNum = 0;
status = SDIO_writeBytes(hSdio, writeAddr, funNum, opCode,
noOfBytes, writeBuf);
===========================================================================
References CSL_SDIO_CMD_53_WRITE, CSL_SDIO_ENDIAN_LITTLE, CSL_SDIO_EVENT_BLOCK_XFERRED, CSL_SDIO_EVENT_ERROR, CSL_SDIO_EVENT_ERROR_DATACRC, CSL_SDIO_MAKE_CMD53_ARG, CSL_SDIO_MASK_BYTE, CSL_SDIO_MASK_WORD, CSL_SDIO_MAX_BYTE_COUNT, CSL_SDIO_MAX_FUNCTION_COUNT, CSL_SDIO_RSHIFT, CSL_SDIO_SHIFT_BYTE, CSL_SDIO_SHIFT_WORD, CSL_SDIO_WRITE_FIFO_LEVEL, CSL_SDIO_WRITE_READY, CSL_SdioControllerObj::readEndianMode, CSL_SdioControllerObj::sdioRegs, and CSL_SdioControllerObj::writeEndianMode.
| CSL_Status SDIO_writeSingleByte | ( | CSL_SdioHandle | hSdio, |
| Uint32 | writeAddr, | ||
| Uint8 | funNum, | ||
| Uint8 | writeData | ||
| ) |
===========================================================================
SDIO_writeSingleByte
Description
This function writes a single byte of data to the SDIO card. 'writeAddr' is address on the SDIO card to where data byte will be written. Command 52 (IO_RW_DIRECT Command) is used to write the data.
Arguments
hSdio Handle to the SDIO.
writeAddr Location to write data byte.
funNum IO function number to read data
writeData Data to be written
Return Value CSL_Status
Pre Condition
1:SDIO_open() API should be called successfully.
2:SDIO_initCard() API should be called successfully.
Post Condition
Writes a byte of data to the SDIO card
Modifies
SDIO card registers
Example
CSL_SdioControllerObj sdioContObj;
CSL_SdioHandle hSdio;
CSL_SdioInstId instId;
CSL_status status;
Uint16 rca;
Uint32 ocr;
Uint8 writeData;
Uint32 writeAddr;
Uint8 funNum;
instId = CSL_SDIO_INST0;
status = SDIO_init();
hSdio = SDIO_open(&sdioContObj, instId, &status);
status = SDIO_detectCard(hSdio, &sdioCardObj);
status = SDIO_initCard(hSdio, ocr, TRUE);
writeAddr = 0x02;
writeData = 0x02;
funNum = 0;
status = SDIO_writeSingleByte(hSdio, writeAddr, funNum, writeData);
===========================================================================
References CSL_SDIO_CMD_52, CSL_SDIO_CMD_TOUT_CRC_ERROR, CSL_SDIO_EVENT_EOFCMD, CSL_SDIO_EVENT_ERROR_CMDTIMEOUT, CSL_SDIO_MAKE_CMD52_WRITE_ARG, CSL_SDIO_MASK_WORD, CSL_SDIO_MAX_FUNCTION_COUNT, CSL_SDIO_RSHIFT, CSL_SDIO_SHIFT_WORD, and CSL_SdioControllerObj::sdioRegs.
1.7.4