diff options
| author | Dov Levenglick <dovl@codeaurora.org> | 2015-07-20 16:50:03 +0300 |
|---|---|---|
| committer | Subhash Jadavani <subhashj@codeaurora.org> | 2016-05-31 15:27:03 -0700 |
| commit | 348a140b51c072d00ca66d56e8d20e5fcab758ad (patch) | |
| tree | d722b1aa2812dfb597fca86c7239b95c40ac8350 | |
| parent | 9ee678d1ddb6864c140d0442a958f195c149d78a (diff) | |
mmc: host: add detect vops chain
Add call from sdio to host_ops to sdhci_ops
in order to indicate when a sdio card is detected.
This will be used by hosts that require special
handling for card detection.
Change-Id: I65ec6ee464d658cd938d9254a0a748e6137f9223
Signed-off-by: Dov Levenglick <dovl@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
| -rw-r--r-- | drivers/mmc/core/sdio.c | 3 | ||||
| -rw-r--r-- | drivers/mmc/host/sdhci.c | 9 | ||||
| -rw-r--r-- | drivers/mmc/host/sdhci.h | 1 | ||||
| -rw-r--r-- | include/linux/mmc/host.h | 1 |
4 files changed, 14 insertions, 0 deletions
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index b0ce838f7ee6..b3b1526e5609 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -890,6 +890,9 @@ static void mmc_sdio_detect(struct mmc_host *host) */ err = _mmc_detect_card_removed(host); + if (host->ops && host->ops->detect) + host->ops->detect(host, err); + mmc_release_host(host); /* diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 94bfc9c49806..a3903184a5f8 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -2574,6 +2574,14 @@ static void sdhci_card_event(struct mmc_host *mmc) spin_unlock_irqrestore(&host->lock, flags); } +static void sdhci_detect(struct mmc_host *mmc, bool detected) +{ + struct sdhci_host *host = mmc_priv(mmc); + + if (host->ops->detect) + host->ops->detect(host, detected); +} + static const struct mmc_host_ops sdhci_ops = { .request = sdhci_request, .post_req = sdhci_post_req, @@ -2594,6 +2602,7 @@ static const struct mmc_host_ops sdhci_ops = { .disable = sdhci_disable, .notify_load = sdhci_notify_load, .notify_halt = sdhci_notify_halt, + .detect = sdhci_detect, }; /*****************************************************************************\ diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index e8ff78f125c6..e6e818e89c39 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -666,6 +666,7 @@ struct sdhci_ops { int (*enable_controller_clock)(struct sdhci_host *host); void (*clear_set_dumpregs)(struct sdhci_host *host, bool set); void (*enhanced_strobe_mask)(struct sdhci_host *host, bool set); + void (*detect)(struct sdhci_host *host, bool detected); void (*dump_vendor_regs)(struct sdhci_host *host); void (*toggle_cdr)(struct sdhci_host *host, bool enable); void (*voltage_switch)(struct sdhci_host *host); diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 7f624c5338b5..9bf53de32a07 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h @@ -179,6 +179,7 @@ struct mmc_host_ops { int (*notify_load)(struct mmc_host *, enum mmc_load); void (*notify_halt)(struct mmc_host *mmc, bool halt); + void (*detect)(struct mmc_host *host, bool detected); }; struct mmc_card; |
