aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/quirks.c36
1 files changed, 6 insertions, 30 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 5a4c7c35ea45..e9a333d98552 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1725,32 +1725,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT2
1725 quirk_msi_ht_cap); 1725 quirk_msi_ht_cap);
1726 1726
1727 1727
1728/*
1729 * Force enable MSI mapping capability on HT bridges
1730 */
1731static void __devinit quirk_msi_ht_cap_enable(struct pci_dev *dev)
1732{
1733 int pos, ttl = 48;
1734
1735 pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
1736 while (pos && ttl--) {
1737 u8 flags;
1738
1739 if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS, &flags) == 0) {
1740 printk(KERN_INFO "PCI: Enabling HT MSI Mapping on %s\n",
1741 pci_name(dev));
1742
1743 pci_write_config_byte(dev, pos + HT_MSI_FLAGS,
1744 flags | HT_MSI_FLAGS_ENABLE);
1745 }
1746 pos = pci_find_next_ht_capability(dev, pos,
1747 HT_CAPTYPE_MSI_MAPPING);
1748 }
1749}
1750DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SERVERWORKS,
1751 PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB,
1752 quirk_msi_ht_cap_enable);
1753
1754/* The nVidia CK804 chipset may have 2 HT MSI mappings. 1728/* The nVidia CK804 chipset may have 2 HT MSI mappings.
1755 * MSI are supported if the MSI capability set in any of these mappings. 1729 * MSI are supported if the MSI capability set in any of these mappings.
1756 */ 1730 */
@@ -1777,9 +1751,8 @@ static void __devinit quirk_nvidia_ck804_msi_ht_cap(struct pci_dev *dev)
1777DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE, 1751DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
1778 quirk_nvidia_ck804_msi_ht_cap); 1752 quirk_nvidia_ck804_msi_ht_cap);
1779 1753
1780/* 1754/* Force enable MSI mapping capability on HT bridges */
1781 * Force enable MSI mapping capability on HT bridges */ 1755static void __devinit ht_enable_msi_mapping(struct pci_dev *dev)
1782static inline void ht_enable_msi_mapping(struct pci_dev *dev)
1783{ 1756{
1784 int pos, ttl = 48; 1757 int pos, ttl = 48;
1785 1758
@@ -1798,6 +1771,9 @@ static inline void ht_enable_msi_mapping(struct pci_dev *dev)
1798 HT_CAPTYPE_MSI_MAPPING); 1771 HT_CAPTYPE_MSI_MAPPING);
1799 } 1772 }
1800} 1773}
1774DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SERVERWORKS,
1775 PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB,
1776 ht_enable_msi_mapping);
1801 1777
1802static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev) 1778static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev)
1803{ 1779{
@@ -1829,7 +1805,7 @@ static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev)
1829 1805
1830 if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS, 1806 if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
1831 &flags) == 0) { 1807 &flags) == 0) {
1832 dev_info(&dev->dev, "Quirk disabling HT MSI mapping"); 1808 dev_info(&dev->dev, "Disabling HT MSI mapping");
1833 pci_write_config_byte(dev, pos + HT_MSI_FLAGS, 1809 pci_write_config_byte(dev, pos + HT_MSI_FLAGS,
1834 flags & ~HT_MSI_FLAGS_ENABLE); 1810 flags & ~HT_MSI_FLAGS_ENABLE);
1835 } 1811 }