MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / FsdCtrl_privateSendCmd

Function FsdCtrl_privateSendCmd

bsp/ft2004/libraries/bsp/ft_sd/ft_sdctrl.c:216–264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

214}
215
216static ft_error_t FsdCtrl_privateSendCmd(FT_INOUT FtsdCtrl_t *pFtsdCtrl, FT_IN pFtsdCtrl_delayTimer_t pDelayTimer_fun, FT_IN u32 cmd, FT_IN u32 respType, FT_IN u32 arg)
217{
218 u32 temp;
219 u32 sd_cmd;
220 u32 sd_arg;
221 FSdCtrl_Config_t *pConfig;
222 Ft_assertNonvoid(FT_NULL != pFtsdCtrl);
223 pConfig = &pFtsdCtrl->config;
224
225 /* enable cmd finished irq */
226 Ft_out32(pConfig->baseAddress + NORMAL_INT_STATUS_REG, NORMAL_INT_EN_ECC);
227 Ft_out32(pConfig->baseAddress + NORMAL_INT_STATUS_REG, 0);
228
229 Ft_out32(pConfig->baseAddress + ERROR_INT_STATUS_REG, BD_ISR_EN_ETRS);
230 Ft_out32(pConfig->baseAddress + ERROR_INT_STATUS_REG, 0);
231
232 /* prepare cmd msg, along with arg */
233 sd_cmd = FSdCtrl_PrepareCmdRaw(cmd, respType);
234 sd_arg = arg;
235
236 /* send cmd and arg */
237 Ft_out32(pConfig->baseAddress + CMD_SETTING_REG_OFFSET, sd_cmd);
238 Ft_out32(pConfig->baseAddress + ARGUMENT_REG_OFFSET, sd_arg);
239
240 if (pConfig->workMode & FTSDCTRL_CMD_IRQ_MASK)
241 {
242 if (pFtsdCtrl->cmdWaitCallback)
243 {
244 /* if irq is enabled and call back registered, enter call back procedure */
245 return pFtsdCtrl->cmdWaitCallback(pFtsdCtrl);
246 }
247 else
248 {
249 return FTSDC_INVALID_PARAM;
250 }
251 }
252 else
253 {
254 temp = Ft_in32(pConfig->baseAddress + NORMAL_INT_STATUS_REG);
255 /* polling wait for cmd-finished response */
256 while (NORMAL_INT_STATUS_CC != (temp & NORMAL_INT_STATUS_CC))
257 {
258 temp = Ft_in32(pConfig->baseAddress + NORMAL_INT_STATUS_REG);
259 pDelayTimer_fun(1);
260 }
261 }
262
263 return FTSDC_SUCCESS;
264}
265
266ft_error_t FSdCtrl_WaitWriteDataEnd(FT_INOUT FtsdCtrl_t *pFtsdCtrl,
267 FT_IN pFtsdCtrl_delayTimer_t pDelayTimer_fun,

Callers 2

FSdCtrl_WaitWriteDataEndFunction · 0.85
FSdCtrl_WaitReadDataEndFunction · 0.85

Calls 3

Ft_out32Function · 0.85
FSdCtrl_PrepareCmdRawFunction · 0.85
Ft_in32Function · 0.85

Tested by

no test coverage detected