Commit Graph

19 Commits

Author SHA1 Message Date
Justin T. Gibbs
f2f31e3b40 Disable tagged queuing by default. option AHC_TAGENABLE will turn it on.
This is temporary until I can get a device flags added.
1995-04-09 06:39:01 +00:00
Justin T. Gibbs
25e44d3935 Log ABORT_TAG messages to the console.
When attempting to abort a command, don't assume that just because the
sequecer happens to have SCBPTR pointing at the scb we want that it is
an active command.
1995-04-01 19:53:04 +00:00
Justin T. Gibbs
c5e0851d47 Major overhaul of the aic7xxx driver:
- catch the interrupt type (EDGE/LEVEL) before chip reset instead
	  of guessing the right type.

	- Add pause variable to the ahc struct to better handle the different
	  interrupt types and pausing the sequencer.

	- CLRINTSTAT -> CLRSCSIINT: This is a documented bit in the CLRINT
	  register in newer Adaptec documentation, so use their name for it.

	- Report valid residual byte counts.

	- Don't mess with the target scratch areas > id 8 on single, narrow,
	  channel devices.  The BIOS does a checksum of this area and can
	  flip out if we zero it out.

	- Initialize the sequencer FLAGS scratch ram variable in the single
	  channel devices to 0.  This was the cause of the annoying warning
	  where we would get a cmdcmplt the first time we did any type of
	  transfer negotiation with no valid scb.  It also fixes the problem
	  that looked like the INTSTAT register wasn't clearing fast enough.
	  This only showed up on 294x cards, not motherboard aic7870s.

	- Add the AHC_AIC7870 type and use it as the superset of aic7870
	  based controllers.

	- clear the sync offset section of the targ scratch area so that
	  we default to asyncronous transfers.  This was only a problem
	  for wide controllers because there was a scenario where the
	  offset wouldn't get updated before a data(out/in) phase would
	  occur.  This required some change in the sequencer code since we
	  were depending on this field to hold the rate to negotiate.

	- allow sync and wide negotiated commands to be tagged (the sequencer
	  now handles this properly).
1995-03-31 13:54:41 +00:00
Justin T. Gibbs
0c40ff690c Increase the DELAY used in ahc_poll. This is only used during intial
probe of the device and shouldn't affect normal operation.  It seems that
some version of the aic7870 are extreamly slow in clearing their interrupt
register so the added delay is required to ensure we don't poll a stale
interrupt value.

Clean up debugging printfs and stuff superflous output into #ifdef AHC_DEBUG.

Ensure that sdtrpending and wdtrpending are cleared in all cases after
we recieve an SDTR or WDTR message.

With this commit, the 294x should work or at least be much closer to
working properly.
1995-03-17 23:58:27 +00:00
Justin T. Gibbs
7896fbec24 Compile cleanly -Wall. Remove some code that was an attempt to make
the 294x probe more stable, but since the guess was wrong, go back to
the clearer aproach I used the first time around.
1995-03-07 08:59:28 +00:00
Justin T. Gibbs
6d1dd577f3 Add tagged queueing support. Right now, we only allow two tagged
commands per target.  I could have followed the route of the ncr driver
and gone to great lengths to get the SCSI subsystem to support more, but
I think I'll use the time saved to help Julian and Peter make tagged
queuing a better handled generic feature.  This also includes some comment
and enum clean up and a possible fix for the hanging PCI controllers.
1995-02-22 01:43:25 +00:00
Justin T. Gibbs
cfa2e9e703 Keep track of when we actually are awaiting a reply to an SDTR or WDTR
message instead of relying on the fact that we are scheduled to send them.
The old method worked 99.9% of the time, but someone reported some periferals
that did MSG_REJECT at odd times (sometimes before we could send an SDTR
or WDTR) that we would construe as the response to an SDTR or WDTR message.
This also removes a possible race condition where after a bus reset (the
result of a command time out not during intial probe time), we might queue
two commands both requesting SDTR, WDTR or both.
1995-02-03 17:15:12 +00:00
Justin T. Gibbs
b11c81e076 Set the current transfer parameters directly after a mesg reject for either
Wide or Sync negotiation attempts as we do in all other phases of negotiation.
1995-01-27 17:37:05 +00:00
Justin T. Gibbs
bd524f1b07 Initialize SIMODE1, SCSIID, and SXFRCTL1 in ahc_init instead of at each
reconnection/selection with a target.
1995-01-22 00:48:39 +00:00
Justin T. Gibbs
87cf6d44c7 Add $Ids. Use DMA for downloading SCBs to the sequencer. Implement SDTR,
WDTR, and message reject handlers so they don't need to exist in the
sequencer.  All three of these cases are not on the critical path, so it
makes little sense to use up precious sequencer ram for them.
1995-01-16 16:33:47 +00:00
Justin T. Gibbs
01ce9c8620 Point include to i386/scsi 1995-01-13 02:27:08 +00:00
Justin T. Gibbs
deefdf55f5 Generic support for the entire aic7x70 line of adaptors. No one else
came up with a directory place ment more me, so now we have i386/scsi.
1995-01-13 02:24:31 +00:00
Justin T. Gibbs
53a69701bc Handle both channels of Twin channeled devices. Respect the configuration
values for syncronous negotiation.  The 284x series adaptors can now be
supported without the Bios being enabled.  If you disable the Bios on the
274x series adaptors, all configuration parameters revert to the default
since there is no way to retrieve them.
1994-12-31 19:31:56 +00:00
Justin T. Gibbs
c21818c866 Put the sequencer into FASTMODE during initialization. I can now
get up to 8m/sec write performance out of a pd2100 with this driver.
1994-11-29 23:06:54 +00:00
Andreas Schulz
e4c5063e0b Changed the MAX_SLOTS constant from 8 to 16. The EISA bus can have up
to 16 slots.
1994-11-25 22:25:15 +00:00
Justin T. Gibbs
88d9617c20 Register with devconfg so we show up in lsdev. 1994-11-18 20:34:30 +00:00
Justin T. Gibbs
771c42f405 Change the include for the sequencer program to point back to the
right place:

include "../../sys/gnu/misc/aic7770/aic7770_seq.h"
1994-11-18 09:14:14 +00:00
Jordan K. Hubbard
1bb8699814 Whoops - this one's my fault. Put back my changes for seqprog[]. 1994-11-18 09:03:09 +00:00
Justin T. Gibbs
09faa0cc64 My port of Julian's 1742 driver to work with the Linux aic7770 sequencer
code.
1994-11-17 20:22:31 +00:00