mmc: core: Re-use code for MMC_CAP2_DETECT_ON_ERR in polling mode
authorUlf Hansson <ulf.hansson@linaro.org>
Thu, 18 Apr 2013 09:02:07 +0000 (11:02 +0200)
committerChris Ball <cjb@laptop.org>
Sun, 26 May 2013 18:23:12 +0000 (14:23 -0400)
Previously the MMC_CAP2_DETECT_ON_ERR was invented for detecting
slow card removal. In was never a realy good solution and a proper
fix has been merged using gpio debouncing instead. We remove this
cap in this patch.

Although when using polling card detect mode, the code invented for
MMC_CAP2_DETECT_ON_ERR is re-used to complete card removal in an
earlier phase. There are no need waiting for the polling timeout to
elapse in this case.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Kevin Liu <kliu5@marvell.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/core/core.c
include/linux/mmc/host.h

index c40396f23202d607a089f414a6afa224d16d0948..6e4d04df37e06876e22e113678bcec4d04cdfda7 100644 (file)
@@ -2325,14 +2325,13 @@ int mmc_detect_card_removed(struct mmc_host *host)
         * The card will be considered unchanged unless we have been asked to
         * detect a change or host requires polling to provide card detection.
         */
-       if (!host->detect_change && !(host->caps & MMC_CAP_NEEDS_POLL) &&
-           !(host->caps2 & MMC_CAP2_DETECT_ON_ERR))
+       if (!host->detect_change && !(host->caps & MMC_CAP_NEEDS_POLL))
                return ret;
 
        host->detect_change = 0;
        if (!ret) {
                ret = _mmc_detect_card_removed(host);
-               if (ret && (host->caps2 & MMC_CAP2_DETECT_ON_ERR)) {
+               if (ret && (host->caps & MMC_CAP_NEEDS_POLL)) {
                        /*
                         * Schedule a detect work as soon as possible to let a
                         * rescan handle the card removal.
index e326ae2882a0c5155045a594186a5ded1768444f..38f60a97b21838754a39f1ced2156baec2f5ab32 100644 (file)
@@ -272,7 +272,6 @@ struct mmc_host {
 #define MMC_CAP2_HS200         (MMC_CAP2_HS200_1_8V_SDR | \
                                 MMC_CAP2_HS200_1_2V_SDR)
 #define MMC_CAP2_BROKEN_VOLTAGE        (1 << 7)        /* Use the broken voltage */
-#define MMC_CAP2_DETECT_ON_ERR (1 << 8)        /* On I/O err check card removal */
 #define MMC_CAP2_HC_ERASE_SZ   (1 << 9)        /* High-capacity erase size */
 #define MMC_CAP2_CD_ACTIVE_HIGH        (1 << 10)       /* Card-detect signal active high */
 #define MMC_CAP2_RO_ACTIVE_HIGH        (1 << 11)       /* Write-protect signal active high */