ide: report timeouts in ide_busy_sleep()
* change 'hwif' argument to 'drive' * report an error on timeout Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
cc30137a22
commit
28ee9bc5cc
|
@ -295,7 +295,7 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
|
||||||
|
|
||||||
timeout = ((cmd == ATA_CMD_ID_ATA) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2;
|
timeout = ((cmd == ATA_CMD_ID_ATA) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2;
|
||||||
|
|
||||||
if (ide_busy_sleep(hwif, timeout, use_altstatus))
|
if (ide_busy_sleep(drive, timeout, use_altstatus))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* wait for IRQ and ATA_DRQ */
|
/* wait for IRQ and ATA_DRQ */
|
||||||
|
@ -316,8 +316,9 @@ int ide_dev_read_id(ide_drive_t *drive, u8 cmd, u16 *id)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
|
int ide_busy_sleep(ide_drive_t *drive, unsigned long timeout, int altstatus)
|
||||||
{
|
{
|
||||||
|
ide_hwif_t *hwif = drive->hwif;
|
||||||
u8 stat;
|
u8 stat;
|
||||||
|
|
||||||
timeout += jiffies;
|
timeout += jiffies;
|
||||||
|
@ -330,6 +331,8 @@ int ide_busy_sleep(ide_hwif_t *hwif, unsigned long timeout, int altstatus)
|
||||||
return 0;
|
return 0;
|
||||||
} while (time_before(jiffies, timeout));
|
} while (time_before(jiffies, timeout));
|
||||||
|
|
||||||
|
printk(KERN_ERR "%s: timeout in %s\n", drive->name, __func__);
|
||||||
|
|
||||||
return 1; /* drive timed-out */
|
return 1; /* drive timed-out */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -420,7 +423,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
|
||||||
tp_ops->dev_select(drive);
|
tp_ops->dev_select(drive);
|
||||||
msleep(50);
|
msleep(50);
|
||||||
tp_ops->exec_command(hwif, ATA_CMD_DEV_RESET);
|
tp_ops->exec_command(hwif, ATA_CMD_DEV_RESET);
|
||||||
(void)ide_busy_sleep(hwif, WAIT_WORSTCASE, 0);
|
(void)ide_busy_sleep(drive, WAIT_WORSTCASE, 0);
|
||||||
rc = ide_dev_read_id(drive, cmd, id);
|
rc = ide_dev_read_id(drive, cmd, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1109,7 +1109,7 @@ void ide_fix_driveid(u16 *);
|
||||||
|
|
||||||
extern void ide_fixstring(u8 *, const int, const int);
|
extern void ide_fixstring(u8 *, const int, const int);
|
||||||
|
|
||||||
int ide_busy_sleep(ide_hwif_t *, unsigned long, int);
|
int ide_busy_sleep(ide_drive_t *, unsigned long, int);
|
||||||
|
|
||||||
int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long);
|
int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue