ata: add ata_id_pio_need_iordy() helper (v2)

v2:
Minor fixes per Sergei's review.

Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 79ca743f
...@@ -800,6 +800,20 @@ static inline int ata_id_is_ssd(const u16 *id) ...@@ -800,6 +800,20 @@ static inline int ata_id_is_ssd(const u16 *id)
return id[ATA_ID_ROT_SPEED] == 0x01; return id[ATA_ID_ROT_SPEED] == 0x01;
} }
static inline int ata_id_pio_need_iordy(const u16 *id, const u8 pio)
{
/* CF spec. r4.1 Table 22 says no IORDY on PIO5 and PIO6. */
if (pio > 4 && ata_id_is_cfa(id))
return 0;
/* For PIO3 and higher it is mandatory. */
if (pio > 2)
return 1;
/* Turn it on when possible. */
if (ata_id_has_iordy(id))
return 1;
return 0;
}
static inline int ata_drive_40wire(const u16 *dev_id) static inline int ata_drive_40wire(const u16 *dev_id)
{ {
if (ata_id_is_sata(dev_id)) if (ata_id_is_sata(dev_id))
......
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