aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host/sdhci-pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mmc/host/sdhci-pci.c')
-rw-r--r--drivers/mmc/host/sdhci-pci.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
index ec4b81dd493f..55746bac2f44 100644
--- a/drivers/mmc/host/sdhci-pci.c
+++ b/drivers/mmc/host/sdhci-pci.c
@@ -145,6 +145,29 @@ static const struct sdhci_pci_fixes sdhci_cafe = {
145 SDHCI_QUIRK_BROKEN_TIMEOUT_VAL, 145 SDHCI_QUIRK_BROKEN_TIMEOUT_VAL,
146}; 146};
147 147
148/*
149 * ADMA operation is disabled for Moorestown platform due to
150 * hardware bugs.
151 */
152static int mrst_hc1_probe(struct sdhci_pci_chip *chip)
153{
154 /*
155 * slots number is fixed here for MRST as SDIO3 is never used and has
156 * hardware bugs.
157 */
158 chip->num_slots = 1;
159 return 0;
160}
161
162static const struct sdhci_pci_fixes sdhci_intel_mrst_hc0 = {
163 .quirks = SDHCI_QUIRK_BROKEN_ADMA | SDHCI_QUIRK_NO_HISPD_BIT,
164};
165
166static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1 = {
167 .quirks = SDHCI_QUIRK_BROKEN_ADMA | SDHCI_QUIRK_NO_HISPD_BIT,
168 .probe = mrst_hc1_probe,
169};
170
148static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = { 171static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = {
149 .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, 172 .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
150}; 173};
@@ -504,6 +527,22 @@ static const struct pci_device_id pci_ids[] __devinitdata = {
504 527
505 { 528 {
506 .vendor = PCI_VENDOR_ID_INTEL, 529 .vendor = PCI_VENDOR_ID_INTEL,
530 .device = PCI_DEVICE_ID_INTEL_MRST_SD0,
531 .subvendor = PCI_ANY_ID,
532 .subdevice = PCI_ANY_ID,
533 .driver_data = (kernel_ulong_t)&sdhci_intel_mrst_hc0,
534 },
535
536 {
537 .vendor = PCI_VENDOR_ID_INTEL,
538 .device = PCI_DEVICE_ID_INTEL_MRST_SD1,
539 .subvendor = PCI_ANY_ID,
540 .subdevice = PCI_ANY_ID,
541 .driver_data = (kernel_ulong_t)&sdhci_intel_mrst_hc1,
542 },
543
544 {
545 .vendor = PCI_VENDOR_ID_INTEL,
507 .device = PCI_DEVICE_ID_INTEL_MFD_SD, 546 .device = PCI_DEVICE_ID_INTEL_MFD_SD,
508 .subvendor = PCI_ANY_ID, 547 .subvendor = PCI_ANY_ID,
509 .subdevice = PCI_ANY_ID, 548 .subdevice = PCI_ANY_ID,