diff options
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r-- | drivers/pci/quirks.c | 53 |
1 files changed, 35 insertions, 18 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index bbf66ea8fd87..5f4f85f56cb7 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
23 | #include <linux/acpi.h> | 23 | #include <linux/acpi.h> |
24 | #include <linux/kallsyms.h> | 24 | #include <linux/kallsyms.h> |
25 | #include <linux/dmi.h> | ||
25 | #include "pci.h" | 26 | #include "pci.h" |
26 | 27 | ||
27 | int isa_dma_bridge_buggy; | 28 | int isa_dma_bridge_buggy; |
@@ -1692,24 +1693,24 @@ static void __devinit quirk_brcm_570x_limit_vpd(struct pci_dev *dev) | |||
1692 | } | 1693 | } |
1693 | } | 1694 | } |
1694 | 1695 | ||
1695 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, | 1696 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, |
1696 | PCI_DEVICE_ID_NX2_5706, | 1697 | PCI_DEVICE_ID_NX2_5706, |
1697 | quirk_brcm_570x_limit_vpd); | 1698 | quirk_brcm_570x_limit_vpd); |
1698 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, | 1699 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, |
1699 | PCI_DEVICE_ID_NX2_5706S, | 1700 | PCI_DEVICE_ID_NX2_5706S, |
1700 | quirk_brcm_570x_limit_vpd); | 1701 | quirk_brcm_570x_limit_vpd); |
1701 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, | 1702 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, |
1702 | PCI_DEVICE_ID_NX2_5708, | 1703 | PCI_DEVICE_ID_NX2_5708, |
1703 | quirk_brcm_570x_limit_vpd); | 1704 | quirk_brcm_570x_limit_vpd); |
1704 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, | 1705 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, |
1705 | PCI_DEVICE_ID_NX2_5708S, | 1706 | PCI_DEVICE_ID_NX2_5708S, |
1706 | quirk_brcm_570x_limit_vpd); | 1707 | quirk_brcm_570x_limit_vpd); |
1707 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, | 1708 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, |
1708 | PCI_DEVICE_ID_NX2_5709, | 1709 | PCI_DEVICE_ID_NX2_5709, |
1709 | quirk_brcm_570x_limit_vpd); | 1710 | quirk_brcm_570x_limit_vpd); |
1710 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, | 1711 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, |
1711 | PCI_DEVICE_ID_NX2_5709S, | 1712 | PCI_DEVICE_ID_NX2_5709S, |
1712 | quirk_brcm_570x_limit_vpd); | 1713 | quirk_brcm_570x_limit_vpd); |
1713 | 1714 | ||
1714 | #ifdef CONFIG_PCI_MSI | 1715 | #ifdef CONFIG_PCI_MSI |
1715 | /* Some chipsets do not support MSI. We cannot easily rely on setting | 1716 | /* Some chipsets do not support MSI. We cannot easily rely on setting |
@@ -1828,6 +1829,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SERVERWORKS, | |||
1828 | PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB, | 1829 | PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB, |
1829 | ht_enable_msi_mapping); | 1830 | ht_enable_msi_mapping); |
1830 | 1831 | ||
1832 | /* The P5N32-SLI Premium motherboard from Asus has a problem with msi | ||
1833 | * for the MCP55 NIC. It is not yet determined whether the msi problem | ||
1834 | * also affects other devices. As for now, turn off msi for this device. | ||
1835 | */ | ||
1836 | static void __devinit nvenet_msi_disable(struct pci_dev *dev) | ||
1837 | { | ||
1838 | if (dmi_name_in_vendors("P5N32-SLI PREMIUM")) { | ||
1839 | dev_info(&dev->dev, | ||
1840 | "Disabling msi for MCP55 NIC on P5N32-SLI Premium\n"); | ||
1841 | dev->no_msi = 1; | ||
1842 | } | ||
1843 | } | ||
1844 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA, | ||
1845 | PCI_DEVICE_ID_NVIDIA_NVENET_15, | ||
1846 | nvenet_msi_disable); | ||
1847 | |||
1831 | static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev) | 1848 | static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev) |
1832 | { | 1849 | { |
1833 | struct pci_dev *host_bridge; | 1850 | struct pci_dev *host_bridge; |