> -----Original Message----- > From: linux-mmc-owner@xxxxxxxxxxxxxxx [mailto:linux-mmc-owner@xxxxxxxxxxxxxxx] On Behalf Of Ulf Hansson > Sent: Thursday, March 28, 2013 12:12 AM > To: linux-mmc@xxxxxxxxxxxxxxx; Chris Ball > Cc: Ulf Hansson > Subject: [PATCH] mmc: core: Re-use code for MMC_CAP2_DETECT_ON_ERR in polling mode > > From: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > > 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@xxxxxxxxxx> > --- > drivers/mmc/core/core.c | 5 ++--- > include/linux/mmc/host.h | 1 - > 2 files changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c > index ad7decc..59ae194 100644 > --- a/drivers/mmc/core/core.c > +++ b/drivers/mmc/core/core.c > @@ -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. > diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h > index 17d7148..301892a 100644 > --- a/include/linux/mmc/host.h > +++ b/include/linux/mmc/host.h > @@ -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 */ Reviewed-by: Kevin Liu <kliu5@xxxxxxxxxxx> > -- > 1.7.10 > > -- > 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 -- 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