Linux MultiMedia Card development
 help / color / mirror / Atom feed
* [RFC PATCH 0/1] dw_mmc: checking card busy with Status register
@ 2011-03-25  6:00 Jaehoon Chung
  2011-03-25 10:58 ` Will Newton
  0 siblings, 1 reply; 2+ messages in thread
From: Jaehoon Chung @ 2011-03-25  6:00 UTC (permalink / raw)
  To: linux-mmc@vger.kernel.org; +Cc: will.newton, Chris Ball, Kyungmin Park

This RFC patch is applied checking card busy with status register.

In Status register, bit[9] indicate the card busy or not.
So, if we use this bit in status register, we can check the card busy or not.

Maybe, didn't increased the performance, but i think this approach is decreased
the CPU usage.

Anyone, let me know how think about this patch.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/mmc/host/dw_mmc.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 87e1f57..882d004 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -647,9 +647,26 @@ static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq)
 {
 	struct dw_mci_slot *slot = mmc_priv(mmc);
 	struct dw_mci *host = slot->host;
+	unsigned int timeout = 0x100;
 
 	WARN_ON(slot->mrq);
 
+	while (timeout) {
+		if ((mrq->data && (mrq->data->flags == MMC_DATA_READ)) ||
+			!(mci_readl(host, STATUS) & (1 << 9)))
+			break;
+
+		if (timeout == 0) {
+			dev_err(&host->pdev->dev, "Card is busy!!\n");
+			return;
+		}
+
+		if (!need_resched())
+			usleep_range(10, 50);
+
+		timeout--;
+	}
+
 	if (!test_bit(DW_MMC_CARD_PRESENT, &slot->flags)) {
 		mrq->cmd->error = -ENOMEDIUM;
 		mmc_request_done(mmc, mrq);

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [RFC PATCH 0/1] dw_mmc: checking card busy with Status register
  2011-03-25  6:00 [RFC PATCH 0/1] dw_mmc: checking card busy with Status register Jaehoon Chung
@ 2011-03-25 10:58 ` Will Newton
  0 siblings, 0 replies; 2+ messages in thread
From: Will Newton @ 2011-03-25 10:58 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: linux-mmc@vger.kernel.org, will.newton, Chris Ball, Kyungmin Park

On Fri, Mar 25, 2011 at 6:00 AM, Jaehoon Chung <jh80.chung@samsung.com> wrote:
> This RFC patch is applied checking card busy with status register.
>
> In Status register, bit[9] indicate the card busy or not.
> So, if we use this bit in status register, we can check the card busy or not.
>
> Maybe, didn't increased the performance, but i think this approach is decreased
> the CPU usage.
>
> Anyone, let me know how think about this patch.

Do you have any numbers to report how this patch altered CPU usage or
card throughput for you? e.g. oprofile output or dd performance

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-03-25 10:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-25  6:00 [RFC PATCH 0/1] dw_mmc: checking card busy with Status register Jaehoon Chung
2011-03-25 10:58 ` Will Newton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox