summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2005-09-19 07:35:42 +0000
committersos <sos@FreeBSD.org>2005-09-19 07:35:42 +0000
commit903949a3ce270584d3a34e4dd95b4624f47192eb (patch)
treee98395c8a806dfb20d9b137a46c9daeb95fea9f1
parent3a96c530e2e21570c06b1368d4f3168fb23cd5f0 (diff)
downloadFreeBSD-src-903949a3ce270584d3a34e4dd95b4624f47192eb.zip
FreeBSD-src-903949a3ce270584d3a34e4dd95b4624f47192eb.tar.gz
Dont wait for READY on ATAPI_IDENTIFY.
Fixes the losage of some ATAPI device that reported failed probing with "timeout waiting for read DRQ".
-rw-r--r--sys/dev/ata/ata-lowlevel.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-lowlevel.c b/sys/dev/ata/ata-lowlevel.c
index 29135b7..e227614 100644
--- a/sys/dev/ata/ata-lowlevel.c
+++ b/sys/dev/ata/ata-lowlevel.c
@@ -278,7 +278,11 @@ ata_end_transaction(struct ata_request *request)
/* if read data get it */
if (request->flags & ATA_R_READ) {
- if (ata_wait(ch, atadev, (ATA_S_READY | ATA_S_DRQ)) < 0) {
+ int flags = ATA_S_DRQ;
+
+ if (request->u.ata.command != ATA_ATAPI_IDENTIFY)
+ flags |= ATA_S_READY;
+ if (ata_wait(ch, atadev, flags) < 0) {
device_printf(request->dev,
"timeout waiting for read DRQ\n");
request->result = EIO;
OpenPOWER on IntegriCloud