diff options
| -rw-r--r-- | drivers/mmc/host/sdhci-pci.c | 4 | ||||
| -rw-r--r-- | include/linux/mmc/sdhci.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c index fbbebe251e01..9303f7fc1e68 100644 --- a/drivers/mmc/host/sdhci-pci.c +++ b/drivers/mmc/host/sdhci-pci.c | |||
| @@ -561,6 +561,7 @@ static int jmicron_resume(struct sdhci_pci_chip *chip) | |||
| 561 | 561 | ||
| 562 | static const struct sdhci_pci_fixes sdhci_o2 = { | 562 | static const struct sdhci_pci_fixes sdhci_o2 = { |
| 563 | .probe = o2_probe, | 563 | .probe = o2_probe, |
| 564 | .quirks2 = SDHCI_QUIRK2_BROKEN_MSI, | ||
| 564 | }; | 565 | }; |
| 565 | 566 | ||
| 566 | static const struct sdhci_pci_fixes sdhci_jmicron = { | 567 | static const struct sdhci_pci_fixes sdhci_jmicron = { |
| @@ -1418,7 +1419,8 @@ static int __devinit sdhci_pci_probe(struct pci_dev *pdev, | |||
| 1418 | 1419 | ||
| 1419 | slots = chip->num_slots; /* Quirk may have changed this */ | 1420 | slots = chip->num_slots; /* Quirk may have changed this */ |
| 1420 | 1421 | ||
| 1421 | pci_enable_msi(pdev); | 1422 | if (!(chip->quirks2 & SDHCI_QUIRK2_BROKEN_MSI)) |
| 1423 | pci_enable_msi(pdev); | ||
| 1422 | 1424 | ||
| 1423 | for (i = 0; i < slots; i++) { | 1425 | for (i = 0; i < slots; i++) { |
| 1424 | slot = sdhci_pci_probe_slot(pdev, chip, first_bar, i); | 1426 | slot = sdhci_pci_probe_slot(pdev, chip, first_bar, i); |
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index e9051e1cb1ce..9752fe434ae9 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h | |||
| @@ -91,6 +91,8 @@ struct sdhci_host { | |||
| 91 | unsigned int quirks2; /* More deviations from spec. */ | 91 | unsigned int quirks2; /* More deviations from spec. */ |
| 92 | 92 | ||
| 93 | #define SDHCI_QUIRK2_HOST_OFF_CARD_ON (1<<0) | 93 | #define SDHCI_QUIRK2_HOST_OFF_CARD_ON (1<<0) |
| 94 | /* broken MSI Interrupts */ | ||
| 95 | #define SDHCI_QUIRK2_BROKEN_MSI (1<<1) | ||
| 94 | 96 | ||
| 95 | int irq; /* Device IRQ */ | 97 | int irq; /* Device IRQ */ |
| 96 | void __iomem *ioaddr; /* Mapped address */ | 98 | void __iomem *ioaddr; /* Mapped address */ |
