|
@@ -867,13 +867,13 @@ static void quirk_disable_pxb(struct pci_dev *pdev)
|
|
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454NX, quirk_disable_pxb);
|
|
|
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454NX, quirk_disable_pxb);
|
|
|
|
|
|
-
|
|
|
-static void __devinit quirk_sb600_sata(struct pci_dev *pdev)
|
|
|
+static void __devinit quirk_amd_ide_mode(struct pci_dev *pdev)
|
|
|
{
|
|
|
- /* set sb600 sata to ahci mode */
|
|
|
- if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
|
|
|
- u8 tmp;
|
|
|
+ /* set sb600/sb700/sb800 sata to ahci mode */
|
|
|
+ u8 tmp;
|
|
|
|
|
|
+ pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &tmp);
|
|
|
+ if (tmp == 0x01) {
|
|
|
pci_read_config_byte(pdev, 0x40, &tmp);
|
|
|
pci_write_config_byte(pdev, 0x40, tmp|1);
|
|
|
pci_write_config_byte(pdev, 0x9, 1);
|
|
@@ -881,10 +881,13 @@ static void __devinit quirk_sb600_sata(struct pci_dev *pdev)
|
|
|
pci_write_config_byte(pdev, 0x40, tmp);
|
|
|
|
|
|
pdev->class = PCI_CLASS_STORAGE_SATA_AHCI;
|
|
|
+ dev_info(&pdev->dev, "set SATA to AHCI mode\n");
|
|
|
}
|
|
|
}
|
|
|
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_sb600_sata);
|
|
|
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_sb600_sata);
|
|
|
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_amd_ide_mode);
|
|
|
+DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_amd_ide_mode);
|
|
|
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode);
|
|
|
+DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode);
|
|
|
|
|
|
/*
|
|
|
* Serverworks CSB5 IDE does not fully support native mode
|