From: Jerry Huang <Chang-Ming.Huang@xxxxxxxxxxxxx> Add callback function sdhci_get_cd to detect the card. In order to check if the card is present, we will read the PRESENT STATE register and check the bit15. Signed-off-by: Jerry Huang <Chang-Ming.Huang@xxxxxxxxxxxxx> --- drivers/mmc/host/sdhci.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 9e15f41..2e60372 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1262,6 +1262,24 @@ static int sdhci_get_ro(struct mmc_host *mmc) !is_readonly : is_readonly; } +static int sdhci_get_cd(struct mmc_host *mmc) +{ + struct sdhci_host *host = mmc_priv(mmc); + unsigned long flags; + int present; + + spin_lock_irqsave(&host->lock, flags); + + if (host->flags & SDHCI_DEVICE_DEAD) + present = 0; + else + present = sdhci_readl(host, SDHCI_PRESENT_STATE); + + spin_unlock_irqrestore(&host->lock, flags); + + return present & SDHCI_CARD_PRESENT; +} + static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable) { struct sdhci_host *host; @@ -1288,6 +1306,7 @@ static const struct mmc_host_ops sdhci_ops = { .request = sdhci_request, .set_ios = sdhci_set_ios, .get_ro = sdhci_get_ro, + .get_cd = sdhci_get_cd, .enable_sdio_irq = sdhci_enable_sdio_irq, }; -- 1.7.4.1 -- 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