1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-13 14:40:22 +00:00

Workaround devices that responds with registers as *both* master & slave,

but fail utterly when we try to talk to the "fake" device.
This commit is contained in:
Søren Schmidt 2004-08-22 15:54:08 +00:00
parent 7fff37fc15
commit d607fde675
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=134167

View File

@ -238,8 +238,16 @@ ata_completed(void *context, int dummy)
ATA_DEBUG_RQ(request, "completed called");
if (request->flags & ATA_R_TIMEOUT) {
/* workaround for devices failing to interrupt */
if (request->status == (ATA_S_READY | ATA_S_DSC)) {
/* workarounds for devices failing to interrupt */
if (!request->status) {
ata_prtdev(request->device,
"FAILURE - %s no interrupt\n",
ata_cmd2str(request));
request->result = ENXIO;
ATA_UNLOCK_CH(channel);
channel->locking(channel, ATA_LF_UNLOCK);
}
else if (request->status == (ATA_S_READY | ATA_S_DSC)) {
ata_prtdev(request->device,
"WARNING - %s no interrupt but good status\n",
ata_cmd2str(request));