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:
parent
7fff37fc15
commit
d607fde675
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=134167
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user