ide: enhance ide_busy_sleep()

* Make ide_busy_sleep() take timeout value as a parameter
  and also allow use of AltStatus Register if requested with
  altstatus parameter.  Update existing users accordingly.

* Convert ide_driveid_update() and actual_try_to_identify()
  to use ide_busy_sleep().

There should be no functional changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
Bartlomiej Zolnierkiewicz
2008-10-10 22:39:23 +02:00
parent c36a7e9884
commit b163f46d5e
3 changed files with 19 additions and 28 deletions

View File

@ -666,7 +666,7 @@ int ide_driveid_update(ide_drive_t *drive)
ide_hwif_t *hwif = drive->hwif;
const struct ide_tp_ops *tp_ops = hwif->tp_ops;
u16 *id;
unsigned long timeout, flags;
unsigned long flags;
u8 stat;
/*
@ -678,16 +678,11 @@ int ide_driveid_update(ide_drive_t *drive)
tp_ops->set_irq(hwif, 0);
msleep(50);
tp_ops->exec_command(hwif, ATA_CMD_ID_ATA);
timeout = jiffies + WAIT_WORSTCASE;
do {
if (time_after(jiffies, timeout)) {
SELECT_MASK(drive, 0);
return 0; /* drive timed-out */
}
msleep(50); /* give drive a breather */
stat = tp_ops->read_altstatus(hwif);
} while (stat & ATA_BUSY);
if (ide_busy_sleep(hwif, WAIT_WORSTCASE, 1)) {
SELECT_MASK(drive, 0);
return 0;
}
msleep(50); /* wait for IRQ and ATA_DRQ */
stat = tp_ops->read_status(hwif);