diff options
author | Xiong Huang <xiong@qca.qualcomm.com> | 2013-03-07 03:55:16 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2013-04-04 13:29:53 -0400 |
commit | 705888184276552a12475f9d9f9ee78136cd523a (patch) | |
tree | 75db087dbcfb25c6adf4238ee95b301fb527cd59 /drivers/pci/quirks.c | |
parent | e82b14bdd390c534750a191f9936f842bab255d4 (diff) |
PCI: Add MSI INTX_DISABLE quirks for AR8161/AR8162/AR8171/AR8172/E210X
The following PCIe devices with revision lower than 0x18 have this bug:
AR8161(1091)/AR8162(1090)/AR8171(10A1)/AR8172(10A0)/E210X(E091).
Signed-off-by: Huang,Xiong <xiong@qca.qualcomm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Wei Yang <weiyang@linux.vnet.ibm.com>
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r-- | drivers/pci/quirks.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 0369fb6fc1da..4273a2d7132c 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -2594,6 +2594,14 @@ static void quirk_msi_intx_disable_ati_bug(struct pci_dev *dev) | |||
2594 | dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; | 2594 | dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; |
2595 | pci_dev_put(p); | 2595 | pci_dev_put(p); |
2596 | } | 2596 | } |
2597 | static void quirk_msi_intx_disable_qca_bug(struct pci_dev *dev) | ||
2598 | { | ||
2599 | /* AR816X/AR817X/E210X MSI is fixed at HW level from revision 0x18 */ | ||
2600 | if (dev->revision < 0x18) { | ||
2601 | dev_info(&dev->dev, "set MSI_INTX_DISABLE_BUG flag\n"); | ||
2602 | dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; | ||
2603 | } | ||
2604 | } | ||
2597 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, | 2605 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, |
2598 | PCI_DEVICE_ID_TIGON3_5780, | 2606 | PCI_DEVICE_ID_TIGON3_5780, |
2599 | quirk_msi_intx_disable_bug); | 2607 | quirk_msi_intx_disable_bug); |
@@ -2643,6 +2651,16 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1073, | |||
2643 | quirk_msi_intx_disable_bug); | 2651 | quirk_msi_intx_disable_bug); |
2644 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1083, | 2652 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1083, |
2645 | quirk_msi_intx_disable_bug); | 2653 | quirk_msi_intx_disable_bug); |
2654 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1090, | ||
2655 | quirk_msi_intx_disable_qca_bug); | ||
2656 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1091, | ||
2657 | quirk_msi_intx_disable_qca_bug); | ||
2658 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a0, | ||
2659 | quirk_msi_intx_disable_qca_bug); | ||
2660 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a1, | ||
2661 | quirk_msi_intx_disable_qca_bug); | ||
2662 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0xe091, | ||
2663 | quirk_msi_intx_disable_qca_bug); | ||
2646 | #endif /* CONFIG_PCI_MSI */ | 2664 | #endif /* CONFIG_PCI_MSI */ |
2647 | 2665 | ||
2648 | /* Allow manual resource allocation for PCI hotplug bridges | 2666 | /* Allow manual resource allocation for PCI hotplug bridges |