diff options
author | sos <sos@FreeBSD.org> | 2004-07-23 17:01:47 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2004-07-23 17:01:47 +0000 |
commit | 13128d7277d124b4e62819135e1dff1b159e2b09 (patch) | |
tree | 6929b0b6f4ef3e8e4fe15233ad638fbeb53eab24 /sys/dev/ata | |
parent | 296061987ab879478b4a451e688978307546501c (diff) | |
download | FreeBSD-src-13128d7277d124b4e62819135e1dff1b159e2b09.zip FreeBSD-src-13128d7277d124b4e62819135e1dff1b159e2b09.tar.gz |
Dont expect interrupt from ATAPI_RESET, it doesn't deliver one.
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-lowlevel.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/ata/ata-lowlevel.c b/sys/dev/ata/ata-lowlevel.c index d3dbb7c..e1635d7 100644 --- a/sys/dev/ata/ata-lowlevel.c +++ b/sys/dev/ata/ata-lowlevel.c @@ -108,6 +108,17 @@ ata_generic_transaction(struct ata_request *request) break; } + /* device reset doesn't interrupt */ + if (request->u.ata.command == ATA_ATAPI_RESET) { + DELAY(10); + request->status = ATA_IDX_INB(ch, ATA_STATUS); + if (request->status & ATA_S_ERROR) { + request->error = ATA_IDX_INB(ch, ATA_ERROR); + //request->result = EIO; + } + break; + } + /* if write command output the data */ if (write) { if (ata_wait(request->device, |