Skip site navigation (1)Skip section navigation (2)
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>