diff options
Diffstat (limited to 'drivers/ata/libata-sff.c')
-rw-r--r-- | drivers/ata/libata-sff.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index c0908c225483..304fdc6f1dc2 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c | |||
@@ -345,8 +345,8 @@ void ata_sff_dma_pause(struct ata_port *ap) | |||
345 | /** | 345 | /** |
346 | * ata_sff_busy_sleep - sleep until BSY clears, or timeout | 346 | * ata_sff_busy_sleep - sleep until BSY clears, or timeout |
347 | * @ap: port containing status register to be polled | 347 | * @ap: port containing status register to be polled |
348 | * @tmout_pat: impatience timeout | 348 | * @tmout_pat: impatience timeout in msecs |
349 | * @tmout: overall timeout | 349 | * @tmout: overall timeout in msecs |
350 | * | 350 | * |
351 | * Sleep until ATA Status register bit BSY clears, | 351 | * Sleep until ATA Status register bit BSY clears, |
352 | * or a timeout occurs. | 352 | * or a timeout occurs. |
@@ -365,7 +365,7 @@ int ata_sff_busy_sleep(struct ata_port *ap, | |||
365 | 365 | ||
366 | status = ata_sff_busy_wait(ap, ATA_BUSY, 300); | 366 | status = ata_sff_busy_wait(ap, ATA_BUSY, 300); |
367 | timer_start = jiffies; | 367 | timer_start = jiffies; |
368 | timeout = timer_start + tmout_pat; | 368 | timeout = ata_deadline(timer_start, tmout_pat); |
369 | while (status != 0xff && (status & ATA_BUSY) && | 369 | while (status != 0xff && (status & ATA_BUSY) && |
370 | time_before(jiffies, timeout)) { | 370 | time_before(jiffies, timeout)) { |
371 | msleep(50); | 371 | msleep(50); |
@@ -377,7 +377,7 @@ int ata_sff_busy_sleep(struct ata_port *ap, | |||
377 | "port is slow to respond, please be patient " | 377 | "port is slow to respond, please be patient " |
378 | "(Status 0x%x)\n", status); | 378 | "(Status 0x%x)\n", status); |
379 | 379 | ||
380 | timeout = timer_start + tmout; | 380 | timeout = ata_deadline(timer_start, tmout); |
381 | while (status != 0xff && (status & ATA_BUSY) && | 381 | while (status != 0xff && (status & ATA_BUSY) && |
382 | time_before(jiffies, timeout)) { | 382 | time_before(jiffies, timeout)) { |
383 | msleep(50); | 383 | msleep(50); |
@@ -390,7 +390,7 @@ int ata_sff_busy_sleep(struct ata_port *ap, | |||
390 | if (status & ATA_BUSY) { | 390 | if (status & ATA_BUSY) { |
391 | ata_port_printk(ap, KERN_ERR, "port failed to respond " | 391 | ata_port_printk(ap, KERN_ERR, "port failed to respond " |
392 | "(%lu secs, Status 0x%x)\n", | 392 | "(%lu secs, Status 0x%x)\n", |
393 | tmout / HZ, status); | 393 | DIV_ROUND_UP(tmout, 1000), status); |
394 | return -EBUSY; | 394 | return -EBUSY; |
395 | } | 395 | } |
396 | 396 | ||
@@ -1888,7 +1888,7 @@ int ata_sff_wait_after_reset(struct ata_link *link, unsigned int devmask, | |||
1888 | unsigned int dev1 = devmask & (1 << 1); | 1888 | unsigned int dev1 = devmask & (1 << 1); |
1889 | int rc, ret = 0; | 1889 | int rc, ret = 0; |
1890 | 1890 | ||
1891 | msleep(ATA_WAIT_AFTER_RESET_MSECS); | 1891 | msleep(ATA_WAIT_AFTER_RESET); |
1892 | 1892 | ||
1893 | /* always check readiness of the master device */ | 1893 | /* always check readiness of the master device */ |
1894 | rc = ata_sff_wait_ready(link, deadline); | 1894 | rc = ata_sff_wait_ready(link, deadline); |
@@ -2371,7 +2371,8 @@ void ata_bus_reset(struct ata_port *ap) | |||
2371 | 2371 | ||
2372 | /* issue bus reset */ | 2372 | /* issue bus reset */ |
2373 | if (ap->flags & ATA_FLAG_SRST) { | 2373 | if (ap->flags & ATA_FLAG_SRST) { |
2374 | rc = ata_bus_softreset(ap, devmask, jiffies + 40 * HZ); | 2374 | rc = ata_bus_softreset(ap, devmask, |
2375 | ata_deadline(jiffies, 40000)); | ||
2375 | if (rc && rc != -ENODEV) | 2376 | if (rc && rc != -ENODEV) |
2376 | goto err_out; | 2377 | goto err_out; |
2377 | } | 2378 | } |