mmc: sdhci-pci: add SDHCI_QUIRK2_HOST_OFF_CARD_ON for Medfield SDIO
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 7 Feb 2012 12:48:55 +0000 (14:48 +0200)
committerChris Ball <cjb@laptop.org>
Tue, 27 Mar 2012 16:20:09 +0000 (12:20 -0400)
SDIO is powered separately from the host controller, so the card can
remain on while the host controller is powered off during suspend.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/sdhci-pci.c

index 9952535671f2fb54f1024816d8254410e830061f..3cb9abf67d82283f75d3a103f34773fcbd8deaf6 100644 (file)
@@ -47,6 +47,7 @@ struct sdhci_pci_slot;
 
 struct sdhci_pci_fixes {
        unsigned int            quirks;
+       unsigned int            quirks2;
        bool                    allow_runtime_pm;
 
        int                     (*probe) (struct sdhci_pci_chip *);
@@ -73,6 +74,7 @@ struct sdhci_pci_chip {
        struct pci_dev          *pdev;
 
        unsigned int            quirks;
+       unsigned int            quirks2;
        bool                    allow_runtime_pm;
        const struct sdhci_pci_fixes *fixes;
 
@@ -272,6 +274,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = {
 
 static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = {
        .quirks         = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
+       .quirks2        = SDHCI_QUIRK2_HOST_OFF_CARD_ON,
        .allow_runtime_pm = true,
        .probe_slot     = mfd_sdio_probe_slot,
 };
@@ -1207,6 +1210,7 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot(
        host->hw_name = "PCI";
        host->ops = &sdhci_pci_ops;
        host->quirks = chip->quirks;
+       host->quirks2 = chip->quirks2;
 
        host->irq = pdev->irq;
 
@@ -1366,6 +1370,7 @@ static int __devinit sdhci_pci_probe(struct pci_dev *pdev,
        chip->fixes = (const struct sdhci_pci_fixes *)ent->driver_data;
        if (chip->fixes) {
                chip->quirks = chip->fixes->quirks;
+               chip->quirks2 = chip->fixes->quirks2;
                chip->allow_runtime_pm = chip->fixes->allow_runtime_pm;
        }
        chip->num_slots = slots;