aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/quirks.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2008-12-20 04:54:54 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2008-12-20 04:54:54 -0500
commit93b8eef1c098efbea2f1fc0be7e3c681f259a7e7 (patch)
tree462cc8c2bc07bbc825dab2a200891a28d8643329 /drivers/pci/quirks.c
parenta2d781fc8d9b16113dd9440107d73c0f21d7cbef (diff)
parent929096fe9ff1f4b3645cf3919527ab47e8d5e17c (diff)
Merge commit 'v2.6.28-rc9' into next
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r--drivers/pci/quirks.c67
1 files changed, 35 insertions, 32 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 96cf8ecd04ce..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
27int isa_dma_bridge_buggy; 28int isa_dma_bridge_buggy;
@@ -43,20 +44,6 @@ static void __devinit quirk_mellanox_tavor(struct pci_dev *dev)
43DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR,quirk_mellanox_tavor); 44DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR,quirk_mellanox_tavor);
44DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE,quirk_mellanox_tavor); 45DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE,quirk_mellanox_tavor);
45 46
46/* Many VIA bridges seem to corrupt data for DAC. Disable it here */
47int forbid_dac __read_mostly;
48EXPORT_SYMBOL(forbid_dac);
49
50static __devinit void via_no_dac(struct pci_dev *dev)
51{
52 if ((dev->class >> 8) == PCI_CLASS_BRIDGE_PCI && forbid_dac == 0) {
53 dev_info(&dev->dev,
54 "VIA PCI bridge detected. Disabling DAC.\n");
55 forbid_dac = 1;
56 }
57}
58DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_ANY_ID, via_no_dac);
59
60/* Deal with broken BIOS'es that neglect to enable passive release, 47/* Deal with broken BIOS'es that neglect to enable passive release,
61 which can cause problems in combination with the 82441FX/PPro MTRRs */ 48 which can cause problems in combination with the 82441FX/PPro MTRRs */
62static void quirk_passive_release(struct pci_dev *dev) 49static void quirk_passive_release(struct pci_dev *dev)
@@ -1706,24 +1693,24 @@ static void __devinit quirk_brcm_570x_limit_vpd(struct pci_dev *dev)
1706 } 1693 }
1707} 1694}
1708 1695
1709DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 1696DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
1710 PCI_DEVICE_ID_NX2_5706, 1697 PCI_DEVICE_ID_NX2_5706,
1711 quirk_brcm_570x_limit_vpd); 1698 quirk_brcm_570x_limit_vpd);
1712DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 1699DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
1713 PCI_DEVICE_ID_NX2_5706S, 1700 PCI_DEVICE_ID_NX2_5706S,
1714 quirk_brcm_570x_limit_vpd); 1701 quirk_brcm_570x_limit_vpd);
1715DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 1702DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
1716 PCI_DEVICE_ID_NX2_5708, 1703 PCI_DEVICE_ID_NX2_5708,
1717 quirk_brcm_570x_limit_vpd); 1704 quirk_brcm_570x_limit_vpd);
1718DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 1705DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
1719 PCI_DEVICE_ID_NX2_5708S, 1706 PCI_DEVICE_ID_NX2_5708S,
1720 quirk_brcm_570x_limit_vpd); 1707 quirk_brcm_570x_limit_vpd);
1721DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 1708DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
1722 PCI_DEVICE_ID_NX2_5709, 1709 PCI_DEVICE_ID_NX2_5709,
1723 quirk_brcm_570x_limit_vpd); 1710 quirk_brcm_570x_limit_vpd);
1724DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 1711DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
1725 PCI_DEVICE_ID_NX2_5709S, 1712 PCI_DEVICE_ID_NX2_5709S,
1726 quirk_brcm_570x_limit_vpd); 1713 quirk_brcm_570x_limit_vpd);
1727 1714
1728#ifdef CONFIG_PCI_MSI 1715#ifdef CONFIG_PCI_MSI
1729/* 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
@@ -1842,6 +1829,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SERVERWORKS,
1842 PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB, 1829 PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB,
1843 ht_enable_msi_mapping); 1830 ht_enable_msi_mapping);
1844 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 */
1836static 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}
1844DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA,
1845 PCI_DEVICE_ID_NVIDIA_NVENET_15,
1846 nvenet_msi_disable);
1847
1845static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev) 1848static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev)
1846{ 1849{
1847 struct pci_dev *host_bridge; 1850 struct pci_dev *host_bridge;