aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pci/quirks.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index f41e00d6f2c3..a86081299633 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1166,17 +1166,20 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_10, qui
1166 1166
1167static void __devinit quirk_no_ata_d3(struct pci_dev *pdev) 1167static void __devinit quirk_no_ata_d3(struct pci_dev *pdev)
1168{ 1168{
1169 /* Quirk the legacy ATA devices only. The AHCI ones are ok */ 1169 pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3;
1170 if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE)
1171 pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3;
1172} 1170}
1173DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, PCI_ANY_ID, quirk_no_ata_d3); 1171/* Quirk the legacy ATA devices only. The AHCI ones are ok */
1174DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, PCI_ANY_ID, quirk_no_ata_d3); 1172DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_SERVERWORKS, PCI_ANY_ID,
1173 PCI_CLASS_STORAGE_IDE, 8, quirk_no_ata_d3);
1174DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_ATI, PCI_ANY_ID,
1175 PCI_CLASS_STORAGE_IDE, 8, quirk_no_ata_d3);
1175/* ALi loses some register settings that we cannot then restore */ 1176/* ALi loses some register settings that we cannot then restore */
1176DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, PCI_ANY_ID, quirk_no_ata_d3); 1177DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AL, PCI_ANY_ID,
1178 PCI_CLASS_STORAGE_IDE, 8, quirk_no_ata_d3);
1177/* VIA comes back fine but we need to keep it alive or ACPI GTM failures 1179/* VIA comes back fine but we need to keep it alive or ACPI GTM failures
1178 occur when mode detecting */ 1180 occur when mode detecting */
1179DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_no_ata_d3); 1181DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_VIA, PCI_ANY_ID,
1182 PCI_CLASS_STORAGE_IDE, 8, quirk_no_ata_d3);
1180 1183
1181/* This was originally an Alpha specific thing, but it really fits here. 1184/* This was originally an Alpha specific thing, but it really fits here.
1182 * The i82375 PCI/EISA bridge appears as non-classified. Fix that. 1185 * The i82375 PCI/EISA bridge appears as non-classified. Fix that.