diff options
| -rw-r--r-- | drivers/pci/quirks.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index f925e47bdad5..0a953d43b9a2 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
| @@ -1779,6 +1779,23 @@ static void __devinit quirk_msi_intx_disable_bug(struct pci_dev *dev) | |||
| 1779 | { | 1779 | { |
| 1780 | dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; | 1780 | dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; |
| 1781 | } | 1781 | } |
| 1782 | static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev *dev) | ||
| 1783 | { | ||
| 1784 | struct pci_dev *p; | ||
| 1785 | |||
| 1786 | /* SB700 MSI issue will be fixed at HW level from revision A21, | ||
| 1787 | * we need check PCI REVISION ID of SMBus controller to get SB700 | ||
| 1788 | * revision. | ||
| 1789 | */ | ||
| 1790 | p = pci_get_device(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, | ||
| 1791 | NULL); | ||
| 1792 | if (!p) | ||
| 1793 | return; | ||
| 1794 | |||
| 1795 | if ((p->revision < 0x3B) && (p->revision >= 0x30)) | ||
| 1796 | dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; | ||
| 1797 | pci_dev_put(p); | ||
| 1798 | } | ||
| 1782 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, | 1799 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, |
| 1783 | PCI_DEVICE_ID_TIGON3_5780, | 1800 | PCI_DEVICE_ID_TIGON3_5780, |
| 1784 | quirk_msi_intx_disable_bug); | 1801 | quirk_msi_intx_disable_bug); |
| @@ -1799,17 +1816,15 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, | |||
| 1799 | quirk_msi_intx_disable_bug); | 1816 | quirk_msi_intx_disable_bug); |
| 1800 | 1817 | ||
| 1801 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390, | 1818 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390, |
| 1802 | quirk_msi_intx_disable_bug); | 1819 | quirk_msi_intx_disable_ati_bug); |
| 1803 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391, | 1820 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391, |
| 1804 | quirk_msi_intx_disable_bug); | 1821 | quirk_msi_intx_disable_ati_bug); |
| 1805 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392, | 1822 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392, |
| 1806 | quirk_msi_intx_disable_bug); | 1823 | quirk_msi_intx_disable_ati_bug); |
| 1807 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393, | 1824 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393, |
| 1808 | quirk_msi_intx_disable_bug); | 1825 | quirk_msi_intx_disable_ati_bug); |
| 1809 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394, | 1826 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394, |
| 1810 | quirk_msi_intx_disable_bug); | 1827 | quirk_msi_intx_disable_ati_bug); |
| 1811 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395, | ||
| 1812 | quirk_msi_intx_disable_bug); | ||
| 1813 | 1828 | ||
| 1814 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373, | 1829 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373, |
| 1815 | quirk_msi_intx_disable_bug); | 1830 | quirk_msi_intx_disable_bug); |
