diff options
| -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, |
