diff options
Diffstat (limited to 'drivers/ata/sata_sil24.c')
| -rw-r--r-- | drivers/ata/sata_sil24.c | 11 | 
1 files changed, 11 insertions, 0 deletions
| diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 27a110110077..8ee6b5b4ede7 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c @@ -899,14 +899,25 @@ static bool sil24_qc_fill_rtf(struct ata_queued_cmd *qc)  static void sil24_pmp_attach(struct ata_port *ap)  { +	u32 *gscr = ap->link.device->gscr; +  	sil24_config_pmp(ap, 1);  	sil24_init_port(ap); + +	if (sata_pmp_gscr_vendor(gscr) == 0x11ab && +	    sata_pmp_gscr_devid(gscr) == 0x4140) { +		ata_port_printk(ap, KERN_INFO, +			"disabling NCQ support due to sil24-mv4140 quirk\n"); +		ap->flags &= ~ATA_FLAG_NCQ; +	}  }  static void sil24_pmp_detach(struct ata_port *ap)  {  	sil24_init_port(ap);  	sil24_config_pmp(ap, 0); + +	ap->flags |= ATA_FLAG_NCQ;  }  static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, | 
