From 51a0aaf4661cb85089d2af019cdc31134c772087 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Mon, 17 Sep 2012 16:45:10 +0800 Subject: [PATCH] --- yaml --- r: 332825 b: refs/heads/master c: bec9d4e5939987053169a9bb48fc58b6a2d3e237 h: refs/heads/master i: 332823: 1571fdab597ba4415608180020e18944c3963101 v: v3 --- [refs] | 2 +- trunk/drivers/mmc/host/sdhci.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index e1f0375cb447..d0254d0a4e54 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5413da811fbb11bc0482c92cbb8415073591d462 +refs/heads/master: bec9d4e5939987053169a9bb48fc58b6a2d3e237 diff --git a/trunk/drivers/mmc/host/sdhci.c b/trunk/drivers/mmc/host/sdhci.c index d98b1992d778..0e15c79014fb 100644 --- a/trunk/drivers/mmc/host/sdhci.c +++ b/trunk/drivers/mmc/host/sdhci.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "sdhci.h" @@ -1293,6 +1294,13 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) present = sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT; + /* If we're using a cd-gpio, testing the presence bit might fail. */ + if (!present) { + int ret = mmc_gpio_get_cd(host->mmc); + if (ret > 0) + present = true; + } + if (!present || host->flags & SDHCI_DEVICE_DEAD) { host->mrq->cmd->error = -ENOMEDIUM; tasklet_schedule(&host->finish_tasklet);