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@xxxxxxxxxxx> Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> --- 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); -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html