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>
