aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/quirks.c
diff options
context:
space:
mode:
authorXiong Huang <xiong@qca.qualcomm.com>2013-03-07 03:55:16 -0500
committerBjorn Helgaas <bhelgaas@google.com>2013-04-04 13:29:53 -0400
commit705888184276552a12475f9d9f9ee78136cd523a (patch)
tree75db087dbcfb25c6adf4238ee95b301fb527cd59 /drivers/pci/quirks.c
parente82b14bdd390c534750a191f9936f842bab255d4 (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.c18
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}
2597static 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}
2597DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, 2605DECLARE_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);
2644DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1083, 2652DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1083,
2645 quirk_msi_intx_disable_bug); 2653 quirk_msi_intx_disable_bug);
2654DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1090,
2655 quirk_msi_intx_disable_qca_bug);
2656DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1091,
2657 quirk_msi_intx_disable_qca_bug);
2658DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a0,
2659 quirk_msi_intx_disable_qca_bug);
2660DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a1,
2661 quirk_msi_intx_disable_qca_bug);
2662DECLARE_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