Date: Mon, 3 May 1999 13:43:57 -0400 (EDT) From: Thomas David Rivers <rivers@dignus.com> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/11469: Adaptec 1542B version 3.10 not recognized. Message-ID: <199905031743.NAA45948@lakes.dignus.com>
next in thread | raw e-mail | index | archive | help
>Number: 11469 >Category: kern >Synopsis: Adaptec 1542B version 3.10 not recognized. >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon May 3 10:50:01 PDT 1999 >Closed-Date: >Last-Modified: >Originator: Thomas David Rivers >Release: FreeBSD 3.1-RELEASE i386 >Organization: Dignus, LLC >Environment: Adaptect 1542B - Version 3.10 (from 1988) >Description: The probe in version 3.1 for adaptec drivers checks the GEOMETRY_REG. If the value is 0xff or 0x00, the probe succeeds. Unfortunately, for version 3.10 of the 1542B, the value returned is 0x7f. This could also be because there are no disk drives on the SCSI bus, only tape drives. >How-To-Repeat: Get a version 3.10 Adaptec 1542B, put nothing on the SCSI bus and watch the probe fail. >Fix: The following context diff to /sys/dev/aha.c corrects the problem for me. It also adds a little to the debugging information when you boot with the -v option. *** aha.c.ori Wed Jan 20 01:21:26 1999 --- aha.c Mon May 3 12:56:10 1999 *************** *** 352,357 **** --- 352,358 ---- aha->fw_major = board_id.firmware_rev_major; aha->fw_minor = board_id.firmware_rev_minor; aha->boardid = board_id.board_type; + PRVERB(("%s: Firmware # %d %d - Board Type 0x%02x\n", aha_name(aha), aha->fw_major, aha->fw_minor, aha->boardid)); /* * The Buslogic cards have an id of either 0x41 or 0x42. So *************** *** 378,386 **** /* Wait 10ms before reading */ DELAY(10000); status = aha_inb(aha, GEOMETRY_REG); ! if (status != 0xff && status != 0x00) { ! PRVERB(("%s: Geometry Register test failed\n", ! aha_name(aha))); return (ENXIO); } } --- 379,387 ---- /* Wait 10ms before reading */ DELAY(10000); status = aha_inb(aha, GEOMETRY_REG); ! if (status != 0xff && status != 0x00 && status != 0x7f) { ! PRVERB(("%s: Geometry Register test failed, status = 0x%02x \n", ! aha_name(aha), status)); return (ENXIO); } } >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199905031743.NAA45948>