From bac05d3187a00d8c970cb92e643e11b227d92481 Mon Sep 17 00:00:00 2001 From: lintao Date: Fri, 28 Mar 2014 16:17:59 +0800 Subject: [PATCH] mmc: host: rockchip: fix commit f5b42ad17d9da38198e24b3f1912fffc86c904a6 Original methdod setup max hold time for cmd_rto tear down wifi in some cases, work around this bug by detecting hold time ahead. --- drivers/mmc/host/rk_sdmmc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/mmc/host/rk_sdmmc.c b/drivers/mmc/host/rk_sdmmc.c index df3604b47919..542fec6d23ba 100755 --- a/drivers/mmc/host/rk_sdmmc.c +++ b/drivers/mmc/host/rk_sdmmc.c @@ -1460,12 +1460,9 @@ static void dw_mci_command_complete(struct dw_mci *host, struct mmc_command *cmd if (status & SDMMC_INT_RTO) { if(host->mmc->restrict_caps & RESTRICT_CARD_TYPE_SDIO) - { host->cmd_rto += 1; - (host->cmd_rto >= SDMMC_CMD_RTO_MAX_HOLD)?(cmd->error = -ETIMEDOUT):(cmd->error = 0); - } - else - cmd->error = -ETIMEDOUT; + + cmd->error = -ETIMEDOUT; } else if ((cmd->flags & MMC_RSP_CRC) && (status & SDMMC_INT_RCRC)) cmd->error = -EILSEQ; @@ -1477,8 +1474,11 @@ static void dw_mci_command_complete(struct dw_mci *host, struct mmc_command *cmd if (cmd->error) { 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)); + if(host->cmd_rto >= SDMMC_CMD_RTO_MAX_HOLD){ + MMC_DBG_ERR_FUNC(host->mmc, " command complete, cmd=%d,cmdError=%d [%s]",\ + cmd->opcode, cmd->error,mmc_hostname(host->mmc)); + host->cmd_rto = 0; + } /* newer ip versions need a delay between retries */ if (host->quirks & DW_MCI_QUIRK_RETRY_DELAY) -- 2.34.1