Patchwork PCI: add MSI INTX_DISABLE quirks for AR8161/AR8162/AR8171/AR8172/E210X

login
register
mail settings
Submitter Huang, Xiong
Date March 7, 2013, 6:55 p.m.
Message ID <1362682516-9840-1-git-send-email-xiong@qca.qualcomm.com>
Download mbox | patch
Permalink /patch/225897/
State Accepted
Headers show

Comments

Huang, Xiong - March 7, 2013, 6:55 p.m.
From: "Huang,Xiong" <xiong@qca.qualcomm.com>

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>
---
 drivers/pci/quirks.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
Bjorn Helgaas - April 4, 2013, 5:34 p.m.
On Tue, Mar 12, 2013 at 7:20 PM, Wei Yang <weiyang@linux.vnet.ibm.com> wrote:
> On Fri, Mar 08, 2013 at 02:55:16AM +0800, xiong wrote:
>>From: "Huang,Xiong" <xiong@qca.qualcomm.com>
>>
>>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>
>
> Reviewed-by: Wei Yang <weiyang@linux.vnet.ibm.com>

Added Reviewed-by and applied to pci/misc for v3.10.  Thanks!

>>---
>> drivers/pci/quirks.c | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>>
>>diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
>>index 0369fb6..4273a2d 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)
>>               dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
>>       pci_dev_put(p);
>> }
>>+static void quirk_msi_intx_disable_qca_bug(struct pci_dev *dev)
>>+{
>>+      /* AR816X/AR817X/E210X MSI is fixed at HW level from revision 0x18 */
>>+      if (dev->revision < 0x18) {
>>+              dev_info(&dev->dev, "set MSI_INTX_DISABLE_BUG flag\n");
>>+              dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
>>+      }
>>+}
>> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
>>                       PCI_DEVICE_ID_TIGON3_5780,
>>                       quirk_msi_intx_disable_bug);
>>@@ -2643,6 +2651,16 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1073,
>>                       quirk_msi_intx_disable_bug);
>> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1083,
>>                       quirk_msi_intx_disable_bug);
>>+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1090,
>>+                      quirk_msi_intx_disable_qca_bug);
>>+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1091,
>>+                      quirk_msi_intx_disable_qca_bug);
>>+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a0,
>>+                      quirk_msi_intx_disable_qca_bug);
>>+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a1,
>>+                      quirk_msi_intx_disable_qca_bug);
>>+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0xe091,
>>+                      quirk_msi_intx_disable_qca_bug);
>> #endif /* CONFIG_PCI_MSI */
>>
>> /* Allow manual resource allocation for PCI hotplug bridges
>>--
>>1.7.11.7
>>
>>--
>>To unsubscribe from this list: send the line "unsubscribe linux-pci" in
>>the body of a message to majordomo@vger.kernel.org
>>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> --
> Richard Yang
> Help you, Help me
>
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 0369fb6..4273a2d 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)
 		dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
 	pci_dev_put(p);
 }
+static void quirk_msi_intx_disable_qca_bug(struct pci_dev *dev)
+{
+	/* AR816X/AR817X/E210X MSI is fixed at HW level from revision 0x18 */
+	if (dev->revision < 0x18) {
+		dev_info(&dev->dev, "set MSI_INTX_DISABLE_BUG flag\n");
+		dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
+	}
+}
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
 			PCI_DEVICE_ID_TIGON3_5780,
 			quirk_msi_intx_disable_bug);
@@ -2643,6 +2651,16 @@  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1073,
 			quirk_msi_intx_disable_bug);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1083,
 			quirk_msi_intx_disable_bug);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1090,
+			quirk_msi_intx_disable_qca_bug);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1091,
+			quirk_msi_intx_disable_qca_bug);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a0,
+			quirk_msi_intx_disable_qca_bug);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a1,
+			quirk_msi_intx_disable_qca_bug);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0xe091,
+			quirk_msi_intx_disable_qca_bug);
 #endif /* CONFIG_PCI_MSI */
 
 /* Allow manual resource allocation for PCI hotplug bridges