Date: Thu, 31 Aug 1995 15:59:15 -0400 (EDT) From: Peter Dufault <dufault@hda.com> To: johnl@microware.com (John Lengeling) Cc: freebsd-questions@freebsd.org Subject: Re: Problems with Adaptec 1542CP and 2.0.5 Message-ID: <199508311959.PAA12848@hda.com> In-Reply-To: <9508311931.AA21563@snake> from "John Lengeling" at Aug 31, 95 02:31:16 pm
next in thread | previous in thread | raw e-mail | index | archive | help
> > I am trying to get 2.0.5 working on an Adaptec 1542CP SCSI controler and > a Seagate ST1480N drive. > > I was able to load 2.0.5 on the SCSI hard drive, but when I boot FreeBSD, > I get the following errors when probing the 1542CP controller: > > aha0: Unknown board-VD.0 > aha0: reading board settings, dma=5 int=11 (bus speed defaulted) > aha0: aha_cmd, cmd/data port full > aha0 at 0x330-0x333 irq 11 drq 5 on isa > aha0 waiting for scsi drvices to settle > (aha0:0:0): timed out > adapter not taking commands.. frozen?! > Debugger("aha1542") called. > > (aha0:0:0): timed out > adapter not taking commands.. frozen?! > Debugger("aha1542") called. > AGAIN > aha0: MBO 02 and not 00 (free) It could be because it is not unlocking the mailbox because it doesn't recognise the board revision of the apparently new 1542CP. (What is a CP anyway?) The following patch makes the possibly rash assumption that any board rev greater than 0x42 requires this operation. That seems to be the pattern with all new Adaptec boards. NOTE: A fix for this is probably needed for 2.1 since any new Adaptec 1542C is likely to be common. Please test this and report back if you can. Peter *** aha1542.c.dist Sun Jul 16 15:36:06 1995 --- aha1542.c Thu Aug 31 15:55:18 1995 *************** *** 965,971 **** case 0x43: return "AHA-1542C"; case 0x44: return "AHA-1542CF"; case 0x45: return "AHA-1542CF BIOS v2.01"; ! default: return "Unknown board"; } } --- 965,974 ---- case 0x43: return "AHA-1542C"; case 0x44: return "AHA-1542CF"; case 0x45: return "AHA-1542CF BIOS v2.01"; ! ! default: ! printf("(board rev %02x)", type); ! return "Unknown board revision"; } } *************** *** 977,982 **** --- 980,986 ---- int unit; { struct aha_data *aha = ahadata[unit]; + char *rev; unsigned char ad[3]; volatile int i, sts; struct aha_config conf; *************** *** 1066,1077 **** * No need to check the extended bios flags as some of the * extensions that cause us problems are not flagged in that byte. */ ! printf("aha%d: %s-V%c.%c", ! unit, board_rev(inquire.boardid), inquire.revision_1, ! inquire.revision_2); ! if ((inquire.boardid == 0x43) || (inquire.boardid == 0x44) || ! (inquire.boardid == 0x45) || (inquire.boardid == 0x41 && inquire.revision_1 == 0x31 && inquire.revision_2 == 0x34)) { aha_cmd(unit, 0, sizeof(extbios), 0, &extbios, AHA_EXT_BIOS); #ifdef AHADEBUG --- 1070,1083 ---- * No need to check the extended bios flags as some of the * extensions that cause us problems are not flagged in that byte. */ ! printf("aha%d: "); ! ! rev = board_rev(inquire.boardid); ! printf("%s-V%c.%c", unit, rev, inquire.revision_1, inquire.revision_2); ! ! if ((inquire.boardid >= 0x43) || ! (inquire.boardid == 0x41 && inquire.revision_1 == 0x31 && inquire.revision_2 == 0x34)) { aha_cmd(unit, 0, sizeof(extbios), 0, &extbios, AHA_EXT_BIOS); #ifdef AHADEBUG *************** *** 1082,1096 **** aha_cmd(unit, 2, 0, 0, 0, AHA_MBX_ENABLE, 0, extbios.mailboxlock); - } /* Which boards support residuals? Some early 1542A's apparently * don't. The 1542B with V0.5 of the software does, so I've * arbitrarily set that as the earliest rev. */ ! if ((inquire.boardid == 0x43) || (inquire.boardid == 0x44) || ! (inquire.boardid == 0x45) || (inquire.boardid == 0x41 && (inquire.revision_1 > '0' || inquire.revision_2 >= '5'))) { printf(", enabling residuals"); aha->init_opcode = AHA_INIT_RESID_CCB; --- 1088,1101 ---- aha_cmd(unit, 2, 0, 0, 0, AHA_MBX_ENABLE, 0, extbios.mailboxlock); } /* Which boards support residuals? Some early 1542A's apparently * don't. The 1542B with V0.5 of the software does, so I've * arbitrarily set that as the earliest rev. */ ! if ((inquire.boardid >= 0x43) || ! (inquire.boardid == 0x41 && (inquire.revision_1 > '0' || inquire.revision_2 >= '5'))) { printf(", enabling residuals"); aha->init_opcode = AHA_INIT_RESID_CCB;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199508311959.PAA12848>