aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/sata_sil24.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ata/sata_sil24.c')
-rw-r--r--drivers/ata/sata_sil24.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index 27a110110077..84ffcc26a74b 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -370,6 +370,7 @@ static const struct pci_device_id sil24_pci_tbl[] = {
370 { PCI_VDEVICE(INTEL, 0x3124), BID_SIL3124 }, 370 { PCI_VDEVICE(INTEL, 0x3124), BID_SIL3124 },
371 { PCI_VDEVICE(CMD, 0x3132), BID_SIL3132 }, 371 { PCI_VDEVICE(CMD, 0x3132), BID_SIL3132 },
372 { PCI_VDEVICE(CMD, 0x0242), BID_SIL3132 }, 372 { PCI_VDEVICE(CMD, 0x0242), BID_SIL3132 },
373 { PCI_VDEVICE(CMD, 0x0244), BID_SIL3132 },
373 { PCI_VDEVICE(CMD, 0x3131), BID_SIL3131 }, 374 { PCI_VDEVICE(CMD, 0x3131), BID_SIL3131 },
374 { PCI_VDEVICE(CMD, 0x3531), BID_SIL3131 }, 375 { PCI_VDEVICE(CMD, 0x3531), BID_SIL3131 },
375 376
@@ -899,14 +900,25 @@ static bool sil24_qc_fill_rtf(struct ata_queued_cmd *qc)
899 900
900static void sil24_pmp_attach(struct ata_port *ap) 901static void sil24_pmp_attach(struct ata_port *ap)
901{ 902{
903 u32 *gscr = ap->link.device->gscr;
904
902 sil24_config_pmp(ap, 1); 905 sil24_config_pmp(ap, 1);
903 sil24_init_port(ap); 906 sil24_init_port(ap);
907
908 if (sata_pmp_gscr_vendor(gscr) == 0x11ab &&
909 sata_pmp_gscr_devid(gscr) == 0x4140) {
910 ata_port_printk(ap, KERN_INFO,
911 "disabling NCQ support due to sil24-mv4140 quirk\n");
912 ap->flags &= ~ATA_FLAG_NCQ;
913 }
904} 914}
905 915
906static void sil24_pmp_detach(struct ata_port *ap) 916static void sil24_pmp_detach(struct ata_port *ap)
907{ 917{
908 sil24_init_port(ap); 918 sil24_init_port(ap);
909 sil24_config_pmp(ap, 0); 919 sil24_config_pmp(ap, 0);
920
921 ap->flags |= ATA_FLAG_NCQ;
910} 922}
911 923
912static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, 924static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class,