PCI: modify SB700 SATA MSI quirk

SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware
level, but the SB700 revision older than A21 will also be found in the
market. This patch modify the original quirk commit
bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it.
The patch also removes quirk to 0x4395 because 0x4395 is SB800 device
ID.

Signed-off-by: Shane Huang <shane.huang@amd.com>
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by Shane Huang and committed by Greg Kroah-Hartman 4600c9d7 3c75e237

+22 -7
+22 -7
drivers/pci/quirks.c
··· 1779 { 1780 dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; 1781 } 1782 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, 1783 PCI_DEVICE_ID_TIGON3_5780, 1784 quirk_msi_intx_disable_bug); ··· 1816 quirk_msi_intx_disable_bug); 1817 1818 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390, 1819 - quirk_msi_intx_disable_bug); 1820 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391, 1821 - quirk_msi_intx_disable_bug); 1822 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392, 1823 - quirk_msi_intx_disable_bug); 1824 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393, 1825 - quirk_msi_intx_disable_bug); 1826 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394, 1827 - quirk_msi_intx_disable_bug); 1828 - DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395, 1829 - quirk_msi_intx_disable_bug); 1830 1831 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373, 1832 quirk_msi_intx_disable_bug);
··· 1779 { 1780 dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; 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 + } 1799 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, 1800 PCI_DEVICE_ID_TIGON3_5780, 1801 quirk_msi_intx_disable_bug); ··· 1799 quirk_msi_intx_disable_bug); 1800 1801 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390, 1802 + quirk_msi_intx_disable_ati_bug); 1803 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391, 1804 + quirk_msi_intx_disable_ati_bug); 1805 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392, 1806 + quirk_msi_intx_disable_ati_bug); 1807 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393, 1808 + quirk_msi_intx_disable_ati_bug); 1809 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394, 1810 + quirk_msi_intx_disable_ati_bug); 1811 1812 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373, 1813 quirk_msi_intx_disable_bug);