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@xxxxxxxxx> > --- > > 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 *); > > -- 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