Commit 11750a40 authored by Alan's avatar Alan Committed by Jeff Garzik

libata: Early CFA adapters are not required to support mode setting

If we are doing a PIO setup for a CFA card and it blows up with a device
error then assume it is an older CFA card which doesn't support this
rather than failing the device out of existance.

Stands seperate to the quieting patch but that is obviously useful with
this change.
Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent ce053fa8
...@@ -2333,6 +2333,10 @@ static int ata_dev_set_mode(struct ata_device *dev) ...@@ -2333,6 +2333,10 @@ static int ata_dev_set_mode(struct ata_device *dev)
dev->flags |= ATA_DFLAG_PIO; dev->flags |= ATA_DFLAG_PIO;
err_mask = ata_dev_set_xfermode(dev); err_mask = ata_dev_set_xfermode(dev);
/* Old CFA may refuse this command, which is just fine */
if (dev->xfer_shift == ATA_SHIFT_PIO && ata_id_is_cfa(dev->id))
err_mask &= ~AC_ERR_DEV;
if (err_mask) { if (err_mask) {
ata_dev_printk(dev, KERN_ERR, "failed to set xfermode " ata_dev_printk(dev, KERN_ERR, "failed to set xfermode "
"(err_mask=0x%x)\n", err_mask); "(err_mask=0x%x)\n", err_mask);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment