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) | |||
| 899 | 899 | ||
| 900 | static void sil24_pmp_attach(struct ata_port *ap) | 900 | static void sil24_pmp_attach(struct ata_port *ap) |
| 901 | { | 901 | { |
| 902 | u32 *gscr = ap->link.device->gscr; | ||
| 903 | |||
| 902 | sil24_config_pmp(ap, 1); | 904 | sil24_config_pmp(ap, 1); |
| 903 | sil24_init_port(ap); | 905 | sil24_init_port(ap); |
| 906 | |||
| 907 | if (sata_pmp_gscr_vendor(gscr) == 0x11ab && | ||
| 908 | sata_pmp_gscr_devid(gscr) == 0x4140) { | ||
| 909 | ata_port_printk(ap, KERN_INFO, | ||
| 910 | "disabling NCQ support due to sil24-mv4140 quirk\n"); | ||
| 911 | ap->flags &= ~ATA_FLAG_NCQ; | ||
| 912 | } | ||
| 904 | } | 913 | } |
| 905 | 914 | ||
| 906 | static void sil24_pmp_detach(struct ata_port *ap) | 915 | static void sil24_pmp_detach(struct ata_port *ap) |
| 907 | { | 916 | { |
| 908 | sil24_init_port(ap); | 917 | sil24_init_port(ap); |
| 909 | sil24_config_pmp(ap, 0); | 918 | sil24_config_pmp(ap, 0); |
| 919 | |||
| 920 | ap->flags |= ATA_FLAG_NCQ; | ||
| 910 | } | 921 | } |
| 911 | 922 | ||
| 912 | static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, | 923 | static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, |
