Messages in this thread | | | Date | Wed, 31 Jan 2007 12:22:24 -0500 | From | Jeff Garzik <> | Subject | Re: [PATCH] libata: Fix (hopefully) all the remaining problems with devices failing setup/identify |
| |
Alan wrote: > @@ -5142,6 +5174,20 @@ > status = ata_chk_status(ap); > if (unlikely(status & ATA_BUSY)) > goto idle_irq; > + > + if (unlikely(qc->tf.command == ATA_CMD_SET_FEATURES && > + qc->tf.feature == SETFEATURES_XFER)) { > + /* Let the timings change settle and the drive catch up as > + some hardware needs up to 10uS to get its brain back in > + gear. Taken from the workarounds in drivers/ide done by > + Matthew Faupel/Niccolo Rigacci */ > + for (i = 0; i < 10; i++) { > + if ((status & (ATA_BUSY | ATA_DRQ | ATA_ERR)) == 0) > + break; > + udelay(1); > + status = ata_chk_status(ap); > + }
Looks like you should use ata_busy_wait() here, rather than reproducing the same code again.
Jeff
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |