mmc: sdhci-esdhc-imx: SDHCI_CARD_PRESENT does not get cleared
authorShawn Guo <shawn.guo@linaro.org>
Tue, 21 Jun 2011 14:41:49 +0000 (22:41 +0800)
committerChris Ball <cjb@laptop.org>
Wed, 20 Jul 2011 21:21:02 +0000 (17:21 -0400)
The function esdhc_readl_le intends to clear bit SDHCI_CARD_PRESENT,
when the card detect gpio tells there is no card.  But it does not
clear the bit actually.  The patch gives a fix on that.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: <stable@kernel.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/sdhci-esdhc-imx.c

index 7cfb768126cc0761ea4d8416a3a70277ceeea663..01d42601e8dcfe4087473a673717d86c470d6460 100644 (file)
@@ -72,7 +72,7 @@ static u32 esdhc_readl_le(struct sdhci_host *host, int reg)
                if (boarddata && gpio_is_valid(boarddata->cd_gpio)
                                && gpio_get_value(boarddata->cd_gpio))
                        /* no card, if a valid gpio says so... */
-                       val &= SDHCI_CARD_PRESENT;
+                       val &= ~SDHCI_CARD_PRESENT;
                else
                        /* ... in all other cases assume card is present */
                        val |= SDHCI_CARD_PRESENT;