Skip to content

Commit

Permalink
mmc: sdhci-pci: add quirks for broken MSI on O2Micro controllers
Browse files Browse the repository at this point in the history
MSI on my O2Micro OZ600 SD card reader is broken.  This patch adds a quirk
to disable MSI on these controllers.

Signed-off-by: Manuel Lauss <manuel.lauss@googlemail.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
  • Loading branch information
Manuel Lauss authored and Chris Ball committed Apr 6, 2012
1 parent eb91b91 commit 210b7d2
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
4 changes: 3 additions & 1 deletion drivers/mmc/host/sdhci-pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ static int jmicron_resume(struct sdhci_pci_chip *chip)

static const struct sdhci_pci_fixes sdhci_o2 = {
.probe = o2_probe,
.quirks2 = SDHCI_QUIRK2_BROKEN_MSI,
};

static const struct sdhci_pci_fixes sdhci_jmicron = {
Expand Down Expand Up @@ -1418,7 +1419,8 @@ static int __devinit sdhci_pci_probe(struct pci_dev *pdev,

slots = chip->num_slots; /* Quirk may have changed this */

pci_enable_msi(pdev);
if (!(chip->quirks2 & SDHCI_QUIRK2_BROKEN_MSI))
pci_enable_msi(pdev);

for (i = 0; i < slots; i++) {
slot = sdhci_pci_probe_slot(pdev, chip, first_bar, i);
Expand Down
2 changes: 2 additions & 0 deletions include/linux/mmc/sdhci.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ struct sdhci_host {
unsigned int quirks2; /* More deviations from spec. */

#define SDHCI_QUIRK2_HOST_OFF_CARD_ON (1<<0)
/* broken MSI Interrupts */
#define SDHCI_QUIRK2_BROKEN_MSI (1<<1)

int irq; /* Device IRQ */
void __iomem *ioaddr; /* Mapped address */
Expand Down

0 comments on commit 210b7d2

Please sign in to comment.