diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ata/libata-core.c | 6 |
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); |