linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH RESEND] mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend
       [not found] <1386764492-26444-1-git-send-email-adrian.hunter@intel.com>
@ 2013-12-11 12:43 ` Adrian Hunter
  2014-01-13  7:32 ` [PATCH V2 " Adrian Hunter
  1 sibling, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2013-12-11 12:43 UTC (permalink / raw)
  To: Chris Ball; +Cc: linux-mmc, stable

Hi

For some reason this email doesn't seem to get
onto the mailing lists.  I am trying to figure out
why.


On 11/12/13 14:21, Adrian Hunter wrote:
> A host controller for a SD card may need a GPIO
> for card detect in order to wake up from runtime
> suspend when a card is inserted.  If that GPIO is
> not configured, then the host controller will not
> wake up.  Fix that for the affected devices by not
> enabling runtime PM unless the GPIO is successfully
> set up.
> 
> This affects BYT sd card host controller which had
> runtime PM enabled from v3.11.  For completeness,
> the MFD sd card host controller is flagged also.
> 
> Tested on v3.11.10 and v3.12.4 although the patch
> applies with some offsets and fuzz.
> 
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> Cc: stable <stable@vger.kernel.org> # 3.11+
> ---
>  drivers/mmc/host/sdhci-pci.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
> index 8f75381..7b930e6 100644
> --- a/drivers/mmc/host/sdhci-pci.c
> +++ b/drivers/mmc/host/sdhci-pci.c
> @@ -65,6 +65,7 @@ struct sdhci_pci_fixes {
>  	unsigned int		quirks;
>  	unsigned int		quirks2;
>  	bool			allow_runtime_pm;
> +	bool			own_cd_for_runtime_pm;
>  
>  	int			(*probe) (struct sdhci_pci_chip *);
>  
> @@ -296,6 +297,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1_hc2 = {
>  static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = {
>  	.quirks		= SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
>  	.allow_runtime_pm = true,
> +	.own_cd_for_runtime_pm = true,
>  };
>  
>  static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = {
> @@ -360,6 +362,7 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
>  static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
>  	.quirks2	= SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON,
>  	.allow_runtime_pm = true,
> +	.own_cd_for_runtime_pm = true,
>  };
>  
>  /* Define Host controllers for Intel Merrifield platform */
> @@ -1457,6 +1460,14 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
>  
>  	sdhci_pci_add_own_cd(slot);
>  
> +	/*
> +	 * Check if the chip needs a separate GPIO for card detect to wake up
> +	 * from runtime suspend.  If it is not there, don't allow runtime PM.
> +	 * Note sdhci_pci_add_own_cd() sets slot->cd_gpio to -EINVAL on failure.
> +	 */
> +	if (chip->fixes->own_cd_for_runtime_pm && !gpio_is_valid(slot->cd_gpio))
> +		chip->allow_runtime_pm = false;
> +
>  	return slot;
>  
>  remove:
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH V2 mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend
       [not found] <1386764492-26444-1-git-send-email-adrian.hunter@intel.com>
  2013-12-11 12:43 ` [PATCH RESEND] mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend Adrian Hunter
@ 2014-01-13  7:32 ` Adrian Hunter
  2014-01-13  7:49   ` [PATCH V3] " Adrian Hunter
  1 sibling, 1 reply; 6+ messages in thread
From: Adrian Hunter @ 2014-01-13  7:32 UTC (permalink / raw)
  Cc: Chris Ball, linux-mmc

A host controller for a SD card may need a GPIO
for card detect in order to wake up from runtime
suspend when a card is inserted.  If that GPIO is
not configured, then the host controller will not
wake up.  Fix that for the affected devices by not
enabling runtime PM unless the GPIO is successfully
set up.

This affects BYT sd card host controller which had
runtime PM enabled from v3.11.  For completeness,
the MFD sd card host controller is flagged also.

Tested on v3.11.10 and v3.12.4 although the patch
applies with some offsets and fuzz.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: stable <stable@vger.kernel.org> # 3.11+
---

V2: Rebased


 drivers/mmc/host/sdhci-pci.c | 10 ++++++++++
 drivers/mmc/host/sdhci-pci.h |  1 +
 2 files changed, 11 insertions(+)

diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
index c1a7f31..d520366 100644
--- a/drivers/mmc/host/sdhci-pci.c
+++ b/drivers/mmc/host/sdhci-pci.c
@@ -225,6 +225,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1_hc2 = {
 static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = {
 	.quirks		= SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
 	.allow_runtime_pm = true,
+	.own_cd_for_runtime_pm = true,
 };
 
 static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = {
@@ -289,6 +290,7 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
 static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
 	.quirks2	= SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON,
 	.allow_runtime_pm = true,
+	.own_cd_for_runtime_pm = true,
 };
 
 /* Define Host controllers for Intel Merrifield platform */
@@ -1370,6 +1372,14 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
 
 	sdhci_pci_add_own_cd(slot);
 
+	/*
+	 * Check if the chip needs a separate GPIO for card detect to wake up
+	 * from runtime suspend.  If it is not there, don't allow runtime PM.
+	 * Note sdhci_pci_add_own_cd() sets slot->cd_gpio to -EINVAL on failure.
+	 */
+	if (chip->fixes->own_cd_for_runtime_pm && !gpio_is_valid(slot->cd_gpio))
+		chip->allow_runtime_pm = false;
+
 	return slot;
 
 remove:
diff --git a/drivers/mmc/host/sdhci-pci.h b/drivers/mmc/host/sdhci-pci.h
index 0347804..6d71871 100644
--- a/drivers/mmc/host/sdhci-pci.h
+++ b/drivers/mmc/host/sdhci-pci.h
@@ -39,6 +39,7 @@ struct sdhci_pci_fixes {
 	unsigned int		quirks;
 	unsigned int		quirks2;
 	bool			allow_runtime_pm;
+	bool			own_cd_for_runtime_pm;
 
 	int			(*probe) (struct sdhci_pci_chip *);
 
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH V3] mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend
  2014-01-13  7:32 ` [PATCH V2 " Adrian Hunter
@ 2014-01-13  7:49   ` Adrian Hunter
  2014-01-20  6:15     ` Adrian Hunter
  2014-01-20 15:38     ` Chris Ball
  0 siblings, 2 replies; 6+ messages in thread
From: Adrian Hunter @ 2014-01-13  7:49 UTC (permalink / raw)
  To: Chris Ball; +Cc: linux-mmc

A host controller for a SD card may need a GPIO
for card detect in order to wake up from runtime
suspend when a card is inserted.  If that GPIO is
not configured, then the host controller will not
wake up.  Fix that for the affected devices by not
enabling runtime PM unless the GPIO is successfully
set up.

This affects BYT sd card host controller which had
runtime PM enabled from v3.11.  For completeness,
the MFD sd card host controller is flagged also.

The original patch before rebasing (see link below)
was tested on v3.11.10 and v3.12.4 although the
patch applied with some offsets and fuzz.  The
original patch is here:

    http://marc.info/?l=linux-mmc&m=138676702327057) was tested on v3.11.10 and v3.12.4

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---

V3: Update comments to reflect that the original patch
applies to stable trees whereas the rebased patch does
not.

V2: Rebased

 drivers/mmc/host/sdhci-pci.c | 10 ++++++++++
 drivers/mmc/host/sdhci-pci.h |  1 +
 2 files changed, 11 insertions(+)

diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
index c1a7f31..d520366 100644
--- a/drivers/mmc/host/sdhci-pci.c
+++ b/drivers/mmc/host/sdhci-pci.c
@@ -225,6 +225,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1_hc2 = {
 static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = {
 	.quirks		= SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
 	.allow_runtime_pm = true,
+	.own_cd_for_runtime_pm = true,
 };
 
 static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = {
@@ -289,6 +290,7 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
 static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
 	.quirks2	= SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON,
 	.allow_runtime_pm = true,
+	.own_cd_for_runtime_pm = true,
 };
 
 /* Define Host controllers for Intel Merrifield platform */
@@ -1370,6 +1372,14 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
 
 	sdhci_pci_add_own_cd(slot);
 
+	/*
+	 * Check if the chip needs a separate GPIO for card detect to wake up
+	 * from runtime suspend.  If it is not there, don't allow runtime PM.
+	 * Note sdhci_pci_add_own_cd() sets slot->cd_gpio to -EINVAL on failure.
+	 */
+	if (chip->fixes->own_cd_for_runtime_pm && !gpio_is_valid(slot->cd_gpio))
+		chip->allow_runtime_pm = false;
+
 	return slot;
 
 remove:
diff --git a/drivers/mmc/host/sdhci-pci.h b/drivers/mmc/host/sdhci-pci.h
index 0347804..6d71871 100644
--- a/drivers/mmc/host/sdhci-pci.h
+++ b/drivers/mmc/host/sdhci-pci.h
@@ -39,6 +39,7 @@ struct sdhci_pci_fixes {
 	unsigned int		quirks;
 	unsigned int		quirks2;
 	bool			allow_runtime_pm;
+	bool			own_cd_for_runtime_pm;
 
 	int			(*probe) (struct sdhci_pci_chip *);
 
-- 
1.7.11.7

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH V3] mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend
  2014-01-13  7:49   ` [PATCH V3] " Adrian Hunter
@ 2014-01-20  6:15     ` Adrian Hunter
  2014-01-20  6:18       ` Adrian Hunter
  2014-01-20 15:38     ` Chris Ball
  1 sibling, 1 reply; 6+ messages in thread
From: Adrian Hunter @ 2014-01-20  6:15 UTC (permalink / raw)
  To: Chris Ball; +Cc: linux-mmc

Ping?

On 13/01/14 09:49, Adrian Hunter wrote:
> A host controller for a SD card may need a GPIO
> for card detect in order to wake up from runtime
> suspend when a card is inserted.  If that GPIO is
> not configured, then the host controller will not
> wake up.  Fix that for the affected devices by not
> enabling runtime PM unless the GPIO is successfully
> set up.
> 
> This affects BYT sd card host controller which had
> runtime PM enabled from v3.11.  For completeness,
> the MFD sd card host controller is flagged also.
> 
> The original patch before rebasing (see link below)
> was tested on v3.11.10 and v3.12.4 although the
> patch applied with some offsets and fuzz.  The
> original patch is here:
> 
>     http://marc.info/?l=linux-mmc&m=138676702327057) was tested on v3.11.10 and v3.12.4
> 
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
> 
> V3: Update comments to reflect that the original patch
> applies to stable trees whereas the rebased patch does
> not.
> 
> V2: Rebased
> 
>  drivers/mmc/host/sdhci-pci.c | 10 ++++++++++
>  drivers/mmc/host/sdhci-pci.h |  1 +
>  2 files changed, 11 insertions(+)
> 
> diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
> index c1a7f31..d520366 100644
> --- a/drivers/mmc/host/sdhci-pci.c
> +++ b/drivers/mmc/host/sdhci-pci.c
> @@ -225,6 +225,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1_hc2 = {
>  static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = {
>  	.quirks		= SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
>  	.allow_runtime_pm = true,
> +	.own_cd_for_runtime_pm = true,
>  };
>  
>  static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = {
> @@ -289,6 +290,7 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
>  static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
>  	.quirks2	= SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON,
>  	.allow_runtime_pm = true,
> +	.own_cd_for_runtime_pm = true,
>  };
>  
>  /* Define Host controllers for Intel Merrifield platform */
> @@ -1370,6 +1372,14 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
>  
>  	sdhci_pci_add_own_cd(slot);
>  
> +	/*
> +	 * Check if the chip needs a separate GPIO for card detect to wake up
> +	 * from runtime suspend.  If it is not there, don't allow runtime PM.
> +	 * Note sdhci_pci_add_own_cd() sets slot->cd_gpio to -EINVAL on failure.
> +	 */
> +	if (chip->fixes->own_cd_for_runtime_pm && !gpio_is_valid(slot->cd_gpio))
> +		chip->allow_runtime_pm = false;
> +
>  	return slot;
>  
>  remove:
> diff --git a/drivers/mmc/host/sdhci-pci.h b/drivers/mmc/host/sdhci-pci.h
> index 0347804..6d71871 100644
> --- a/drivers/mmc/host/sdhci-pci.h
> +++ b/drivers/mmc/host/sdhci-pci.h
> @@ -39,6 +39,7 @@ struct sdhci_pci_fixes {
>  	unsigned int		quirks;
>  	unsigned int		quirks2;
>  	bool			allow_runtime_pm;
> +	bool			own_cd_for_runtime_pm;
>  
>  	int			(*probe) (struct sdhci_pci_chip *);
>  
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V3] mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend
  2014-01-20  6:15     ` Adrian Hunter
@ 2014-01-20  6:18       ` Adrian Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2014-01-20  6:18 UTC (permalink / raw)
  To: Chris Ball, Chris Ball; +Cc: linux-mmc

+ chris@printf.net

On 20/01/14 08:15, Adrian Hunter wrote:
> Ping?
> 
> On 13/01/14 09:49, Adrian Hunter wrote:
>> A host controller for a SD card may need a GPIO
>> for card detect in order to wake up from runtime
>> suspend when a card is inserted.  If that GPIO is
>> not configured, then the host controller will not
>> wake up.  Fix that for the affected devices by not
>> enabling runtime PM unless the GPIO is successfully
>> set up.
>>
>> This affects BYT sd card host controller which had
>> runtime PM enabled from v3.11.  For completeness,
>> the MFD sd card host controller is flagged also.
>>
>> The original patch before rebasing (see link below)
>> was tested on v3.11.10 and v3.12.4 although the
>> patch applied with some offsets and fuzz.  The
>> original patch is here:
>>
>>     http://marc.info/?l=linux-mmc&m=138676702327057) was tested on v3.11.10 and v3.12.4
>>
>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>> ---
>>
>> V3: Update comments to reflect that the original patch
>> applies to stable trees whereas the rebased patch does
>> not.
>>
>> V2: Rebased
>>
>>  drivers/mmc/host/sdhci-pci.c | 10 ++++++++++
>>  drivers/mmc/host/sdhci-pci.h |  1 +
>>  2 files changed, 11 insertions(+)
>>
>> diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
>> index c1a7f31..d520366 100644
>> --- a/drivers/mmc/host/sdhci-pci.c
>> +++ b/drivers/mmc/host/sdhci-pci.c
>> @@ -225,6 +225,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1_hc2 = {
>>  static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = {
>>  	.quirks		= SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
>>  	.allow_runtime_pm = true,
>> +	.own_cd_for_runtime_pm = true,
>>  };
>>  
>>  static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = {
>> @@ -289,6 +290,7 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
>>  static const struct sdhci_pci_fixes sdhci_intel_byt_sd = {
>>  	.quirks2	= SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON,
>>  	.allow_runtime_pm = true,
>> +	.own_cd_for_runtime_pm = true,
>>  };
>>  
>>  /* Define Host controllers for Intel Merrifield platform */
>> @@ -1370,6 +1372,14 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
>>  
>>  	sdhci_pci_add_own_cd(slot);
>>  
>> +	/*
>> +	 * Check if the chip needs a separate GPIO for card detect to wake up
>> +	 * from runtime suspend.  If it is not there, don't allow runtime PM.
>> +	 * Note sdhci_pci_add_own_cd() sets slot->cd_gpio to -EINVAL on failure.
>> +	 */
>> +	if (chip->fixes->own_cd_for_runtime_pm && !gpio_is_valid(slot->cd_gpio))
>> +		chip->allow_runtime_pm = false;
>> +
>>  	return slot;
>>  
>>  remove:
>> diff --git a/drivers/mmc/host/sdhci-pci.h b/drivers/mmc/host/sdhci-pci.h
>> index 0347804..6d71871 100644
>> --- a/drivers/mmc/host/sdhci-pci.h
>> +++ b/drivers/mmc/host/sdhci-pci.h
>> @@ -39,6 +39,7 @@ struct sdhci_pci_fixes {
>>  	unsigned int		quirks;
>>  	unsigned int		quirks2;
>>  	bool			allow_runtime_pm;
>> +	bool			own_cd_for_runtime_pm;
>>  
>>  	int			(*probe) (struct sdhci_pci_chip *);
>>  
>>
> 
> 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V3] mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend
  2014-01-13  7:49   ` [PATCH V3] " Adrian Hunter
  2014-01-20  6:15     ` Adrian Hunter
@ 2014-01-20 15:38     ` Chris Ball
  1 sibling, 0 replies; 6+ messages in thread
From: Chris Ball @ 2014-01-20 15:38 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: linux-mmc

Hi Adrian,

On Mon, Jan 13 2014, Adrian Hunter wrote:
> A host controller for a SD card may need a GPIO
> for card detect in order to wake up from runtime
> suspend when a card is inserted.  If that GPIO is
> not configured, then the host controller will not
> wake up.  Fix that for the affected devices by not
> enabling runtime PM unless the GPIO is successfully
> set up.
>
> This affects BYT sd card host controller which had
> runtime PM enabled from v3.11.  For completeness,
> the MFD sd card host controller is flagged also.
>
> The original patch before rebasing (see link below)
> was tested on v3.11.10 and v3.12.4 although the
> patch applied with some offsets and fuzz.  The
> original patch is here:
>
>     http://marc.info/?l=linux-mmc&m=138676702327057) was tested on v3.11.10 and v3.12.4
>
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
>
> V3: Update comments to reflect that the original patch
> applies to stable trees whereas the rebased patch does
> not.
>
> V2: Rebased

Thanks, pushed v3 to mmc-next for 3.14.  Looks like you lost the
stable@ tag in v3 (and have a mispaste after the URL), so I added
it back and cleared up the text.

- Chris.
-- 
Chris Ball   <chris@printf.net>   <http://printf.net/>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-01-20 15:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1386764492-26444-1-git-send-email-adrian.hunter@intel.com>
2013-12-11 12:43 ` [PATCH RESEND] mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend Adrian Hunter
2014-01-13  7:32 ` [PATCH V2 " Adrian Hunter
2014-01-13  7:49   ` [PATCH V3] " Adrian Hunter
2014-01-20  6:15     ` Adrian Hunter
2014-01-20  6:18       ` Adrian Hunter
2014-01-20 15:38     ` Chris Ball

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).