Date: Mon, 08 Sep 1997 22:52:35 -0500 From: Doug Ledford <dledford@dialnet.net> To: "Steven N. Hirsch" <shirsch@ibm.net> Cc: adaptec drivers <aic7xxx@FreeBSD.ORG>, linux-kernel@vger.rutgers.edu, "Daniel M. Eischen" <deischen@iworks.InterWorks.org>, "Justin T. Gibbs" <gibbs@plutotech.com> Subject: Re: aic Driver problems Message-ID: <199709090352.WAA13302@dledford.dialnet.net> In-Reply-To: Your message of "Mon, 08 Sep 1997 20:48:19 EDT." <Pine.LNX.3.95.970908071936.197A-100000@air.steve.net>
next in thread | previous in thread | raw e-mail | index | archive | help
-------- > Abort reset flags 0x401 > > while idle, LASTPHASE=0x1 > SCSISIGI=0xfa > SEQADR=0x5 > SSTAT0=0x5 > SSTAT1=0x0 Now I'm starting to see what's going on. LASTPHASE indicates BUSFREE, so nothing had been happening prior to the reset, SCSISIGI (which is the same as SCSISIGO and only depends on the current phase, in this case it is more appropriately SCSISIGO) indicates that we are requesting selection on a device on the bus, and it hasn't responded in 10 seconds time. The bad thing here is, we should have gotten a selection timeout interrupt, and we didn't. SSTAT1 confirms this (flag 0x80 in STAT1 is SELTO, but that isn't set, so we didn't get one). So, seems to me the second bus on these cards is not properly getting or acknowledging the ENSELTIMO flag to enable timeouts on selections for bus B. Now, as to Justin and Dan's comments about not downloading the sequencer program. We are setting the p->bus_type = AIC_TWIN prior to our call to aic7xxx_loadseq(), which then uses the p->bus_type to set options |= TWIN_CHANNEL, so that should be working fine. The aic7xxx.seq file also uses the TWIN_CHANNEL flag for those sections, so we shouldn't have a problem with flags not matching. The only other thing I can think of is if the fact that we aic7xxx_loadseq(); outb( ENABLE, p->base + BCTL); after we have done the board settings might cause the board to ignore settings passed in when the board was disabled (we used to download the sequencer prior to doing the settings of the SCSI registers on the card). Also, the old driver used to explicitly gate us to the B bus before setting the SCSI flags for the B bus, maybe we need to do so now. You could try this patch out and see how it goes then: --- linux-2_0_31-pre/drivers/scsi/aic7xxx.c.old Mon Sep 8 21:59:29 1997 +++ linux/drivers/scsi/aic7xxx.c Mon Sep 8 22:40:46 1997 @@ -5088,4 +5088,6 @@ * bus B values first. */ + outb(SELBUSB, p->base + SBLKCTL); + outb(p->scsi_id_b, p->base + SCSIID); scsi_conf = inb(p->base + SCSICONF + 1); -- ***************************************************************************** * Doug Ledford * Unix, Novell, Dos, Windows 3.x, * * dledford@dialnet.net 873-DIAL * WfW, Windows 95 & NT Technician * * PPP access $14.95/month ***************************************** * Springfield, MO and surrounding * Usenet news, e-mail and shell account.* * communities. Sign-up online at * Web page creation and hosting, other * * 873-9000 V.34 * services available, call for info. * *****************************************************************************
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709090352.WAA13302>