All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: linux-mmc <linux-mmc@vger.kernel.org>,
	Lakshmi Sai Krishna Potthuri
	<lakshmi.sai.krishna.potthuri@xilinx.com>,
	"Ivan T. Ivanov" <ivan.ivanov@linaro.org>,
	Russell King <linux@arm.linux.org.uk>
Subject: [PATCH 1/3] mmc: sdhci: Add get_cd sdhci host operation
Date: Fri, 22 Jan 2016 11:45:00 +0200	[thread overview]
Message-ID: <1453455902-3987-2-git-send-email-adrian.hunter@intel.com> (raw)
In-Reply-To: <1453455902-3987-1-git-send-email-adrian.hunter@intel.com>

In the future sdhci will be a library.  When that happens
a callback will be needed to allow drivers easily to override
the standard way of determining whether a card is present.
That is needed because functions like sdhci_request() also
check the card presence.

The get_cd callback is being added now to facilitate
a bug fix, for which subsequent patches are provided.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: stable@vger.kernel.org # v4.4+
---
 drivers/mmc/host/sdhci.c | 6 +++++-
 drivers/mmc/host/sdhci.h | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index d622435d1bcc..535236084b27 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1612,7 +1612,7 @@ static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 
 static int sdhci_do_get_cd(struct sdhci_host *host)
 {
-	int gpio_cd = mmc_gpio_get_cd(host->mmc);
+	int gpio_cd;
 
 	if (host->flags & SDHCI_DEVICE_DEAD)
 		return 0;
@@ -1621,10 +1621,14 @@ static int sdhci_do_get_cd(struct sdhci_host *host)
 	if (host->mmc->caps & MMC_CAP_NONREMOVABLE)
 		return 1;
 
+	if (host->ops->get_cd)
+		return host->ops->get_cd(host);
+
 	/*
 	 * Try slot gpio detect, if defined it take precedence
 	 * over build in controller functionality
 	 */
+	gpio_cd = mmc_gpio_get_cd(host->mmc);
 	if (!IS_ERR_VALUE(gpio_cd))
 		return !!gpio_cd;
 
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 7654ae5d2b4e..a6c2cd8ef0b2 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -552,6 +552,7 @@ struct sdhci_ops {
 					 struct mmc_card *card,
 					 unsigned int max_dtr, int host_drv,
 					 int card_drv, int *drv_type);
+	int	(*get_cd)(struct sdhci_host *host);
 };
 
 #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
-- 
1.9.1


  reply	other threads:[~2016-01-22  9:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-22  9:44 [PATCH 0/3] mmc: sdhci: Fix card detect race for Intel BXT/APL Adrian Hunter
2016-01-22  9:45 ` Adrian Hunter [this message]
2016-01-22 12:07   ` [PATCH 1/3] mmc: sdhci: Add get_cd sdhci host operation Ulf Hansson
2016-01-22 14:58     ` Adrian Hunter
2016-01-22  9:45 ` [PATCH 2/3] mmc: sdhci-pci: Fix card detect race for Intel BXT/APL Adrian Hunter
2016-01-22  9:45 ` [PATCH 3/3] mmc: sdhci-acpi: " Adrian Hunter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1453455902-3987-2-git-send-email-adrian.hunter@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=ivan.ivanov@linaro.org \
    --cc=lakshmi.sai.krishna.potthuri@xilinx.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.