diff options
Diffstat (limited to 'drivers/ata/sata_sil24.c')
-rw-r--r-- | drivers/ata/sata_sil24.c | 12 |
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 | ||
900 | static void sil24_pmp_attach(struct ata_port *ap) | 901 | static 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 | ||
906 | static void sil24_pmp_detach(struct ata_port *ap) | 916 | static 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 | ||
912 | static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, | 924 | static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, |