freebsd-skq/sys/dev
Justin T. Gibbs 3f293aaf2c Identify the AIC7901A as such instead of an AIC7902.
Push protocol violation handler to its own routine.  We now
properly detect and recovery from the following target induced
protocol violations:
	o Unexpected or invalid non-packetized Relesection
	o Command complete with no status message
	o Good Status after incomplete cdb transfer

Add an SCB collision avoidance algorithm that allows us to
use all 512 SCBs for non-packetized operations.  There is
still the possibility of running out of SCBs with non-colliding
tag identifiers, but the algorithm ensures that the stall will
be rare and short lived.

Convert to a read-only algorithm for validing entries in the
qoufifo.  The sequencer now toggles the high bit of the SCB
identifier on each wrap around of the qinfifo.  If the high
bit doesn't match the expected value for this pass of the
qoufifo, the entry is not valid.  This has the benefit of
working on machines that have large granularity cache write
back semantics without requiring any additional memory.

Remove lots of code related to untagged SCB queues.  Since
these controllers can keep a fully busy target table, we
will never have untagged SCB queues.

Lots of improvements to diagnostic logging.

Clarify some comments.

Don't clear BUSFREE interrupt enable in SIMODE1 in the SELTO
handler.  Just clearing the interrupt status is sufficient and
this avoids the chance of disabling busfree detection in connection
that occurs while we are handling the busfree interrupt.

Clear all possible interrupt sources when handling a busfree
interrupt.  The hardware clears some but not all of them.

Don't panic if we get into the default SCSIINT handler.
Dump the card state and clear all interrupt sources in the
hope that we can continue.

LASTPHASE != PREVPHASE.  Use the correct PREVPHASE for testing
against values in the PERRDIAG register.

According to SPI4, the bus free that is required after certain
PPR negotiations will only occur at the end of all message phases.
Handle the bus free if it occurs after a transaction in either
the message-in or message-out phases.  The busfree can also occur
if the status of IU_REQ changes due to a WDTR or SDTR message.
We now set the expect busfree flag in ahd_set_syncrate so that
it works regardless of message type.

Correct a problem with missing certain busfree events.  The
chip supports single-stepping even if a SCSIINT is pending.
This obviates the need to clear all of the SCSI interrupt enables
prior to single stepping.  Since ENBUSFREE can only be disabled
manually and not re-enabled, avoiding touching this bit in the
single-step case yields reliable bus free detection.

Enhance ahd_clear_intstat to clear all SCSIINT sources.

Only use ahd_update_pending_scbs() if we are active on the
bus.  We cannot modify the "MK_MESSAGE" bits on SCBs in the
execution queue if a selection might be in process since
the sequencer uses this bit to detect PPR negotiation to
a target with an outstanding IU_REQ agreement.

Allocate the SCB delivery mechansim's sentinal SCB specially
so we don't waste a valid SCB for this task.

Move tranceive state settle logic to ahd_chip_init() since
this needs to occur after every chip reset, not just the
chip reset that happens during primary driver initialization.

Correct a bug with transmitting lun information in packetized
connections.

Restrict busy target table operations to the range of luns
that can be used for non-packetized connections.  Larger luns
can only be accessed in packetized mode.

Correct a busy target table addressing bug.

Be more careful about how we shutdown the DMA engines during
bus reset events.

Only freeze the SIMQ once regardless of the number of bus
reset events that occur while we are polling for the resets
to stop.

Don't rely on the sequencer remaining paused() during our
reset poll.  It is safe for the sequencer to run during this
time, and many callers to the bus reset code would need to
be modified to make this assumption universally true.

Even if we are not going to clobber SCB state when an auto-request
sense SCB has a check condition, we must still unfreeze the queue.
Re-arrange the BAD STATUS handler to handle this case appropriately.

Modify the SCB download size depending on whether long luns are
being stored in the SCB.

Add ahd_print_register() for pretty printing register diagnostics.

Don't trust that the flexport logic to detect the presence of
a seeprom is available.  It may not be on some motherboard
implementations.

