aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Assmann <sassmann@redhat.com>2009-10-27 03:57:42 -0400
committerJesse Barnes <jbarnes@virtuousgeek.org>2009-11-04 16:06:40 -0500
commit4fd8bdc567e70c02fab7eeaaa7d2a64232add789 (patch)
tree4fdea5db907b13830c1adb543f423a392c91082d
parent58c08628c4fe664bfd5f8b7e773b4b157bb9686f (diff)
PCI: avoid boot interrupt quirk for AMD 813x B1 devices
AMD 813x rev. B1 (like rev. B2) devices generate no interrupts if quirk_disable_amd_813x_boot_interrupt is executed, add an exception. http://bugzilla.kernel.org/show_bug.cgi?id=14159 Patch also adds missing cases for DECLARE_PCI_FIXUP_RESUME and DECLARE_PCI_FIXUP_FINAL calls to quirk_disable_amd_813x_boot_interrupt. Signed-off-by: Stefan Assmann <sassmann@redhat.com> Tested-by: Gabriele Giorgetti <g.giorgetti@teamsystem.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
-rw-r--r--drivers/pci/quirks.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 1812ae7698de..c0c4537d66da 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1680,6 +1680,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_
1680 */ 1680 */
1681#define AMD_813X_MISC 0x40 1681#define AMD_813X_MISC 0x40
1682#define AMD_813X_NOIOAMODE (1<<0) 1682#define AMD_813X_NOIOAMODE (1<<0)
1683#define AMD_813X_REV_B1 0x12
1683#define AMD_813X_REV_B2 0x13 1684#define AMD_813X_REV_B2 0x13
1684 1685
1685static void quirk_disable_amd_813x_boot_interrupt(struct pci_dev *dev) 1686static void quirk_disable_amd_813x_boot_interrupt(struct pci_dev *dev)
@@ -1688,7 +1689,8 @@ static void quirk_disable_amd_813x_boot_interrupt(struct pci_dev *dev)
1688 1689
1689 if (noioapicquirk) 1690 if (noioapicquirk)
1690 return; 1691 return;
1691 if (dev->revision == AMD_813X_REV_B2) 1692 if ((dev->revision == AMD_813X_REV_B1) ||
1693 (dev->revision == AMD_813X_REV_B2))
1692 return; 1694 return;
1693 1695
1694 pci_read_config_dword(dev, AMD_813X_MISC, &pci_config_dword); 1696 pci_read_config_dword(dev, AMD_813X_MISC, &pci_config_dword);
@@ -1698,8 +1700,10 @@ static void quirk_disable_amd_813x_boot_interrupt(struct pci_dev *dev)
1698 dev_info(&dev->dev, "disabled boot interrupts on device [%04x:%04x]\n", 1700 dev_info(&dev->dev, "disabled boot interrupts on device [%04x:%04x]\n",
1699 dev->vendor, dev->device); 1701 dev->vendor, dev->device);
1700} 1702}
1701DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_amd_813x_boot_interrupt); 1703DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_amd_813x_boot_interrupt);
1702DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8132_BRIDGE, quirk_disable_amd_813x_boot_interrupt); 1704DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_amd_813x_boot_interrupt);
1705DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8132_BRIDGE, quirk_disable_amd_813x_boot_interrupt);
1706DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8132_BRIDGE, quirk_disable_amd_813x_boot_interrupt);
1703 1707
1704#define AMD_8111_PCI_IRQ_ROUTING 0x56 1708#define AMD_8111_PCI_IRQ_ROUTING 0x56
1705 1709