diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2012-02-07 07:48:55 -0500 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-03-27 12:20:09 -0400 |
commit | f3c55a7b5d7f2d40c805a62174bb733b55875523 (patch) | |
tree | 6a3f4b957a76bb0e86f125d1036c572091884c3e | |
parent | 6308d2905bd30290d90f28730828fd572161dd11 (diff) |
mmc: sdhci-pci: add SDHCI_QUIRK2_HOST_OFF_CARD_ON for Medfield SDIO
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>
-rw-r--r-- | drivers/mmc/host/sdhci-pci.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c index 9952535671f2..3cb9abf67d82 100644 --- a/drivers/mmc/host/sdhci-pci.c +++ b/drivers/mmc/host/sdhci-pci.c | |||
@@ -47,6 +47,7 @@ struct sdhci_pci_slot; | |||
47 | 47 | ||
48 | struct sdhci_pci_fixes { | 48 | struct sdhci_pci_fixes { |
49 | unsigned int quirks; | 49 | unsigned int quirks; |
50 | unsigned int quirks2; | ||
50 | bool allow_runtime_pm; | 51 | bool allow_runtime_pm; |
51 | 52 | ||
52 | int (*probe) (struct sdhci_pci_chip *); | 53 | int (*probe) (struct sdhci_pci_chip *); |
@@ -73,6 +74,7 @@ struct sdhci_pci_chip { | |||
73 | struct pci_dev *pdev; | 74 | struct pci_dev *pdev; |
74 | 75 | ||
75 | unsigned int quirks; | 76 | unsigned int quirks; |
77 | unsigned int quirks2; | ||
76 | bool allow_runtime_pm; | 78 | bool allow_runtime_pm; |
77 | const struct sdhci_pci_fixes *fixes; | 79 | const struct sdhci_pci_fixes *fixes; |
78 | 80 | ||
@@ -272,6 +274,7 @@ static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = { | |||
272 | 274 | ||
273 | static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = { | 275 | static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = { |
274 | .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, | 276 | .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, |
277 | .quirks2 = SDHCI_QUIRK2_HOST_OFF_CARD_ON, | ||
275 | .allow_runtime_pm = true, | 278 | .allow_runtime_pm = true, |
276 | .probe_slot = mfd_sdio_probe_slot, | 279 | .probe_slot = mfd_sdio_probe_slot, |
277 | }; | 280 | }; |
@@ -1207,6 +1210,7 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot( | |||
1207 | host->hw_name = "PCI"; | 1210 | host->hw_name = "PCI"; |
1208 | host->ops = &sdhci_pci_ops; | 1211 | host->ops = &sdhci_pci_ops; |
1209 | host->quirks = chip->quirks; | 1212 | host->quirks = chip->quirks; |
1213 | host->quirks2 = chip->quirks2; | ||
1210 | 1214 | ||
1211 | host->irq = pdev->irq; | 1215 | host->irq = pdev->irq; |
1212 | 1216 | ||
@@ -1366,6 +1370,7 @@ static int __devinit sdhci_pci_probe(struct pci_dev *pdev, | |||
1366 | chip->fixes = (const struct sdhci_pci_fixes *)ent->driver_data; | 1370 | chip->fixes = (const struct sdhci_pci_fixes *)ent->driver_data; |
1367 | if (chip->fixes) { | 1371 | if (chip->fixes) { |
1368 | chip->quirks = chip->fixes->quirks; | 1372 | chip->quirks = chip->fixes->quirks; |
1373 | chip->quirks2 = chip->fixes->quirks2; | ||
1369 | chip->allow_runtime_pm = chip->fixes->allow_runtime_pm; | 1374 | chip->allow_runtime_pm = chip->fixes->allow_runtime_pm; |
1370 | } | 1375 | } |
1371 | chip->num_slots = slots; | 1376 | chip->num_slots = slots; |