aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ata/libata-core.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 89fd0e9ed746..fd332612d64a 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3373,14 +3373,20 @@ void ata_wait_after_reset(struct ata_port *ap, unsigned long deadline)
3373 * to clear 0xff after reset. For example, HHD424020F7SV00 3373 * to clear 0xff after reset. For example, HHD424020F7SV00
3374 * iVDR needs >= 800ms while. Quantum GoVault needs even more 3374 * iVDR needs >= 800ms while. Quantum GoVault needs even more
3375 * than that. 3375 * than that.
3376 *
3377 * Note that some PATA controllers (pata_ali) explode if
3378 * status register is read more than once when there's no
3379 * device attached.
3376 */ 3380 */
3377 while (1) { 3381 if (ap->flags & ATA_FLAG_SATA) {
3378 u8 status = ata_chk_status(ap); 3382 while (1) {
3383 u8 status = ata_chk_status(ap);
3379 3384
3380 if (status != 0xff || time_after(jiffies, deadline)) 3385 if (status != 0xff || time_after(jiffies, deadline))
3381 return; 3386 return;
3382 3387
3383 msleep(50); 3388 msleep(50);
3389 }
3384 } 3390 }
3385} 3391}
3386 3392