diff options
author | imp <imp@FreeBSD.org> | 1998-11-25 19:12:56 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 1998-11-25 19:12:56 +0000 |
commit | aec3e1ab2f35e76981af7bfbffeb96922839135a (patch) | |
tree | 1cd4d1cdea09be2a55fbba77fc444ecb89d5c36f | |
parent | 600fcdb1f214fd95fccb8e1e9342f9568d2baebd (diff) | |
download | FreeBSD-src-aec3e1ab2f35e76981af7bfbffeb96922839135a.zip FreeBSD-src-aec3e1ab2f35e76981af7bfbffeb96922839135a.tar.gz |
o Patch, slightly altered, from Graham Menhennitt for older aha 1542B
cards. My machine didn't tickle this problem, so I can't tell if
it fixed anything or not. However, it didn't break my already working
1542-{B,C,CF,CP} probes.
o Minor comment correction
o Minor correction in printf
-rw-r--r-- | sys/dev/aha/aha.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/sys/dev/aha/aha.c b/sys/dev/aha/aha.c index a5bfa2f..e892865 100644 --- a/sys/dev/aha/aha.c +++ b/sys/dev/aha/aha.c @@ -55,7 +55,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aha.c,v 1.11 1998/11/10 06:44:42 gibbs Exp $ + * $Id: aha.c,v 1.12 1998/11/10 06:47:09 gibbs Exp $ */ #include <sys/param.h> @@ -351,9 +351,18 @@ aha_probe(struct aha_softc* aha) * this register, and return 0xff, while buslogic cards will return * something different. * - * XXX I'm not sure how this will impact other cloned cards. + * It appears that for reasons unknow, for the for the + * aha-1542B cards, we need to wait a little bit before trying + * to read the geometry register. I picked 10ms since we have + * reports that a for loop to 1000 did the trick, and this + * errs on the side of conservatism. Besides, no one will + * notice a 10mS delay here, even the 1542B card users :-) + * + * XXX I'm not sure how this will impact other cloned cards */ if (aha->boardid <= 0x42) { + /* Wait 10ms before reading */ + DELAY(10000); status = aha_inb(aha, GEOMETRY_REG); if (status != 0xff) { PRVERB(("%s: Geometry Register test failed\n", @@ -426,10 +435,10 @@ aha_fetch_adapter_info(struct aha_softc *aha) /*paramlen*/2, NULL, 0, DEFAULT_CMD_TIMEOUT); } if (aha->boardid < 0x41) - printf("%s: Likely aha 1542A, which might not work properly\n", + printf("%s: Warning: aha-1542A won't likely work.\n", aha_name(aha)); - aha->max_sg = 17; /* Need 17 to do 64k I/O */ + aha->max_sg = 17; /* Need >= 17 to do 64k I/O */ aha->diff_bus = 0; aha->extended_lun = 0; aha->extended_trans = 0; @@ -611,8 +620,8 @@ aha_attach(struct aha_softc *aha) struct cam_devq *devq; /* - * We reserve 1 ccb for error recovery, so don't - * tell the XPT about it. + * We don't do tagged queueing, since the aha cards don't + * support it. */ tagged_dev_openings = 0; |