"the the" -> "the"
2002-08-31 06:48:14 +00:00
..
aac The aac driver needs 256K of contiguous physical memory in order to 2002-08-30 05:02:07 +00:00
acpica s/hint.acpi.0.disable/hint.acpi.0.disabled/ 2002-08-30 11:11:07 +00:00
advansys
agp Include <sys/lockmgr.h> for old lock interfaces instead of depending on 2002-08-27 11:51:55 +00:00
aha Fix new gcc-3.1 warnings. I think this gets GENERIC compiling cleanly 2002-05-24 05:21:36 +00:00
ahb Fix new gcc-3.1 warnings. I think this gets GENERIC compiling cleanly 2002-05-24 05:21:36 +00:00
aic Remove __P. 2002-03-20 02:08:01 +00:00
aic7xxx Identify the AIC7901A as such instead of an AIC7902. 2002-08-31 06:48:14 +00:00
amd
amr Add IDs for upcoming LSI U320 products that use the MegaRAID interface. 2002-08-30 18:28:00 +00:00
an Fix location and name of if_an_pci.c in comment. 2002-07-27 21:28:40 +00:00
ar Directives may not be used inside a macro argument, so don't. 2002-05-09 18:01:19 +00:00
asr Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
ata printf -> CAM_DEBUG so debugging prints are tunable. 2002-08-28 07:03:44 +00:00
atkbdc Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
awi Use __FreeBSD_version to test what things to use 2002-05-31 03:27:34 +00:00
bge Recognize the Altima AC9100 chip, which is used in current versions 2002-07-26 03:47:08 +00:00
bktr Remove abuse of NBKTR - this was always a NOP on freebsd. We never 2002-07-21 05:19:03 +00:00
buslogic Remove #if 0'ed abuse of NPCI 2002-07-21 05:16:56 +00:00
cardbus pccbb -> cbb 2002-08-15 08:02:23 +00:00
ccd Fixed printf format errors. Most of them are 64-bit daddr_t casualties. 2002-05-25 11:05:07 +00:00
ciss Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
cm Remove __P. 2002-03-20 02:08:01 +00:00
cnw Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
cs Migrate to PCMCIA_CARD() macros 2001-11-15 07:52:49 +00:00
ct Quick, low impact band-aide to unbreak the build. Added && 0 so we 2002-06-01 08:29:12 +00:00
cy Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
dc style: 2002-08-23 23:49:02 +00:00
de Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
dec Introduce a boot environment variable (clock_compat_osf1) which can 2001-11-03 17:22:50 +00:00
dgb Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
digi Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
dpt Fix a couple of bogus enums. 2002-01-08 06:47:55 +00:00
drm In continuation of early fileop credential changes, modify fo_ioctl() to 2002-08-17 02:36:16 +00:00
ed Add ALLIED TELESIS,K.K. LA-ISA V2 ISA PnP ID. 2002-07-26 17:33:58 +00:00
eisa - Use the __BUS_ACCESSOR macro for EISA_ACCESSOR instead 2002-08-20 12:32:06 +00:00
em Back out TX/RX descriptor/buffer management changes from earier commit. 2002-08-26 18:59:16 +00:00
en Remove __P. 2002-03-20 02:08:01 +00:00
ep Fix build breakage on my pccard related commit. 2002-05-31 01:08:49 +00:00
ex Remove __P. 2002-03-20 02:08:01 +00:00
exca MFp4: 2002-07-26 08:01:08 +00:00
fb Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
fdc After some comments from bde, rewrite the loops to avoid turning the 2002-05-14 21:28:45 +00:00
fe Supported C-NET(98)P2 PnP mode. 2002-02-04 14:01:27 +00:00
fxp Increase size of ifnet.if_flags from 16 bits (short) to 32 bits (int). To avoid 2002-08-18 07:05:00 +00:00
gem Fix warning. 2002-07-24 01:09:38 +00:00
gfb Turn on TGA support. 2002-04-13 22:34:16 +00:00
gx Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
hea - Remove DMA_* macros as only one, DMA_GET_ADDR, was used. 2002-06-24 05:03:44 +00:00
hfa Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
hme Call bpf_mtap() on output, to catch outgoing packets for e.g. tcpdump . 2002-07-30 21:47:14 +00:00
ic Oops, forgot to commit one file in the fd driver mega update. Here it 2001-12-16 07:52:13 +00:00
ichsmb Add PCI ID for ICH4 SMBus controller. 2002-08-12 16:22:12 +00:00
ida Here follows the new kernel dumping infrastructure. 2002-03-31 22:37:00 +00:00
ie
iicbus Major rework of the iicbus/smbus framework: 2002-03-23 15:49:15 +00:00
iir Don't include <stddef.h> "For offsetof". This is not even wrong in 2002-05-13 14:11:33 +00:00
isp Define ISP_DMA_ADDR_T to be a bus_addr_t, not a u_int32_t. 2002-08-22 16:14:19 +00:00
ispfw Add SBus firmware (compiled in only for sparc systems). 2002-07-11 01:55:15 +00:00
joy Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
kbd Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
lge Cleanup after my de-__P (remove leading whitespace before prototype args). 2002-07-06 16:34:32 +00:00
lmc Remove #include <pci.h> - there is no abuse of NPCI here 2002-07-21 05:16:14 +00:00
lnc Remove __P. 2002-03-20 02:08:01 +00:00
mc146818
mca
mcd Retire the bogus ioctl DIOCGPART in toto. 2002-04-02 11:52:13 +00:00
md Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
mii Revert change to detect multiply PHYs in mii code. There might be cases 2002-08-16 23:19:16 +00:00
mk48txx Add a driver back end for the Mostek MK48T02, MK48T08 and MK48T59 2002-04-04 23:44:42 +00:00
mlx Fixed printf format errors in previous commit. %llu is no more suitable 2002-03-18 23:38:16 +00:00
mly Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
mpt Sigh. Ken Merry convinced me that my attempts to DTRT were wrong. 2002-08-30 03:36:50 +00:00
mse Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-23 16:01:49 +00:00
musycc Fix warnings: 2001-06-15 00:19:43 +00:00
my Add missing unlock 2002-05-30 23:41:51 +00:00
ncv Quick, low impact band-aide to unbreak the build. Added && 0 so we 2002-05-31 23:39:04 +00:00
nge Add support for SX cards using TBI such as Netgear GA621. 2002-08-08 18:33:28 +00:00
nmdm Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
nsp Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
null Modernise the cdevsw WRT to (unused) kqueue. 2002-08-02 11:24:43 +00:00
ofw Basic OpenFirmware disk driver. It will attach to anything in OpenFirmware 2002-04-15 10:54:22 +00:00
pccard pccbb -> cbb 2002-08-15 08:02:23 +00:00
pccbb Fix typos: s/O2Mirco/O2Micro/ 2002-08-24 07:46:08 +00:00
pcf Fix bktr and pcf compilation with LINT 2002-03-25 21:22:35 +00:00
pci Add a new command: show pciregs, equivalent to pciconf -l 2002-08-28 10:02:59 +00:00
pcic Make oldcard and newcard kernel module work. 2002-05-30 17:38:00 +00:00
pdq Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
ppbus Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
ppc Restore the original copyright 2002-03-23 15:36:13 +00:00
pst Fix args for contigmalloc, cosmetics. 2002-08-18 12:20:33 +00:00
puc Add an entry for Avlab's low profile 4 serial port card. 2002-08-22 10:40:00 +00:00
random Upgrade the random device to use a "real" hash instead of building 2002-07-15 13:58:35 +00:00
ray Fix warnings. 2002-06-01 18:50:35 +00:00
rc Off-by-128 error in the cuam* device node numbers. 2002-05-20 05:12:56 +00:00
rp Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
sab Ported to FreeBSD. 2002-08-04 18:41:27 +00:00
sbni printf() formats fixes 2002-08-06 17:00:02 +00:00
scd Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
sf style: 2002-08-23 23:49:02 +00:00
si Do not try and probe random PNP devices, This Is Bad. 2002-07-27 08:46:28 +00:00
sio Only try to flush the FIFO of 500 characters, return EIO if that fails. 2002-08-28 22:25:41 +00:00
sk style: 2002-08-23 23:49:02 +00:00
smbus Major rework of the iicbus/smbus framework: 2002-03-23 15:49:15 +00:00
sn Don't bogusly depend on pcic. pccard should be enough. 2002-08-08 15:52:55 +00:00
snc Remove __P. 2002-03-20 02:08:01 +00:00
snp Treat input on the snp device as an `unsigned char'. According to the 2002-04-10 03:51:49 +00:00
sound Whitespace-only: don't mix tabs and spaces for doing identation. 2002-08-30 14:21:01 +00:00
speaker Remove __P. 2002-03-20 07:51:46 +00:00
sr Don't abuse __FreeBSD__ as version number. Since it was >= 3, remove 2002-07-21 04:25:30 +00:00
stg Quick, low impact band-aide to unbreak the build. Added && 0 so we 2002-05-31 23:39:04 +00:00
streams Remove __P. 2002-03-20 02:08:01 +00:00
sym Move the new byte order function prototypes from <sys/param.h> to 2002-04-26 22:48:23 +00:00
syscons Replace various spelling with FALLTHROUGH which is lint()able 2002-08-25 13:23:09 +00:00
tdfx In continuation of early fileop credential changes, modify fo_ioctl() to 2002-08-17 02:36:16 +00:00
tga Add the TGA video driver. This is a great accomplishtment and will help 2001-11-01 08:26:30 +00:00
ti style: put return types on a line by themselves. 2002-08-24 00:02:03 +00:00
twe Replace (ab)uses of "NULL" where "0" is really meant. 2002-08-22 21:24:01 +00:00
tx Stop trying to align malloc()ed memory. Rely on malloc() instead, just like 2002-08-19 20:36:08 +00:00
txp Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
usb Add a device description for Intel 82801CA/CAM (ICH3) USB controller 2002-08-28 20:24:49 +00:00
vinum Don't use "NULL" when "0" is really meant. 2002-08-21 23:39:52 +00:00
vr style: put return types on a line by themselves. 2002-08-24 00:02:03 +00:00
vx Increase size of ifnet.if_flags from 16 bits (short) to 32 bits (int). To avoid 2002-08-18 07:05:00 +00:00
wds
wi When setting the WI_RID_ENCRYPTION mode, we have to conditionally 2002-08-21 05:57:37 +00:00
wl Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
xe Three minor changes: 2002-07-22 21:24:12 +00:00