Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1434166

[PATCH 3/4] mmc: mediatek: fix CMD21/CMD19 timeout issue

Path csiph.com!news.mixmin.net!aioe.org!bofh.it!news.nic.it!robomod
From Chaotian Jing <chaotian.jing@mediatek.com>
Newsgroups linux.kernel
Subject [PATCH 3/4] mmc: mediatek: fix CMD21/CMD19 timeout issue
Date Thu, 30 Jun 2016 04:10:01 +0200
Message-ID <rPzAt-3BV-19@gated-at.bofh.it> (permalink)
References <rPzAt-3BV-13@gated-at.bofh.it>
X-Mailer git-send-email 1.8.1.1.dirty
MIME-Version 1.0
Content-Type text/plain
X-Mtk N
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 47
Organization linux.* mail to news gateway
X-Original-Cc Matthias Brugger <matthias.bgg@gmail.com>, Chaotian Jing <chaotian.jing@mediatek.com>, Nicolas Boichat <drinkcat@chromium.org>, Douglas Anderson <dianders@chromium.org>, Geert Uytterhoeven <geert@linux-m68k.org>, <linux-mmc@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <linux-mediatek@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <srv_heupstream@mediatek.com>, Sascha Hauer <kernel@pengutronix.de>, Daniel Kurtz <djkurtz@chromium.org>, Wei-Ning Huang <wnhuang@chromium.org>
X-Original-Date Thu, 30 Jun 2016 10:01:00 +0800
X-Original-Message-ID <1467252061-3791-4-git-send-email-chaotian.jing@mediatek.com>
X-Original-References <1467252061-3791-1-git-send-email-chaotian.jing@mediatek.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1434166

Show key headers only | View raw


we did not deal with the read data of CMD21/CMD19 if there is
response CRC error of CMD21/CMD19, in this case, eMMC/SD may
still in send-data state. therefore, all of next commands cannot
get response as device is not in transfer state.

for resolving this issue, still need deal with the data receive
to make device back to transfer state.

Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com>
---
 drivers/mmc/host/mtk-sd.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
index 4b175a6..91277b9 100644
--- a/drivers/mmc/host/mtk-sd.c
+++ b/drivers/mmc/host/mtk-sd.c
@@ -801,7 +801,13 @@ static bool msdc_cmd_done(struct msdc_host *host, int events,
 	}
 
 	if (!sbc_error && !(events & MSDC_INT_CMDRDY)) {
-		msdc_reset_hw(host);
+		if (cmd->opcode != MMC_SEND_TUNING_BLOCK &&
+		    cmd->opcode != MMC_SEND_TUNING_BLOCK_HS200)
+			/*
+			 * should not clear fifo/interrupt as the tune data
+			 * may have alreay come.
+			 */
+			msdc_reset_hw(host);
 		if (events & MSDC_INT_RSPCRCERR) {
 			cmd->error = -EILSEQ;
 			host->error |= REQ_CMD_EIO;
@@ -885,7 +891,11 @@ static void msdc_start_command(struct msdc_host *host,
 static void msdc_cmd_next(struct msdc_host *host,
 		struct mmc_request *mrq, struct mmc_command *cmd)
 {
-	if (cmd->error || (mrq->sbc && mrq->sbc->error))
+	if ((cmd->error &&
+	    !(cmd->error == -EILSEQ &&
+	      (cmd->opcode == MMC_SEND_TUNING_BLOCK ||
+	       cmd->opcode == MMC_SEND_TUNING_BLOCK_HS200))) ||
+	    (mrq->sbc && mrq->sbc->error))
 		msdc_request_done(host, mrq);
 	else if (cmd == mrq->sbc)
 		msdc_start_command(host, mrq, mrq->cmd);
-- 
1.8.1.1.dirty

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

fix some host driver defect Chaotian Jing <chaotian.jing@mediatek.com> - 2016-06-30 04:10 +0200
  [PATCH 3/4] mmc: mediatek: fix CMD21/CMD19 timeout issue Chaotian Jing <chaotian.jing@mediatek.com> - 2016-06-30 04:10 +0200
  [PATCH 2/4] mmc: mediatek: fix CRC error when calling mmc_select_hs400() Chaotian Jing <chaotian.jing@mediatek.com> - 2016-06-30 04:10 +0200
  [PATCH 4/4] mmc: mediatek: perfer to use rise edge latching Chaotian Jing <chaotian.jing@mediatek.com> - 2016-06-30 04:10 +0200
  [PATCH 1/4] mmc: mediatek: do not tune data for HS400 mode Chaotian Jing <chaotian.jing@mediatek.com> - 2016-06-30 04:10 +0200
  Re: fix some host driver defect Ulf Hansson <ulf.hansson@linaro.org> - 2016-07-06 18:30 +0200

csiph-web