Commit 210b7d28 authored by Manuel Lauss's avatar Manuel Lauss Committed by Chris Ball

mmc: sdhci-pci: add quirks for broken MSI on O2Micro controllers

MSI on my O2Micro OZ600 SD card reader is broken.  This patch adds a quirk
to disable MSI on these controllers.
Signed-off-by: default avatarManuel Lauss <manuel.lauss@googlemail.com>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent eb91b911
...@@ -561,6 +561,7 @@ static int jmicron_resume(struct sdhci_pci_chip *chip) ...@@ -561,6 +561,7 @@ static int jmicron_resume(struct sdhci_pci_chip *chip)
static const struct sdhci_pci_fixes sdhci_o2 = { static const struct sdhci_pci_fixes sdhci_o2 = {
.probe = o2_probe, .probe = o2_probe,
.quirks2 = SDHCI_QUIRK2_BROKEN_MSI,
}; };
static const struct sdhci_pci_fixes sdhci_jmicron = { static const struct sdhci_pci_fixes sdhci_jmicron = {
...@@ -1418,6 +1419,7 @@ static int __devinit sdhci_pci_probe(struct pci_dev *pdev, ...@@ -1418,6 +1419,7 @@ static int __devinit sdhci_pci_probe(struct pci_dev *pdev,
slots = chip->num_slots; /* Quirk may have changed this */ slots = chip->num_slots; /* Quirk may have changed this */
if (!(chip->quirks2 & SDHCI_QUIRK2_BROKEN_MSI))
pci_enable_msi(pdev); pci_enable_msi(pdev);
for (i = 0; i < slots; i++) { for (i = 0; i < slots; i++) {
......
...@@ -91,6 +91,8 @@ struct sdhci_host { ...@@ -91,6 +91,8 @@ struct sdhci_host {
unsigned int quirks2; /* More deviations from spec. */ unsigned int quirks2; /* More deviations from spec. */
#define SDHCI_QUIRK2_HOST_OFF_CARD_ON (1<<0) #define SDHCI_QUIRK2_HOST_OFF_CARD_ON (1<<0)
/* broken MSI Interrupts */
#define SDHCI_QUIRK2_BROKEN_MSI (1<<1)
int irq; /* Device IRQ */ int irq; /* Device IRQ */
void __iomem *ioaddr; /* Mapped address */ void __iomem *ioaddr; /* Mapped address */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment