diff options
Diffstat (limited to 'drivers/mmc/host/sdhci-pci.c')
-rw-r--r-- | drivers/mmc/host/sdhci-pci.c | 39 |
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 | */ | ||
152 | static 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 | |||
162 | static const struct sdhci_pci_fixes sdhci_intel_mrst_hc0 = { | ||
163 | .quirks = SDHCI_QUIRK_BROKEN_ADMA | SDHCI_QUIRK_NO_HISPD_BIT, | ||
164 | }; | ||
165 | |||
166 | static 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 | |||
148 | static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = { | 171 | static 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, |