aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/libata-core.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 8a79b976f08a..02425e401a6d 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2759,7 +2759,11 @@ static int ata_dev_set_mode(struct ata_device *dev)
2759 /* Old CFA may refuse this command, which is just fine */ 2759 /* Old CFA may refuse this command, which is just fine */
2760 if (dev->xfer_shift == ATA_SHIFT_PIO && ata_id_is_cfa(dev->id)) 2760 if (dev->xfer_shift == ATA_SHIFT_PIO && ata_id_is_cfa(dev->id))
2761 err_mask &= ~AC_ERR_DEV; 2761 err_mask &= ~AC_ERR_DEV;
2762 2762 /* Some very old devices and some bad newer ones fail any kind of
2763 SET_XFERMODE request but support PIO0-2 timings and no IORDY */
2764 if (dev->xfer_shift == ATA_SHIFT_PIO && !ata_id_has_iordy(dev->id) &&
2765 dev->pio_mode <= XFER_PIO_2)
2766 err_mask &= ~AC_ERR_DEV;
2763 if (err_mask) { 2767 if (err_mask) {
2764 ata_dev_printk(dev, KERN_ERR, "failed to set xfermode " 2768 ata_dev_printk(dev, KERN_ERR, "failed to set xfermode "
2765 "(err_mask=0x%x)\n", err_mask); 2769 "(err_mask=0x%x)\n", err_mask);