* [PATCH v2 0/3] mmc: sdhci: Card detection fixes
@ 2015-07-06 12:16 Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 1/3] mmc: sdhci: let GPIO based card detection have higher precedence Ivan T. Ivanov
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Ivan T. Ivanov @ 2015-07-06 12:16 UTC (permalink / raw)
To: Ulf Hansson
Cc: Adrian Hunter, Tim Kryger, Aisheng Dong, linux-mmc, linux-kernel,
linux-arm-msm
Following changes aimed to fix some aspects of card detection, when
BROKEN_CARD_DETECTION quirk is set.
Changes since first version [1]:
* Patch 1/3 is a modified to first check for MMC_CAP_NONREMOVABLE
and then check for a valid value in "gpio_cd"
[1] http://permalink.gmane.org/gmane.linux.kernel.mmc/32875
Ivan T. Ivanov (3):
mmc: sdhci: let GPIO based card detection have higher precedence
mmc: sdhci: don't use card state polling when CD GPIO is defined
mmc: sdhci: properly check card present state when quirk
NO_CARD_NO_RESET is set
drivers/mmc/host/sdhci.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/3] mmc: sdhci: let GPIO based card detection have higher precedence
2015-07-06 12:16 [PATCH v2 0/3] mmc: sdhci: Card detection fixes Ivan T. Ivanov
@ 2015-07-06 12:16 ` Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 2/3] mmc: sdhci: don't use card state polling when CD GPIO is defined Ivan T. Ivanov
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Ivan T. Ivanov @ 2015-07-06 12:16 UTC (permalink / raw)
To: Ulf Hansson
Cc: Adrian Hunter, Tim Kryger, Aisheng Dong, linux-mmc, linux-kernel,
linux-arm-msm
Controller could have BROKEN_CARD_DETECTION quirk set, but drivers
could use GPIO to detect card present state. Let, when defined, GPIO
take precedence, so drivers could properly detect card state and not
use polling.
Signed-off-by: Ivan T. Ivanov <ivan.ivanov@linaro.org>
---
drivers/mmc/host/sdhci.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index bc14452..dd91b24 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1601,15 +1601,21 @@ static int sdhci_do_get_cd(struct sdhci_host *host)
if (host->flags & SDHCI_DEVICE_DEAD)
return 0;
- /* If polling/nonremovable, assume that the card is always present. */
- if ((host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) ||
- (host->mmc->caps & MMC_CAP_NONREMOVABLE))
+ /* If nonremovable, assume that the card is always present. */
+ if (host->mmc->caps & MMC_CAP_NONREMOVABLE)
return 1;
- /* Try slot gpio detect */
+ /*
+ * Try slot gpio detect, if defined it take precedence
+ * over build in controller functionality
+ */
if (!IS_ERR_VALUE(gpio_cd))
return !!gpio_cd;
+ /* If polling, assume that the card is always present. */
+ if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)
+ return 1;
+
/* Host native card detect */
return !!(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT);
}
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/3] mmc: sdhci: don't use card state polling when CD GPIO is defined
2015-07-06 12:16 [PATCH v2 0/3] mmc: sdhci: Card detection fixes Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 1/3] mmc: sdhci: let GPIO based card detection have higher precedence Ivan T. Ivanov
@ 2015-07-06 12:16 ` Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 3/3] mmc: sdhci: properly check card present state when quirk NO_CARD_NO_RESET is set Ivan T. Ivanov
2015-07-20 14:21 ` [PATCH v2 0/3] mmc: sdhci: Card detection fixes Ulf Hansson
3 siblings, 0 replies; 5+ messages in thread
From: Ivan T. Ivanov @ 2015-07-06 12:16 UTC (permalink / raw)
To: Ulf Hansson
Cc: Adrian Hunter, Tim Kryger, Aisheng Dong, linux-mmc, linux-kernel,
linux-arm-msm
There is no reason to use polling for card detection state change when
drivers are using dedicated GPIO for this. Don't poll in this case.
Signed-off-by: Ivan T. Ivanov <ivan.ivanov@linaro.org>
---
drivers/mmc/host/sdhci.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index dd91b24..02ac7a4 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -3124,7 +3124,8 @@ int sdhci_add_host(struct sdhci_host *host)
mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
if ((host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) &&
- !(mmc->caps & MMC_CAP_NONREMOVABLE))
+ !(mmc->caps & MMC_CAP_NONREMOVABLE) &&
+ IS_ERR_VALUE(mmc_gpio_get_cd(host->mmc)))
mmc->caps |= MMC_CAP_NEEDS_POLL;
/* If there are external regulators, get them */
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 3/3] mmc: sdhci: properly check card present state when quirk NO_CARD_NO_RESET is set
2015-07-06 12:16 [PATCH v2 0/3] mmc: sdhci: Card detection fixes Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 1/3] mmc: sdhci: let GPIO based card detection have higher precedence Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 2/3] mmc: sdhci: don't use card state polling when CD GPIO is defined Ivan T. Ivanov
@ 2015-07-06 12:16 ` Ivan T. Ivanov
2015-07-20 14:21 ` [PATCH v2 0/3] mmc: sdhci: Card detection fixes Ulf Hansson
3 siblings, 0 replies; 5+ messages in thread
From: Ivan T. Ivanov @ 2015-07-06 12:16 UTC (permalink / raw)
To: Ulf Hansson
Cc: Adrian Hunter, Tim Kryger, Aisheng Dong, linux-mmc, linux-kernel,
linux-arm-msm
Controller could have both NO_CARD_NO_RESET and BROKEN_CARD_DETECTION
quirks set. Use sdhci_do_get_cd() when applying NO_CARD_NO_RESET, which
properly check for BROKEN_CARD_DETECTION quirk.
Signed-off-by: Ivan T. Ivanov <ivan.ivanov@linaro.org>
---
drivers/mmc/host/sdhci.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 02ac7a4..e22e47c 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -207,8 +207,7 @@ EXPORT_SYMBOL_GPL(sdhci_reset);
static void sdhci_do_reset(struct sdhci_host *host, u8 mask)
{
if (host->quirks & SDHCI_QUIRK_NO_CARD_NO_RESET) {
- if (!(sdhci_readl(host, SDHCI_PRESENT_STATE) &
- SDHCI_CARD_PRESENT))
+ if (!sdhci_do_get_cd(host))
return;
}
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 0/3] mmc: sdhci: Card detection fixes
2015-07-06 12:16 [PATCH v2 0/3] mmc: sdhci: Card detection fixes Ivan T. Ivanov
` (2 preceding siblings ...)
2015-07-06 12:16 ` [PATCH v2 3/3] mmc: sdhci: properly check card present state when quirk NO_CARD_NO_RESET is set Ivan T. Ivanov
@ 2015-07-20 14:21 ` Ulf Hansson
3 siblings, 0 replies; 5+ messages in thread
From: Ulf Hansson @ 2015-07-20 14:21 UTC (permalink / raw)
To: Ivan T. Ivanov
Cc: Adrian Hunter, Tim Kryger, Aisheng Dong, linux-mmc,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org
On 6 July 2015 at 14:16, Ivan T. Ivanov <ivan.ivanov@linaro.org> wrote:
> Following changes aimed to fix some aspects of card detection, when
> BROKEN_CARD_DETECTION quirk is set.
>
> Changes since first version [1]:
>
> * Patch 1/3 is a modified to first check for MMC_CAP_NONREMOVABLE
> and then check for a valid value in "gpio_cd"
>
> [1] http://permalink.gmane.org/gmane.linux.kernel.mmc/32875
>
> Ivan T. Ivanov (3):
> mmc: sdhci: let GPIO based card detection have higher precedence
> mmc: sdhci: don't use card state polling when CD GPIO is defined
> mmc: sdhci: properly check card present state when quirk
> NO_CARD_NO_RESET is set
>
> drivers/mmc/host/sdhci.c | 20 +++++++++++++-------
> 1 file changed, 13 insertions(+), 7 deletions(-)
>
> --
> 1.9.1
>
Thanks, applied!
Kind regards
Uffe
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-07-20 14:21 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-06 12:16 [PATCH v2 0/3] mmc: sdhci: Card detection fixes Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 1/3] mmc: sdhci: let GPIO based card detection have higher precedence Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 2/3] mmc: sdhci: don't use card state polling when CD GPIO is defined Ivan T. Ivanov
2015-07-06 12:16 ` [PATCH v2 3/3] mmc: sdhci: properly check card present state when quirk NO_CARD_NO_RESET is set Ivan T. Ivanov
2015-07-20 14:21 ` [PATCH v2 0/3] mmc: sdhci: Card detection fixes Ulf Hansson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox