From: Addy Ke <addy.ke@rock-chips.com> To: ulf.hansson@linaro.org, jh80.chung@samsung.com, olof@lixom.net, heiko@sntech.de Cc: javier.martinez@collabora.co.uk, huangtao@rock-chips.com, lintao@rock-chips.com, cf@rock-chips.com, linux-rockchip@lists.infradead.org, linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Addy Ke <addy.ke@rock-chips.com> Subject: [PATCH v2] mmc: dw_mmc: fix bug that cause mmc_test failture Date: Fri, 20 Feb 2015 10:55:25 +0800 [thread overview] Message-ID: <1424400925-3867-1-git-send-email-addy.ke@rock-chips.com> (raw) In-Reply-To: <1422273849-29773-1-git-send-email-addy.ke@rock-chips.com> The STOP command can terminate a data transfer between a memory card and mmc controller. As show in Synopsys DesignWare Cores Mobile Stroage Host Databook: Data timeout and Data end-bit error will terminate further data transfer by mmc controller. So we should not send abort command to terminate a data transfer again if we got DRTO and EBE interrupt. After this patch, all mmc_test cases can pass on RK3288-Pink2 board. Signed-off-by: Addy Ke <addy.ke@rock-chips.com> --- Changes in v2: - DRTO and EBE are both set, should not send abort command too, suggested by Doug Anderson. drivers/mmc/host/dw_mmc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 4d2e3c2..a27048a 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -1520,7 +1520,10 @@ static void dw_mci_tasklet_func(unsigned long priv) if (test_and_clear_bit(EVENT_DATA_ERROR, &host->pending_events)) { dw_mci_stop_dma(host); - send_stop_abort(host, data); + if (data->stop || + !(host->data_status & (SDMMC_INT_DRTO | + SDMMC_INT_EBE))) + send_stop_abort(host, data); state = STATE_DATA_ERROR; break; } @@ -1547,7 +1550,10 @@ static void dw_mci_tasklet_func(unsigned long priv) if (test_and_clear_bit(EVENT_DATA_ERROR, &host->pending_events)) { dw_mci_stop_dma(host); - send_stop_abort(host, data); + if (data->stop || + !(host->data_status & (SDMMC_INT_DRTO | + SDMMC_INT_EBE))) + send_stop_abort(host, data); state = STATE_DATA_ERROR; break; } -- 1.8.3.2
WARNING: multiple messages have this Message-ID (diff)
From: addy.ke@rock-chips.com (Addy Ke) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2] mmc: dw_mmc: fix bug that cause mmc_test failture Date: Fri, 20 Feb 2015 10:55:25 +0800 [thread overview] Message-ID: <1424400925-3867-1-git-send-email-addy.ke@rock-chips.com> (raw) In-Reply-To: <1422273849-29773-1-git-send-email-addy.ke@rock-chips.com> The STOP command can terminate a data transfer between a memory card and mmc controller. As show in Synopsys DesignWare Cores Mobile Stroage Host Databook: Data timeout and Data end-bit error will terminate further data transfer by mmc controller. So we should not send abort command to terminate a data transfer again if we got DRTO and EBE interrupt. After this patch, all mmc_test cases can pass on RK3288-Pink2 board. Signed-off-by: Addy Ke <addy.ke@rock-chips.com> --- Changes in v2: - DRTO and EBE are both set, should not send abort command too, suggested by Doug Anderson. drivers/mmc/host/dw_mmc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 4d2e3c2..a27048a 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -1520,7 +1520,10 @@ static void dw_mci_tasklet_func(unsigned long priv) if (test_and_clear_bit(EVENT_DATA_ERROR, &host->pending_events)) { dw_mci_stop_dma(host); - send_stop_abort(host, data); + if (data->stop || + !(host->data_status & (SDMMC_INT_DRTO | + SDMMC_INT_EBE))) + send_stop_abort(host, data); state = STATE_DATA_ERROR; break; } @@ -1547,7 +1550,10 @@ static void dw_mci_tasklet_func(unsigned long priv) if (test_and_clear_bit(EVENT_DATA_ERROR, &host->pending_events)) { dw_mci_stop_dma(host); - send_stop_abort(host, data); + if (data->stop || + !(host->data_status & (SDMMC_INT_DRTO | + SDMMC_INT_EBE))) + send_stop_abort(host, data); state = STATE_DATA_ERROR; break; } -- 1.8.3.2
next prev parent reply other threads:[~2015-02-20 2:56 UTC|newest] Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-01-26 12:04 [PATCH] mmc: dw_mmc: fix bug that cause mmc_test failture Addy Ke 2015-01-26 12:04 ` Addy Ke 2015-02-10 9:34 ` Olof Johansson 2015-02-10 9:34 ` Olof Johansson 2015-02-10 9:34 ` Olof Johansson 2015-02-11 3:03 ` Addy 2015-02-11 3:03 ` Addy 2015-02-11 3:03 ` Addy 2015-02-19 22:39 ` Doug Anderson 2015-02-19 22:39 ` Doug Anderson 2015-02-19 22:39 ` Doug Anderson 2015-02-20 2:55 ` Addy Ke [this message] 2015-02-20 2:55 ` [PATCH v2] " Addy Ke 2015-02-20 21:43 ` Doug Anderson 2015-02-20 21:43 ` Doug Anderson 2015-02-25 18:17 ` Javier Martinez Canillas 2015-02-25 18:17 ` Javier Martinez Canillas 2015-02-27 7:11 ` Jaehoon Chung 2015-02-27 7:11 ` Jaehoon Chung
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1424400925-3867-1-git-send-email-addy.ke@rock-chips.com \ --to=addy.ke@rock-chips.com \ --cc=cf@rock-chips.com \ --cc=heiko@sntech.de \ --cc=huangtao@rock-chips.com \ --cc=javier.martinez@collabora.co.uk \ --cc=jh80.chung@samsung.com \ --cc=lintao@rock-chips.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mmc@vger.kernel.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=olof@lixom.net \ --cc=ulf.hansson@linaro.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.