diff options
author | David Daney <ddaney@caviumnetworks.com> | 2008-12-10 18:39:12 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2009-01-08 16:10:36 -0500 |
commit | 5c18c4d28ba9a29203c1dc6b7c64df63ca00938a (patch) | |
tree | c010cc419afb9c3c770db278312dc38642b91981 /drivers/ata/libata-core.c | |
parent | 78a7ba47fbc34a387e6347179ba571236596efbb (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/libata-core.c')
-rw-r--r-- | drivers/ata/libata-core.c | 4 |
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; |