SDMMC: modify the data error, reset the IDMA before it is used next time.

This commit is contained in:
xbw
2014-03-25 19:14:37 +08:00
parent f65cb6fc5a
commit 3cdb3436f6

View File

@@ -727,6 +727,10 @@ static int dw_mci_submit_data_dma(struct dw_mci *host, struct mmc_data *data)
if (host->prev_blksz != data->blksz)
dw_mci_adjust_fifoth(host, data);
temp = mci_readl(host, CTRL);
temp |= (SDMMC_CTRL_DMA_RESET | SDMMC_CTRL_FIFO_RESET);
mci_writel(host, CTRL, temp);
/* Enable the DMA interface */
temp = mci_readl(host, CTRL);
temp |= SDMMC_CTRL_DMA_ENABLE;
@@ -1454,11 +1458,11 @@ static void dw_mci_command_complete(struct dw_mci *host, struct mmc_command *cmd
else if (status & SDMMC_INT_RESP_ERR)
cmd->error = -EIO;
else
cmd->error = 0;
cmd->error = 0;
MMC_DBG_CMD_FUNC(host->mmc, " command complete, cmd=%d,cmdError=%d [%s]",cmd->opcode, cmd->error,mmc_hostname(host->mmc));
if (cmd->error) {
if(MMC_SEND_STATUS != cmd->opcode)
if(MMC_SEND_STATUS != cmd->opcode)
MMC_DBG_ERR_FUNC(host->mmc, " command complete, cmd=%d,cmdError=%d [%s]",\
cmd->opcode, cmd->error,mmc_hostname(host->mmc));