diff options
Diffstat (limited to 'drivers/ata/ahci.c')
-rw-r--r-- | drivers/ata/ahci.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 99d0e5a51148..71afe0371311 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -150,7 +150,7 @@ static const struct ata_port_info ahci_port_info[] = { | |||
150 | { | 150 | { |
151 | AHCI_HFLAGS (AHCI_HFLAG_NO_FPDMA_AA | AHCI_HFLAG_NO_PMP | | 151 | AHCI_HFLAGS (AHCI_HFLAG_NO_FPDMA_AA | AHCI_HFLAG_NO_PMP | |
152 | AHCI_HFLAG_YES_NCQ), | 152 | AHCI_HFLAG_YES_NCQ), |
153 | .flags = AHCI_FLAG_COMMON, | 153 | .flags = AHCI_FLAG_COMMON | ATA_FLAG_NO_DIPM, |
154 | .pio_mask = ATA_PIO4, | 154 | .pio_mask = ATA_PIO4, |
155 | .udma_mask = ATA_UDMA6, | 155 | .udma_mask = ATA_UDMA6, |
156 | .port_ops = &ahci_ops, | 156 | .port_ops = &ahci_ops, |
@@ -175,8 +175,7 @@ static const struct ata_port_info ahci_port_info[] = { | |||
175 | { | 175 | { |
176 | AHCI_HFLAGS (AHCI_HFLAG_NO_NCQ | AHCI_HFLAG_NO_MSI | | 176 | AHCI_HFLAGS (AHCI_HFLAG_NO_NCQ | AHCI_HFLAG_NO_MSI | |
177 | AHCI_HFLAG_MV_PATA | AHCI_HFLAG_NO_PMP), | 177 | AHCI_HFLAG_MV_PATA | AHCI_HFLAG_NO_PMP), |
178 | .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | | 178 | .flags = ATA_FLAG_SATA | ATA_FLAG_PIO_DMA, |
179 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA, | ||
180 | .pio_mask = ATA_PIO4, | 179 | .pio_mask = ATA_PIO4, |
181 | .udma_mask = ATA_UDMA6, | 180 | .udma_mask = ATA_UDMA6, |
182 | .port_ops = &ahci_ops, | 181 | .port_ops = &ahci_ops, |
@@ -260,6 +259,14 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
260 | { PCI_VDEVICE(INTEL, 0x1d02), board_ahci }, /* PBG AHCI */ | 259 | { PCI_VDEVICE(INTEL, 0x1d02), board_ahci }, /* PBG AHCI */ |
261 | { PCI_VDEVICE(INTEL, 0x1d04), board_ahci }, /* PBG RAID */ | 260 | { PCI_VDEVICE(INTEL, 0x1d04), board_ahci }, /* PBG RAID */ |
262 | { PCI_VDEVICE(INTEL, 0x1d06), board_ahci }, /* PBG RAID */ | 261 | { PCI_VDEVICE(INTEL, 0x1d06), board_ahci }, /* PBG RAID */ |
262 | { PCI_VDEVICE(INTEL, 0x2826), board_ahci }, /* PBG RAID */ | ||
263 | { PCI_VDEVICE(INTEL, 0x2323), board_ahci }, /* DH89xxCC AHCI */ | ||
264 | { PCI_VDEVICE(INTEL, 0x1e02), board_ahci }, /* Panther Point AHCI */ | ||
265 | { PCI_VDEVICE(INTEL, 0x1e03), board_ahci }, /* Panther Point AHCI */ | ||
266 | { PCI_VDEVICE(INTEL, 0x1e04), board_ahci }, /* Panther Point RAID */ | ||
267 | { PCI_VDEVICE(INTEL, 0x1e05), board_ahci }, /* Panther Point RAID */ | ||
268 | { PCI_VDEVICE(INTEL, 0x1e06), board_ahci }, /* Panther Point RAID */ | ||
269 | { PCI_VDEVICE(INTEL, 0x1e07), board_ahci }, /* Panther Point RAID */ | ||
263 | 270 | ||
264 | /* JMicron 360/1/3/5/6, match class to avoid IDE function */ | 271 | /* JMicron 360/1/3/5/6, match class to avoid IDE function */ |
265 | { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, | 272 | { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, |
@@ -379,7 +386,13 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
379 | { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ | 386 | { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ |
380 | { PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */ | 387 | { PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */ |
381 | { PCI_DEVICE(0x1b4b, 0x9123), | 388 | { PCI_DEVICE(0x1b4b, 0x9123), |
389 | .class = PCI_CLASS_STORAGE_SATA_AHCI, | ||
390 | .class_mask = 0xffffff, | ||
382 | .driver_data = board_ahci_yes_fbs }, /* 88se9128 */ | 391 | .driver_data = board_ahci_yes_fbs }, /* 88se9128 */ |
392 | { PCI_DEVICE(0x1b4b, 0x9125), | ||
393 | .driver_data = board_ahci_yes_fbs }, /* 88se9125 */ | ||
394 | { PCI_DEVICE(0x1b4b, 0x91a3), | ||
395 | .driver_data = board_ahci_yes_fbs }, | ||
383 | 396 | ||
384 | /* Promise */ | 397 | /* Promise */ |
385 | { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ | 398 | { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ |
@@ -919,7 +932,7 @@ static bool ahci_broken_suspend(struct pci_dev *pdev) | |||
919 | /* | 932 | /* |
920 | * Acer eMachines G725 has the same problem. BIOS | 933 | * Acer eMachines G725 has the same problem. BIOS |
921 | * V1.03 is known to be broken. V3.04 is known to | 934 | * V1.03 is known to be broken. V3.04 is known to |
922 | * work. Inbetween, there are V1.06, V2.06 and V3.03 | 935 | * work. Between, there are V1.06, V2.06 and V3.03 |
923 | * that we don't have much idea about. For now, | 936 | * that we don't have much idea about. For now, |
924 | * blacklist anything older than V3.04. | 937 | * blacklist anything older than V3.04. |
925 | * | 938 | * |
@@ -1208,9 +1221,6 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1208 | ata_port_pbar_desc(ap, AHCI_PCI_BAR, | 1221 | ata_port_pbar_desc(ap, AHCI_PCI_BAR, |
1209 | 0x100 + ap->port_no * 0x80, "port"); | 1222 | 0x100 + ap->port_no * 0x80, "port"); |
1210 | 1223 | ||
1211 | /* set initial link pm policy */ | ||
1212 | ap->pm_policy = NOT_AVAILABLE; | ||
1213 | |||
1214 | /* set enclosure management message type */ | 1224 | /* set enclosure management message type */ |
1215 | if (ap->flags & ATA_FLAG_EM) | 1225 | if (ap->flags & ATA_FLAG_EM) |
1216 | ap->em_message_type = hpriv->em_msg_type; | 1226 | ap->em_message_type = hpriv->em_msg_type; |