diff options
Diffstat (limited to 'drivers/ata')
-rw-r--r-- | drivers/ata/ahci.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 6dc462105688..7f701cbe14ab 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -105,7 +105,7 @@ enum { | |||
105 | board_ahci_ign_iferr = 2, | 105 | board_ahci_ign_iferr = 2, |
106 | board_ahci_sb600 = 3, | 106 | board_ahci_sb600 = 3, |
107 | board_ahci_mv = 4, | 107 | board_ahci_mv = 4, |
108 | board_ahci_sb700 = 5, | 108 | board_ahci_sb700 = 5, /* for SB700 and SB800 */ |
109 | board_ahci_mcp65 = 6, | 109 | board_ahci_mcp65 = 6, |
110 | board_ahci_nopmp = 7, | 110 | board_ahci_nopmp = 7, |
111 | 111 | ||
@@ -439,7 +439,7 @@ static const struct ata_port_info ahci_port_info[] = { | |||
439 | .udma_mask = ATA_UDMA6, | 439 | .udma_mask = ATA_UDMA6, |
440 | .port_ops = &ahci_ops, | 440 | .port_ops = &ahci_ops, |
441 | }, | 441 | }, |
442 | /* board_ahci_sb700 */ | 442 | /* board_ahci_sb700, for SB700 and SB800 */ |
443 | { | 443 | { |
444 | AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL), | 444 | AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL), |
445 | .flags = AHCI_FLAG_COMMON, | 445 | .flags = AHCI_FLAG_COMMON, |
@@ -2612,6 +2612,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
2612 | (pdev->revision == 0xa1 || pdev->revision == 0xa2)) | 2612 | (pdev->revision == 0xa1 || pdev->revision == 0xa2)) |
2613 | hpriv->flags |= AHCI_HFLAG_NO_MSI; | 2613 | hpriv->flags |= AHCI_HFLAG_NO_MSI; |
2614 | 2614 | ||
2615 | /* SB800 does NOT need the workaround to ignore SERR_INTERNAL */ | ||
2616 | if (board_id == board_ahci_sb700 && pdev->revision >= 0x40) | ||
2617 | hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL; | ||
2618 | |||
2615 | if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev)) | 2619 | if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev)) |
2616 | pci_intx(pdev, 1); | 2620 | pci_intx(pdev, 1); |
2617 | 2621 | ||