aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorDavid Daney <ddaney@caviumnetworks.com>2008-12-10 18:39:12 -0500
committerJeff Garzik <jgarzik@redhat.com>2009-01-08 16:10:36 -0500
commit5c18c4d28ba9a29203c1dc6b7c64df63ca00938a (patch)
treec010cc419afb9c3c770db278312dc38642b91981 /drivers/ata
parent78a7ba47fbc34a387e6347179ba571236596efbb (diff)
libata: Add special ata_pio_need_iordy() handling for Compact Flash.
According to the Compact Flash specification r4.1, PIO modes 5 and 6 do not use iordy. Signed-off-by: David Daney <ddaney@caviumnetworks.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-core.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 9ae583554c8b..175df54eb664 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2001,6 +2001,10 @@ unsigned int ata_pio_need_iordy(const struct ata_device *adev)
2001 as the caller should know this */ 2001 as the caller should know this */
2002 if (adev->link->ap->flags & ATA_FLAG_NO_IORDY) 2002 if (adev->link->ap->flags & ATA_FLAG_NO_IORDY)
2003 return 0; 2003 return 0;
2004 /* CF spec. r4.1 Table 22 says no iordy on PIO5 and PIO6. */
2005 if (ata_id_is_cfa(adev->id)
2006 && (adev->pio_mode == XFER_PIO_5 || adev->pio_mode == XFER_PIO_6))
2007 return 0;
2004 /* PIO3 and higher it is mandatory */ 2008 /* PIO3 and higher it is mandatory */
2005 if (adev->pio_mode > XFER_PIO_2) 2009 if (adev->pio_mode > XFER_PIO_2)
2006 return 1; 2010 return 1;