summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/ata-lowlevel.c
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2005-04-03 13:03:53 +0000
committersos <sos@FreeBSD.org>2005-04-03 13:03:53 +0000
commit89c98c3d5b1b5283351185bbd6504725cd0f07fa (patch)
tree8f431486c3f1e6a7f78d6f3e1670b3d975405d5a /sys/dev/ata/ata-lowlevel.c
parent184934a8ee84627d7cf6bb6fd3a6e152b59c3ab3 (diff)
downloadFreeBSD-src-89c98c3d5b1b5283351185bbd6504725cd0f07fa.zip
FreeBSD-src-89c98c3d5b1b5283351185bbd6504725cd0f07fa.tar.gz
Fix a buglet that caused slaves to be nondetected.
Diffstat (limited to 'sys/dev/ata/ata-lowlevel.c')
-rw-r--r--sys/dev/ata/ata-lowlevel.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/ata/ata-lowlevel.c b/sys/dev/ata/ata-lowlevel.c
index 304b56c..eccacc7 100644
--- a/sys/dev/ata/ata-lowlevel.c
+++ b/sys/dev/ata/ata-lowlevel.c
@@ -690,7 +690,8 @@ ata_generic_reset(struct ata_channel *ch)
}
}
- if ((mask & 0x02) && (stat1 & ATA_S_BUSY)) {
+ if ((mask & 0x02) && (stat1 & ATA_S_BUSY) &&
+ !((mask & 0x01) && (stat0 & ATA_S_BUSY))) {
ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_SLAVE);
DELAY(10);
err = ATA_IDX_INB(ch, ATA_ERROR);
@@ -712,8 +713,8 @@ ata_generic_reset(struct ata_channel *ch)
ch->devices |= ATA_ATA_SLAVE;
}
}
- else if ((stat0 & 0x0f) && err == lsb && err == msb) {
- stat0 |= ATA_S_BUSY;
+ else if ((stat1 & 0x0f) && err == lsb && err == msb) {
+ stat1 |= ATA_S_BUSY;
}
}
}
OpenPOWER on IntegriCloud