Home | History | Annotate | only in /src/sys/dev/microcode/aic7xxx
History log of /src/sys/dev/microcode/aic7xxx
RevisionDateAuthorComments
 1.9 29-Jun-2020  rin No longer depend on libl.
 1.8 27-Jun-2020  jdolecek make this work with objdir, drop unused -ll
 1.7 19-Apr-2003  fvdl Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.6 11-Apr-2001  jdolecek Only install headers which are actually used by our userland. This
saves about 2.2MB under /usr/include/dev/. Discussed on tech-kern@
recently.

I HOPE to get the list right. The headers I left in are ones
used for MI tools and those whose usage I discovered by grep over tree sources.
Feel free to put needed includes back in if you encounter anything which
should not be removed from lists.
 1.5 15-Mar-2000  fvdl branches: 1.5.6;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.4 16-Jun-1998  cgd branches: 1.4.14;
Point people to the correct Makefiles to build generated headers.
(Suggested by Manuel Bouyer.)
 1.3 12-Jun-1998  cgd Rework the way kernel include files are installed. In the new method,
as with user-land programs, include files are installed by each directory
in the tree that has includes to install. (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change. Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
 1.2 05-Jan-1998  perry RCSID Police.
 1.1 10-Aug-1996  mycroft branches: 1.1.6;
Compile the sequencer statically.
 1.1.6.2 04-Mar-1997  mycroft Pull up latest ahc driver. Fixes several bugs.
 1.1.6.1 10-Aug-1996  mycroft file Makefile was added on branch netbsd-1-2 on 1997-03-04 14:55:22 +0000
 1.4.14.2 21-Apr-2001  bouyer Sync with HEAD
 1.4.14.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.5.6.1 28-Feb-2002  nathanw Catch up to -current.
 1.8 10-Aug-1996  mycroft Compile the sequencer statically.
 1.7 10-Aug-1996  mycroft Use HOSTED_C_C when building the assembler.
 1.6 13-Jul-1996  explorer aic, not aix... Stupid typo
 1.5 13-Jul-1996  explorer Remove aic7xxx_seq.h on clean, build it on depend. This closes pr 2608,
2441, and part of 2600. 2436 is left open to remind me that Chris's
comments are probably correct. This file should be built statically and
committed to the tree, not built on a per-kernel basis.
 1.4 20-May-1996  thorpej branches: 1.4.4;
RCS Id police.
 1.3 16-May-1996  mycroft New version, with changes from Justin Gibbs and Noriyuki Soda.
 1.2 29-Apr-1996  christos Add a clean target to clean the assembler binary
 1.1 09-Oct-1995  mycroft Add an Adaptec 2940 driver, by John Aycock and Justin Gibbs, ported to NetBSD by Stefan
Grefen, with several bug fixes by me.
 1.4.4.2 04-Mar-1997  mycroft Pull up latest ahc driver. Fixes several bugs.
 1.4.4.1 25-Aug-1996  thorpej Fix support for the Adaptec 284x VLbus SCSI cards, massaged for the
NetBSD-1.2 release branch by Noriyuki Soda <soda@sra.co.jp>.
(`sys/arch/i386/isa/ahc_isa.c' tagged separately.)
 1.4 19-Apr-2003  fvdl Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.3 12-Dec-2001  tv MKfoo=no -> NOfoo
 1.2 15-Mar-2000  fvdl branches: 1.2.6; 1.2.8;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1 12-Jun-1998  cgd branches: 1.1.14;
Rework the way kernel include files are installed. In the new method,
as with user-land programs, include files are installed by each directory
in the tree that has includes to install. (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change. Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
 1.1.14.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.2.8.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.2.6.1 08-Jan-2002  nathanw Catch up to -current.
 1.18 06-Sep-2025  andvar s/Tranceiver/Transceiver/ in comment.
 1.17 09-Feb-2024  andvar fix spelling mistakes, mainly in comments and log messages.
 1.16 31-May-2022  andvar fix various typos in comments, documentation and messages.
 1.15 25-Jan-2022  andvar fix various typos in comments.
 1.14 28-May-2019  msaitoh s/recieve/receive/
 1.13 08-Feb-2018  dholland branches: 1.13.4;
Typos.
 1.12 25-Feb-2006  wiz Fix typos, reported by Alexey Dobriyan ("Gathered from Linux"),
forwarded by jmc@openbsd.
 1.11 11-Dec-2005  christos branches: 1.11.2; 1.11.4; 1.11.6;
merge ktrace-lwp.
 1.10 27-Feb-2005  perry branches: 1.10.4;
nuke trailing whitespace
 1.9 24-Feb-2004  wiz branches: 1.9.8; 1.9.10;
Spell interrupt with two rs. From Peter Postma.
 1.8 29-Aug-2003  thorpej Sync perforce IDs. (From FreeBSD)
 1.7 29-Aug-2003  thorpej Apply the following change from 05/30/2003 02:14:22 made by scottl to the
FreeBSD ahd driver:

Fix a reported case of severe data corruption:

aic79xx.h:
aic79xx.reg:
Return the SCB_TAG field to 16byte alignment.
It seems that on some PCI systems, SCBs are not
transferred correctly to the controller with
the previous placement of the SCB_TAG field.

Approved by: re (rwatson)
 1.6 29-Aug-2003  thorpej Add some missing definitions for the LUNLEN register.
 1.5 29-Aug-2003  thorpej Apply the following change made on 5/26/2003 21:26:51 by gibbs to the
FreeBSD ahd driver:

Correct/Simplify ignore wide residue message handling

aic79xx.c:
In ahd_handle_ign_wide_residue():
o Use SCB_XFERLEN_ODD SCB field to determine transfer
"oddness" rather than the DATA_COUNT_ODD logic.
SCB_XFERLEN_ODD is toggled on every ignore wide
residue message so that multiple ignore wide residue
messages for the same transaction are properly supported.
o If the sg list has been exausted, the sequencer
doesn't bother to update the residual data count
since it is known to be zero. Perform the zeroing
manually before calculating the remaining data count.
o Use multibyte in/out macros instead of shifting/masking
by hand.

aic79xx_inline.h:
In ahd_setup_scb_common(), setup the SCB_XFERLEN_ODD field.

aic79xx.reg:
Use the SCB_TASK_ATTRIBUTE field as a bit field in the
non-packetized case. We currently only define one bit,
SCB_XFERLEN_ODD.

Remove the ODD_SEG bit field that was used to carry the odd
transfer length information through the SG cache. This
is obviated by SCB_XFERLEN_ODD field.

Remove the DATA_COUNT_ODD scratch ram byte that was used
dynamicaly compute data transfer oddness. This is obviated
by SCB_XFERLEN_ODD field.

aic79xx.seq:
Remove all updates to the DATA_COUNT_ODD scratch ram field.
Remove all uses of ODD_SEG. These two save quite a few
sequencer instructions.

Use SCB_XFERLEN_ODD to validate the end of transfer
ignore wide residue message case.
 1.4 29-Aug-2003  thorpej Apply the following change checked in 2003/05/04 00:20:07 by gibbs
to the FreeBSD ahd driver:

Correct spelling errors.

Switch to handling bad SCSI status as a sequencer interrupt
instead of having the kernel proccess these failures via
the completion queue. This is done because:

o The old scheme required us to pause the sequencer and clear
critical sections for each SCB. It seems that these pause
actions, if coincident with a sequencer FIFO interrupt, would
result in a FIFO interrupt getting lost or directing to the
wrong FIFO. This caused hangs when the driver was stressed
under high "queue full" loads.
o The completion code assumed that it was always called with
the sequencer running. This may not be the case in timeout
processing where completions occur manually via
ahd_pause_and_flushwork().
o With this scheme, the extra expense of clearing critical
sections is avoided since the sequencer will only self pause
once all pending selections have cleared and it is not in
a critical section.

aic79xx.c
Add code to handle the new BAD_SCB_STATUS sequencer
interrupt code. This just redirects the SCB through
the already existing ahd_complete_scb() code path.
Remove code in ahd_handle_scsi_status() that paused
the sequencer, made sure that no selections where
pending, and cleared critical sections. Bad
status SCBs are now only processed when all of these
conditions are true.

aic79xx.reg:
Add the BAD_SCB_STATUS sequencer interrupt code.

aic79xx.seq:
When completing an SCB upload to the host, if
we are doing this because the SCB contains non-zero
SCSI status, defer completing the SCB until there
are no pending selection events. When completing
these SCBs, use the new BAD_SCB_STATUS sequencer
interrupt. For all other uploaded SCBs (currently
only for underruns), the SCB is completed via the
normal done queue. Additionally, keep the SCB that
is currently being uploaded on the COMPLETE_DMA_SCB
list until the dma is completed, not just until the
DMA is started. This ensures that the DMA is restarted
properly should the host disable the DMA transfer for
some reason.

In our RevA workaround for Maxtor drives, guard against
the host pausing us while trying to pause I/O until the
first data-valid REQ by clearing the current snapshot
so that we can tell if the transfer has completed prior
to us noticing the REQINIT status.

In cfg4data_intr, shave off an instruction before getting
the data path running by adding an entrypoint to the
overrun handler to also increment the FIFO use count.

In the overrun handler, be sure to clear our LONGJMP
address in both exit paths.

Perform a few sequencer optimizations.

aic79xx.c:
Print the full path from the SCB when a packetized
status overrun occurs.

Remove references to LONGJMP_SCB which is being
removed from firmware usage.

Print the new SCB_FIFO_USE_COUNT field in the
per-SCB section of ahd_dump_card_state(). The
SCB_TAG field is now re-used by the sequencer,
so it no longer makes sense to reference this
field in the kernel driver.

aic79xx.h:
Re-arrange fields in the hardware SCB from largest
size type to smallest. This makes it easier to
move fields without changing field alignment.

The hardware scb tag field is now down near the
"spare" portion of the SCB to facilitate reuse
by the sequencer.

aic79xx.reg:
Remove LONGJMP_ADDR.

Rearrange SCB fields to match aic79xx.h.
Add SCB_FIFO_USE_COUNT as the first byte
of the SCB_TAG field.

aic79xx.seq:
Add a per-SCB "Fifos in use count" field and use
it to determine when it is safe (all data posted)
to deliver status back to the host. The old method
involved polling one or both FIFOs to verify that
the current task did not have pending data. This
makes running down the GSFIFO very cheap, so we
will empty the GSFIFO in one idle loop pass in
all cases.

Use this simplification of the completion process
to prune down the data FIFO teardown sequencer for
packetized transfers. Much more code is now shared
between the data residual and transfer complete cases.

Correct some issues in the packetized status handler.
It used to be possible to CLRCHN our FIFO before status
had fully transferred to the host. We also failed to
handle NONPACKREQ phases that could occur should a CRC
error occur during transmission of the status data packet.

Correct a few big endian issues:

aic79xx.c:
aic79xx_inline.h:
aic79xx_pci.c:
aic79xx_osm.c:
o Always get the SCB's tag via the SCB_GET_TAG acccessor
o Add missing use of byte swapping macros when touching
hscb fields.
o Don't double swap SEEPROM data when it is printed.
Correct a big-endian bug. We cannot assign a
o When assigning a 32bit LE variable to a 64bit LE
variable, we must be explict about how the words
of the 64bit LE variable are initialized. Cast to
(uint32_t*) to do this.

aic79xx.c:
In ahd_clear_critical_section(), hit CRLSCSIINT
after restoring the interrupt masks to avoid what
appears to be a glitch on SCSIINT. Any real SCSIINT
status will be persistent and will immidiately
reset SCSIINT. This clear should only get rid of
spurious SCSIINTs.

This glitch was the cause of the "Unexpected PKT busfree"
status that occurred under high queue full loads

Call ahd_fini_scbdata() after shutdown so that
any ahd_chip_init() routine that might access
SCB data will not access free'd memory.

Reset the bus on an IOERR since the chip doesn't
seem to reset to the new voltage level without
this.
Change offset calculation for scatter gather maps
so that the calculation is correct if an integral
multiple of sg lists does not fit in the allocation
size.

Adjust bus dma tag for data buffers based on 39BIT
addressing flag in our softc.

Use the QFREEZE count to simplify ahd_pause_and_flushworkd().
We can thus rely on the sequencer eventually clearing ENSELO.

In ahd_abort_scbs(), fix a bug that could potentially
corrupt sequencer state. The saved SCB was being
restored in the SCSI mode instead of the saved mode.
It turns out that the SCB did not need to be saved at all
as the scbptr is already restored by all subroutines
called during this function that modify that register.

aic79xx.c:
aic79xx.h:
aic79xx_pci.c:
Add support for parsing the seeprom vital product
data. The VPD data are currently unused.

aic79xx.h:
aic79xx.seq:
aic79xx_pci.c:
Add a firmware workaround to make the LED blink
brighter during packetized operations on the H2A.

aic79xx_inline.h:
The host does not use timer interrupts, so don't
gate our decision on whether or not to unpause
the sequencer on whether or not a timer interrupt
is pending.
 1.3 14-May-2003  wiz branches: 1.3.2;
Correct spelling of coalesce. (Will forward to Justin Gibbs.)
 1.2 20-Apr-2003  fvdl Sync with FreeBSD rev. 1.10: correct default precompensation value for RevA
hardware.
 1.1 19-Apr-2003  fvdl Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.3.2.4 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.3.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.3.2.1 03-Aug-2004  skrll Sync with HEAD
 1.9.10.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.9.8.1 29-Apr-2005  kent sync with -current
 1.10.4.1 21-Jun-2006  yamt sync with head.
 1.11.6.1 22-Apr-2006  simonb Sync with head.
 1.11.4.1 09-Sep-2006  rpaulo sync with head
 1.11.2.1 01-Mar-2006  yamt sync with head.
 1.13.4.1 10-Jun-2019  christos Sync with HEAD
 1.17 27-Jun-2022  andvar fix various typos in comments.
 1.16 25-Jan-2022  andvar fix various typos in comments.
 1.15 19-Sep-2021  andvar fix various typos in comments, messages and documentation.
 1.14 16-Sep-2021  andvar fix typos in word "successfully", mainly s/succesfully/successfully/.
 1.13 03-Sep-2021  andvar s/existant/existent/ in comments and messages, plus few more similar fixes.
 1.12 04-Jun-2019  msaitoh Fix typo (s/recevie/receive/).
 1.11 18-Oct-2014  snj branches: 1.11.20;
src is too big these days to tolerate superfluous apostrophes. It's
"its", people!
 1.10 11-Dec-2005  christos branches: 1.10.120;
merge ktrace-lwp.
 1.9 27-Feb-2005  perry nuke trailing whitespace
 1.8 29-Aug-2003  thorpej branches: 1.8.8; 1.8.10;
Apply the following change from 06/28/2003 04:44:10 by gibbs to the
FreeBSD ahd driver:

Use clr instead of an explicit mov from ALLZEROS
to clear SCB_FIFO_USE_COUNT. This is just a
syntactic change.
 1.7 29-Aug-2003  thorpej Apply the following change from 06/28/2003 04:40:46 made by gibbs to the
FreeBSD ahd driver:

aic79xx.seq:
Remove an old comment that no longer applies.

Fix a jump in our unexpected non-packetized phase
handler to use an explicit lable. The old code
had a hardcoded jump offset that was off by one
instruction.
 1.6 29-Aug-2003  thorpej Apply the following change made on 5/26/2003 21:26:51 by gibbs to the
FreeBSD ahd driver:

Correct/Simplify ignore wide residue message handling

aic79xx.c:
In ahd_handle_ign_wide_residue():
o Use SCB_XFERLEN_ODD SCB field to determine transfer
"oddness" rather than the DATA_COUNT_ODD logic.
SCB_XFERLEN_ODD is toggled on every ignore wide
residue message so that multiple ignore wide residue
messages for the same transaction are properly supported.
o If the sg list has been exausted, the sequencer
doesn't bother to update the residual data count
since it is known to be zero. Perform the zeroing
manually before calculating the remaining data count.
o Use multibyte in/out macros instead of shifting/masking
by hand.

aic79xx_inline.h:
In ahd_setup_scb_common(), setup the SCB_XFERLEN_ODD field.

aic79xx.reg:
Use the SCB_TASK_ATTRIBUTE field as a bit field in the
non-packetized case. We currently only define one bit,
SCB_XFERLEN_ODD.

Remove the ODD_SEG bit field that was used to carry the odd
transfer length information through the SG cache. This
is obviated by SCB_XFERLEN_ODD field.

Remove the DATA_COUNT_ODD scratch ram byte that was used
dynamicaly compute data transfer oddness. This is obviated
by SCB_XFERLEN_ODD field.

aic79xx.seq:
Remove all updates to the DATA_COUNT_ODD scratch ram field.
Remove all uses of ODD_SEG. These two save quite a few
sequencer instructions.

Use SCB_XFERLEN_ODD to validate the end of transfer
ignore wide residue message case.
 1.5 29-Aug-2003  thorpej Apply the following change made 5/26/2003 21:18:48 by gibbs to the
FreeBSD ahd driver:

Change hadling of the Rev. A packetized lun output bug
to be more efficient by having the sequencer copy the
single byte of valid lun data into the long lun field.

aic79xx.c:
Memset our hardware SCB to 0 so that untouched
fields don't confuse diagnostic output. With the
old method for handling the Rev A bug, if the long
lun field was not 0, this could result in bogus
lun information being sent to drives.

Use the same SCB transfer size for all chip types
now that the long lun is not DMA'ed to the chip.

aic79xx.seq:
Add code to copy lun information for Rev.A hardware.

aic79xx_inline.h:
Remove host update of the long_lun field on every
packetized command.
 1.4 29-Aug-2003  thorpej Apply the following change checked in 2003/05/04 00:20:07 by gibbs
to the FreeBSD ahd driver:

Correct spelling errors.

Switch to handling bad SCSI status as a sequencer interrupt
instead of having the kernel proccess these failures via
the completion queue. This is done because:

o The old scheme required us to pause the sequencer and clear
critical sections for each SCB. It seems that these pause
actions, if coincident with a sequencer FIFO interrupt, would
result in a FIFO interrupt getting lost or directing to the
wrong FIFO. This caused hangs when the driver was stressed
under high "queue full" loads.
o The completion code assumed that it was always called with
the sequencer running. This may not be the case in timeout
processing where completions occur manually via
ahd_pause_and_flushwork().
o With this scheme, the extra expense of clearing critical
sections is avoided since the sequencer will only self pause
once all pending selections have cleared and it is not in
a critical section.

aic79xx.c
Add code to handle the new BAD_SCB_STATUS sequencer
interrupt code. This just redirects the SCB through
the already existing ahd_complete_scb() code path.
Remove code in ahd_handle_scsi_status() that paused
the sequencer, made sure that no selections where
pending, and cleared critical sections. Bad
status SCBs are now only processed when all of these
conditions are true.

aic79xx.reg:
Add the BAD_SCB_STATUS sequencer interrupt code.

aic79xx.seq:
When completing an SCB upload to the host, if
we are doing this because the SCB contains non-zero
SCSI status, defer completing the SCB until there
are no pending selection events. When completing
these SCBs, use the new BAD_SCB_STATUS sequencer
interrupt. For all other uploaded SCBs (currently
only for underruns), the SCB is completed via the
normal done queue. Additionally, keep the SCB that
is currently being uploaded on the COMPLETE_DMA_SCB
list until the dma is completed, not just until the
DMA is started. This ensures that the DMA is restarted
properly should the host disable the DMA transfer for
some reason.

In our RevA workaround for Maxtor drives, guard against
the host pausing us while trying to pause I/O until the
first data-valid REQ by clearing the current snapshot
so that we can tell if the transfer has completed prior
to us noticing the REQINIT status.

In cfg4data_intr, shave off an instruction before getting
the data path running by adding an entrypoint to the
overrun handler to also increment the FIFO use count.

In the overrun handler, be sure to clear our LONGJMP
address in both exit paths.

Perform a few sequencer optimizations.

aic79xx.c:
Print the full path from the SCB when a packetized
status overrun occurs.

Remove references to LONGJMP_SCB which is being
removed from firmware usage.

Print the new SCB_FIFO_USE_COUNT field in the
per-SCB section of ahd_dump_card_state(). The
SCB_TAG field is now re-used by the sequencer,
so it no longer makes sense to reference this
field in the kernel driver.

aic79xx.h:
Re-arrange fields in the hardware SCB from largest
size type to smallest. This makes it easier to
move fields without changing field alignment.

The hardware scb tag field is now down near the
"spare" portion of the SCB to facilitate reuse
by the sequencer.

aic79xx.reg:
Remove LONGJMP_ADDR.

Rearrange SCB fields to match aic79xx.h.
Add SCB_FIFO_USE_COUNT as the first byte
of the SCB_TAG field.

aic79xx.seq:
Add a per-SCB "Fifos in use count" field and use
it to determine when it is safe (all data posted)
to deliver status back to the host. The old method
involved polling one or both FIFOs to verify that
the current task did not have pending data. This
makes running down the GSFIFO very cheap, so we
will empty the GSFIFO in one idle loop pass in
all cases.

Use this simplification of the completion process
to prune down the data FIFO teardown sequencer for
packetized transfers. Much more code is now shared
between the data residual and transfer complete cases.

Correct some issues in the packetized status handler.
It used to be possible to CLRCHN our FIFO before status
had fully transferred to the host. We also failed to
handle NONPACKREQ phases that could occur should a CRC
error occur during transmission of the status data packet.

Correct a few big endian issues:

aic79xx.c:
aic79xx_inline.h:
aic79xx_pci.c:
aic79xx_osm.c:
o Always get the SCB's tag via the SCB_GET_TAG acccessor
o Add missing use of byte swapping macros when touching
hscb fields.
o Don't double swap SEEPROM data when it is printed.
Correct a big-endian bug. We cannot assign a
o When assigning a 32bit LE variable to a 64bit LE
variable, we must be explict about how the words
of the 64bit LE variable are initialized. Cast to
(uint32_t*) to do this.

aic79xx.c:
In ahd_clear_critical_section(), hit CRLSCSIINT
after restoring the interrupt masks to avoid what
appears to be a glitch on SCSIINT. Any real SCSIINT
status will be persistent and will immidiately
reset SCSIINT. This clear should only get rid of
spurious SCSIINTs.

This glitch was the cause of the "Unexpected PKT busfree"
status that occurred under high queue full loads

Call ahd_fini_scbdata() after shutdown so that
any ahd_chip_init() routine that might access
SCB data will not access free'd memory.

Reset the bus on an IOERR since the chip doesn't
seem to reset to the new voltage level without
this.
Change offset calculation for scatter gather maps
so that the calculation is correct if an integral
multiple of sg lists does not fit in the allocation
size.

Adjust bus dma tag for data buffers based on 39BIT
addressing flag in our softc.

Use the QFREEZE count to simplify ahd_pause_and_flushworkd().
We can thus rely on the sequencer eventually clearing ENSELO.

In ahd_abort_scbs(), fix a bug that could potentially
corrupt sequencer state. The saved SCB was being
restored in the SCSI mode instead of the saved mode.
It turns out that the SCB did not need to be saved at all
as the scbptr is already restored by all subroutines
called during this function that modify that register.

aic79xx.c:
aic79xx.h:
aic79xx_pci.c:
Add support for parsing the seeprom vital product
data. The VPD data are currently unused.

aic79xx.h:
aic79xx.seq:
aic79xx_pci.c:
Add a firmware workaround to make the LED blink
brighter during packetized operations on the H2A.

aic79xx_inline.h:
The host does not use timer interrupts, so don't
gate our decision on whether or not to unpause
the sequencer on whether or not a timer interrupt
is pending.
 1.3 14-May-2003  wiz branches: 1.3.2;
Correct spelling of coalesce. (Will forward to Justin Gibbs.)
 1.2 03-May-2003  wiz DMA, not dma nor Dma.
 1.1 19-Apr-2003  fvdl Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.3.2.4 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.3.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.3.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8.10.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.8.8.1 29-Apr-2005  kent sync with -current
 1.10.120.1 03-Dec-2017  jdolecek update from HEAD
 1.11.20.1 10-Jun-2019  christos Sync with HEAD
 1.12 27-Jun-2020  jdolecek regen - NFCI, confirmed by comparing compiled binary object before and
after
 1.11 29-Aug-2003  thorpej Apply the following change from 06/28/2003 04:44:10 by gibbs to the
FreeBSD ahd driver:

Use clr instead of an explicit mov from ALLZEROS
to clear SCB_FIFO_USE_COUNT. This is just a
syntactic change.
 1.10 29-Aug-2003  thorpej Apply the following change from 06/28/2003 04:40:46 made by gibbs to the
FreeBSD ahd driver:

aic79xx.seq:
Remove an old comment that no longer applies.

Fix a jump in our unexpected non-packetized phase
handler to use an explicit lable. The old code
had a hardcoded jump offset that was off by one
instruction.
 1.9 29-Aug-2003  thorpej Sync perforce IDs. (From FreeBSD)
 1.8 29-Aug-2003  thorpej Apply the following change from 05/30/2003 02:14:22 made by scottl to the
FreeBSD ahd driver:

Fix a reported case of severe data corruption:

aic79xx.h:
aic79xx.reg:
Return the SCB_TAG field to 16byte alignment.
It seems that on some PCI systems, SCBs are not
transferred correctly to the controller with
the previous placement of the SCB_TAG field.

Approved by: re (rwatson)
 1.7 29-Aug-2003  thorpej Add some missing definitions for the LUNLEN register.
 1.6 29-Aug-2003  thorpej Apply the following change made on 5/26/2003 21:26:51 by gibbs to the
FreeBSD ahd driver:

Correct/Simplify ignore wide residue message handling

aic79xx.c:
In ahd_handle_ign_wide_residue():
o Use SCB_XFERLEN_ODD SCB field to determine transfer
"oddness" rather than the DATA_COUNT_ODD logic.
SCB_XFERLEN_ODD is toggled on every ignore wide
residue message so that multiple ignore wide residue
messages for the same transaction are properly supported.
o If the sg list has been exausted, the sequencer
doesn't bother to update the residual data count
since it is known to be zero. Perform the zeroing
manually before calculating the remaining data count.
o Use multibyte in/out macros instead of shifting/masking
by hand.

aic79xx_inline.h:
In ahd_setup_scb_common(), setup the SCB_XFERLEN_ODD field.

aic79xx.reg:
Use the SCB_TASK_ATTRIBUTE field as a bit field in the
non-packetized case. We currently only define one bit,
SCB_XFERLEN_ODD.

Remove the ODD_SEG bit field that was used to carry the odd
transfer length information through the SG cache. This
is obviated by SCB_XFERLEN_ODD field.

Remove the DATA_COUNT_ODD scratch ram byte that was used
dynamicaly compute data transfer oddness. This is obviated
by SCB_XFERLEN_ODD field.

aic79xx.seq:
Remove all updates to the DATA_COUNT_ODD scratch ram field.
Remove all uses of ODD_SEG. These two save quite a few
sequencer instructions.

Use SCB_XFERLEN_ODD to validate the end of transfer
ignore wide residue message case.
 1.5 29-Aug-2003  thorpej Apply the following change made 5/26/2003 21:18:48 by gibbs to the
FreeBSD ahd driver:

Change hadling of the Rev. A packetized lun output bug
to be more efficient by having the sequencer copy the
single byte of valid lun data into the long lun field.

aic79xx.c:
Memset our hardware SCB to 0 so that untouched
fields don't confuse diagnostic output. With the
old method for handling the Rev A bug, if the long
lun field was not 0, this could result in bogus
lun information being sent to drives.

Use the same SCB transfer size for all chip types
now that the long lun is not DMA'ed to the chip.

aic79xx.seq:
Add code to copy lun information for Rev.A hardware.

aic79xx_inline.h:
Remove host update of the long_lun field on every
packetized command.
 1.4 29-Aug-2003  thorpej Apply the following change checked in 2003/05/04 00:20:07 by gibbs
to the FreeBSD ahd driver:

Correct spelling errors.

Switch to handling bad SCSI status as a sequencer interrupt
instead of having the kernel proccess these failures via
the completion queue. This is done because:

o The old scheme required us to pause the sequencer and clear
critical sections for each SCB. It seems that these pause
actions, if coincident with a sequencer FIFO interrupt, would
result in a FIFO interrupt getting lost or directing to the
wrong FIFO. This caused hangs when the driver was stressed
under high "queue full" loads.
o The completion code assumed that it was always called with
the sequencer running. This may not be the case in timeout
processing where completions occur manually via
ahd_pause_and_flushwork().
o With this scheme, the extra expense of clearing critical
sections is avoided since the sequencer will only self pause
once all pending selections have cleared and it is not in
a critical section.

aic79xx.c
Add code to handle the new BAD_SCB_STATUS sequencer
interrupt code. This just redirects the SCB through
the already existing ahd_complete_scb() code path.
Remove code in ahd_handle_scsi_status() that paused
the sequencer, made sure that no selections where
pending, and cleared critical sections. Bad
status SCBs are now only processed when all of these
conditions are true.

aic79xx.reg:
Add the BAD_SCB_STATUS sequencer interrupt code.

aic79xx.seq:
When completing an SCB upload to the host, if
we are doing this because the SCB contains non-zero
SCSI status, defer completing the SCB until there
are no pending selection events. When completing
these SCBs, use the new BAD_SCB_STATUS sequencer
interrupt. For all other uploaded SCBs (currently
only for underruns), the SCB is completed via the
normal done queue. Additionally, keep the SCB that
is currently being uploaded on the COMPLETE_DMA_SCB
list until the dma is completed, not just until the
DMA is started. This ensures that the DMA is restarted
properly should the host disable the DMA transfer for
some reason.

In our RevA workaround for Maxtor drives, guard against
the host pausing us while trying to pause I/O until the
first data-valid REQ by clearing the current snapshot
so that we can tell if the transfer has completed prior
to us noticing the REQINIT status.

In cfg4data_intr, shave off an instruction before getting
the data path running by adding an entrypoint to the
overrun handler to also increment the FIFO use count.

In the overrun handler, be sure to clear our LONGJMP
address in both exit paths.

Perform a few sequencer optimizations.

aic79xx.c:
Print the full path from the SCB when a packetized
status overrun occurs.

Remove references to LONGJMP_SCB which is being
removed from firmware usage.

Print the new SCB_FIFO_USE_COUNT field in the
per-SCB section of ahd_dump_card_state(). The
SCB_TAG field is now re-used by the sequencer,
so it no longer makes sense to reference this
field in the kernel driver.

aic79xx.h:
Re-arrange fields in the hardware SCB from largest
size type to smallest. This makes it easier to
move fields without changing field alignment.

The hardware scb tag field is now down near the
"spare" portion of the SCB to facilitate reuse
by the sequencer.

aic79xx.reg:
Remove LONGJMP_ADDR.

Rearrange SCB fields to match aic79xx.h.
Add SCB_FIFO_USE_COUNT as the first byte
of the SCB_TAG field.

aic79xx.seq:
Add a per-SCB "Fifos in use count" field and use
it to determine when it is safe (all data posted)
to deliver status back to the host. The old method
involved polling one or both FIFOs to verify that
the current task did not have pending data. This
makes running down the GSFIFO very cheap, so we
will empty the GSFIFO in one idle loop pass in
all cases.

Use this simplification of the completion process
to prune down the data FIFO teardown sequencer for
packetized transfers. Much more code is now shared
between the data residual and transfer complete cases.

Correct some issues in the packetized status handler.
It used to be possible to CLRCHN our FIFO before status
had fully transferred to the host. We also failed to
handle NONPACKREQ phases that could occur should a CRC
error occur during transmission of the status data packet.

Correct a few big endian issues:

aic79xx.c:
aic79xx_inline.h:
aic79xx_pci.c:
aic79xx_osm.c:
o Always get the SCB's tag via the SCB_GET_TAG acccessor
o Add missing use of byte swapping macros when touching
hscb fields.
o Don't double swap SEEPROM data when it is printed.
Correct a big-endian bug. We cannot assign a
o When assigning a 32bit LE variable to a 64bit LE
variable, we must be explict about how the words
of the 64bit LE variable are initialized. Cast to
(uint32_t*) to do this.

aic79xx.c:
In ahd_clear_critical_section(), hit CRLSCSIINT
after restoring the interrupt masks to avoid what
appears to be a glitch on SCSIINT. Any real SCSIINT
status will be persistent and will immidiately
reset SCSIINT. This clear should only get rid of
spurious SCSIINTs.

This glitch was the cause of the "Unexpected PKT busfree"
status that occurred under high queue full loads

Call ahd_fini_scbdata() after shutdown so that
any ahd_chip_init() routine that might access
SCB data will not access free'd memory.

Reset the bus on an IOERR since the chip doesn't
seem to reset to the new voltage level without
this.
Change offset calculation for scatter gather maps
so that the calculation is correct if an integral
multiple of sg lists does not fit in the allocation
size.

Adjust bus dma tag for data buffers based on 39BIT
addressing flag in our softc.

Use the QFREEZE count to simplify ahd_pause_and_flushworkd().
We can thus rely on the sequencer eventually clearing ENSELO.

In ahd_abort_scbs(), fix a bug that could potentially
corrupt sequencer state. The saved SCB was being
restored in the SCSI mode instead of the saved mode.
It turns out that the SCB did not need to be saved at all
as the scbptr is already restored by all subroutines
called during this function that modify that register.

aic79xx.c:
aic79xx.h:
aic79xx_pci.c:
Add support for parsing the seeprom vital product
data. The VPD data are currently unused.

aic79xx.h:
aic79xx.seq:
aic79xx_pci.c:
Add a firmware workaround to make the LED blink
brighter during packetized operations on the H2A.

aic79xx_inline.h:
The host does not use timer interrupts, so don't
gate our decision on whether or not to unpause
the sequencer on whether or not a timer interrupt
is pending.
 1.3 14-May-2003  wiz branches: 1.3.2;
Correct spelling of coalesce. (Will forward to Justin Gibbs.)
 1.2 20-Apr-2003  fvdl Regen.
 1.1 19-Apr-2003  fvdl Generated register/sequencer code include files for the ahc and ahd
drivers.
 1.3.2.1 03-Aug-2004  skrll Sync with HEAD
 1.13 25-Oct-2021  ryo regen
 1.12 27-Jun-2020  jdolecek constify, NFCI
 1.11 16-Nov-2006  christos __unused removal on arguments; approved by core.
 1.10 12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.9 29-Aug-2003  thorpej branches: 1.9.48;
Apply the following change from 06/28/2003 04:44:10 by gibbs to the
FreeBSD ahd driver:

Use clr instead of an explicit mov from ALLZEROS
to clear SCB_FIFO_USE_COUNT. This is just a
syntactic change.
 1.8 29-Aug-2003  thorpej Apply the following change from 06/28/2003 04:40:46 made by gibbs to the
FreeBSD ahd driver:

aic79xx.seq:
Remove an old comment that no longer applies.

Fix a jump in our unexpected non-packetized phase
handler to use an explicit lable. The old code
had a hardcoded jump offset that was off by one
instruction.
 1.7 29-Aug-2003  thorpej Sync perforce IDs. (From FreeBSD)
 1.6 29-Aug-2003  thorpej Apply the following change from 05/30/2003 02:14:22 made by scottl to the
FreeBSD ahd driver:

Fix a reported case of severe data corruption:

aic79xx.h:
aic79xx.reg:
Return the SCB_TAG field to 16byte alignment.
It seems that on some PCI systems, SCBs are not
transferred correctly to the controller with
the previous placement of the SCB_TAG field.

Approved by: re (rwatson)
 1.5 29-Aug-2003  thorpej Apply the following change made on 5/26/2003 21:26:51 by gibbs to the
FreeBSD ahd driver:

Correct/Simplify ignore wide residue message handling

aic79xx.c:
In ahd_handle_ign_wide_residue():
o Use SCB_XFERLEN_ODD SCB field to determine transfer
"oddness" rather than the DATA_COUNT_ODD logic.
SCB_XFERLEN_ODD is toggled on every ignore wide
residue message so that multiple ignore wide residue
messages for the same transaction are properly supported.
o If the sg list has been exausted, the sequencer
doesn't bother to update the residual data count
since it is known to be zero. Perform the zeroing
manually before calculating the remaining data count.
o Use multibyte in/out macros instead of shifting/masking
by hand.

aic79xx_inline.h:
In ahd_setup_scb_common(), setup the SCB_XFERLEN_ODD field.

aic79xx.reg:
Use the SCB_TASK_ATTRIBUTE field as a bit field in the
non-packetized case. We currently only define one bit,
SCB_XFERLEN_ODD.

Remove the ODD_SEG bit field that was used to carry the odd
transfer length information through the SG cache. This
is obviated by SCB_XFERLEN_ODD field.

Remove the DATA_COUNT_ODD scratch ram byte that was used
dynamicaly compute data transfer oddness. This is obviated
by SCB_XFERLEN_ODD field.

aic79xx.seq:
Remove all updates to the DATA_COUNT_ODD scratch ram field.
Remove all uses of ODD_SEG. These two save quite a few
sequencer instructions.

Use SCB_XFERLEN_ODD to validate the end of transfer
ignore wide residue message case.
 1.4 29-Aug-2003  thorpej Apply the following change made 5/26/2003 21:18:48 by gibbs to the
FreeBSD ahd driver:

Change hadling of the Rev. A packetized lun output bug
to be more efficient by having the sequencer copy the
single byte of valid lun data into the long lun field.

aic79xx.c:
Memset our hardware SCB to 0 so that untouched
fields don't confuse diagnostic output. With the
old method for handling the Rev A bug, if the long
lun field was not 0, this could result in bogus
lun information being sent to drives.

Use the same SCB transfer size for all chip types
now that the long lun is not DMA'ed to the chip.

aic79xx.seq:
Add code to copy lun information for Rev.A hardware.

aic79xx_inline.h:
Remove host update of the long_lun field on every
packetized command.
 1.3 29-Aug-2003  thorpej Apply the following change checked in 2003/05/04 00:20:07 by gibbs
to the FreeBSD ahd driver:

Correct spelling errors.

Switch to handling bad SCSI status as a sequencer interrupt
instead of having the kernel proccess these failures via
the completion queue. This is done because:

o The old scheme required us to pause the sequencer and clear
critical sections for each SCB. It seems that these pause
actions, if coincident with a sequencer FIFO interrupt, would
result in a FIFO interrupt getting lost or directing to the
wrong FIFO. This caused hangs when the driver was stressed
under high "queue full" loads.
o The completion code assumed that it was always called with
the sequencer running. This may not be the case in timeout
processing where completions occur manually via
ahd_pause_and_flushwork().
o With this scheme, the extra expense of clearing critical
sections is avoided since the sequencer will only self pause
once all pending selections have cleared and it is not in
a critical section.

aic79xx.c
Add code to handle the new BAD_SCB_STATUS sequencer
interrupt code. This just redirects the SCB through
the already existing ahd_complete_scb() code path.
Remove code in ahd_handle_scsi_status() that paused
the sequencer, made sure that no selections where
pending, and cleared critical sections. Bad
status SCBs are now only processed when all of these
conditions are true.

aic79xx.reg:
Add the BAD_SCB_STATUS sequencer interrupt code.

aic79xx.seq:
When completing an SCB upload to the host, if
we are doing this because the SCB contains non-zero
SCSI status, defer completing the SCB until there
are no pending selection events. When completing
these SCBs, use the new BAD_SCB_STATUS sequencer
interrupt. For all other uploaded SCBs (currently
only for underruns), the SCB is completed via the
normal done queue. Additionally, keep the SCB that
is currently being uploaded on the COMPLETE_DMA_SCB
list until the dma is completed, not just until the
DMA is started. This ensures that the DMA is restarted
properly should the host disable the DMA transfer for
some reason.

In our RevA workaround for Maxtor drives, guard against
the host pausing us while trying to pause I/O until the
first data-valid REQ by clearing the current snapshot
so that we can tell if the transfer has completed prior
to us noticing the REQINIT status.

In cfg4data_intr, shave off an instruction before getting
the data path running by adding an entrypoint to the
overrun handler to also increment the FIFO use count.

In the overrun handler, be sure to clear our LONGJMP
address in both exit paths.

Perform a few sequencer optimizations.

aic79xx.c:
Print the full path from the SCB when a packetized
status overrun occurs.

Remove references to LONGJMP_SCB which is being
removed from firmware usage.

Print the new SCB_FIFO_USE_COUNT field in the
per-SCB section of ahd_dump_card_state(). The
SCB_TAG field is now re-used by the sequencer,
so it no longer makes sense to reference this
field in the kernel driver.

aic79xx.h:
Re-arrange fields in the hardware SCB from largest
size type to smallest. This makes it easier to
move fields without changing field alignment.

The hardware scb tag field is now down near the
"spare" portion of the SCB to facilitate reuse
by the sequencer.

aic79xx.reg:
Remove LONGJMP_ADDR.

Rearrange SCB fields to match aic79xx.h.
Add SCB_FIFO_USE_COUNT as the first byte
of the SCB_TAG field.

aic79xx.seq:
Add a per-SCB "Fifos in use count" field and use
it to determine when it is safe (all data posted)
to deliver status back to the host. The old method
involved polling one or both FIFOs to verify that
the current task did not have pending data. This
makes running down the GSFIFO very cheap, so we
will empty the GSFIFO in one idle loop pass in
all cases.

Use this simplification of the completion process
to prune down the data FIFO teardown sequencer for
packetized transfers. Much more code is now shared
between the data residual and transfer complete cases.

Correct some issues in the packetized status handler.
It used to be possible to CLRCHN our FIFO before status
had fully transferred to the host. We also failed to
handle NONPACKREQ phases that could occur should a CRC
error occur during transmission of the status data packet.

Correct a few big endian issues:

aic79xx.c:
aic79xx_inline.h:
aic79xx_pci.c:
aic79xx_osm.c:
o Always get the SCB's tag via the SCB_GET_TAG acccessor
o Add missing use of byte swapping macros when touching
hscb fields.
o Don't double swap SEEPROM data when it is printed.
Correct a big-endian bug. We cannot assign a
o When assigning a 32bit LE variable to a 64bit LE
variable, we must be explict about how the words
of the 64bit LE variable are initialized. Cast to
(uint32_t*) to do this.

aic79xx.c:
In ahd_clear_critical_section(), hit CRLSCSIINT
after restoring the interrupt masks to avoid what
appears to be a glitch on SCSIINT. Any real SCSIINT
status will be persistent and will immidiately
reset SCSIINT. This clear should only get rid of
spurious SCSIINTs.

This glitch was the cause of the "Unexpected PKT busfree"
status that occurred under high queue full loads

Call ahd_fini_scbdata() after shutdown so that
any ahd_chip_init() routine that might access
SCB data will not access free'd memory.

Reset the bus on an IOERR since the chip doesn't
seem to reset to the new voltage level without
this.
Change offset calculation for scatter gather maps
so that the calculation is correct if an integral
multiple of sg lists does not fit in the allocation
size.

Adjust bus dma tag for data buffers based on 39BIT
addressing flag in our softc.

Use the QFREEZE count to simplify ahd_pause_and_flushworkd().
We can thus rely on the sequencer eventually clearing ENSELO.

In ahd_abort_scbs(), fix a bug that could potentially
corrupt sequencer state. The saved SCB was being
restored in the SCSI mode instead of the saved mode.
It turns out that the SCB did not need to be saved at all
as the scbptr is already restored by all subroutines
called during this function that modify that register.

aic79xx.c:
aic79xx.h:
aic79xx_pci.c:
Add support for parsing the seeprom vital product
data. The VPD data are currently unused.

aic79xx.h:
aic79xx.seq:
aic79xx_pci.c:
Add a firmware workaround to make the LED blink
brighter during packetized operations on the H2A.

aic79xx_inline.h:
The host does not use timer interrupts, so don't
gate our decision on whether or not to unpause
the sequencer on whether or not a timer interrupt
is pending.
 1.2 20-Apr-2003  fvdl branches: 1.2.2;
Regen.
 1.1 19-Apr-2003  fvdl Generated register/sequencer code include files for the ahc and ahd
drivers.
 1.2.2.1 03-Aug-2004  skrll Sync with HEAD
 1.9.48.2 10-Dec-2006  yamt sync with head.
 1.9.48.1 22-Oct-2006  yamt sync with head
 1.8 18-Aug-2025  andvar Fix various typos, mainly in comments:
s/invaid/invalid/
s/instad/instead/
s/wich/with/
s/tranform/transform/
s/tranmist/transmit/
s/tranceiver/transceiver/
s/Tranparent/Transparent/
s/tranlated/translated/
s/tranfer/transfer/
s/tranmissions/transmissions/
s/condtions/conditions/
s/Recient/Recent/
 1.7 02-Feb-2024  andvar fix various typos in comments.
 1.6 25-Jan-2022  andvar fix various typos in comments.
 1.5 07-Aug-2021  andvar s/configuraiton/configuration/ in comments and man pages.
 1.4 11-Dec-2005  christos merge ktrace-lwp.
 1.3 27-Feb-2005  perry nuke trailing whitespace
 1.2 19-Apr-2003  fvdl branches: 1.2.2; 1.2.10; 1.2.12;
Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.1 15-Mar-2000  fvdl branches: 1.1.6;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file aic7xxx.reg was added on branch thorpej_scsipi on 2000-11-20 11:41:33 +0000
 1.2.12.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.2.10.1 29-Apr-2005  kent sync with -current
 1.2.2.1 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.24 10-Feb-2024  andvar s/psuedo/pseudo/ in comments.
 1.23 27-Jun-2022  andvar fix various typos in comments.
 1.22 25-Jan-2022  andvar fix various typos in comments.
 1.21 03-Sep-2021  andvar s/existant/existent/ in comments and messages, plus few more similar fixes.
 1.20 04-Jun-2019  msaitoh Fix typo (s/recevie/receive/).
 1.19 18-Oct-2014  snj branches: 1.19.20;
src is too big these days to tolerate superfluous apostrophes. It's
"its", people!
 1.18 25-Nov-2006  christos branches: 1.18.98;
spell precede; from Zafer
 1.17 11-Dec-2005  christos branches: 1.17.20; 1.17.22;
merge ktrace-lwp.
 1.16 27-Feb-2005  perry branches: 1.16.4;
nuke trailing whitespace
 1.15 03-May-2003  wiz branches: 1.15.2; 1.15.10; 1.15.12;
DMA, not dma nor Dma.
 1.14 19-Apr-2003  fvdl Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.13 20-Aug-2001  wiz precede, not preceed.
 1.12 19-Jun-2001  wiz branches: 1.12.2;
`response', not `responce'
 1.11 15-Mar-2000  fvdl branches: 1.11.6;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.10 04-Jul-1998  mjacob branches: 1.10.14;
port-i386/5706: I had no problem with the previous patch, but someone
else has. Rolling it back while we try and figure it out.
 1.9 03-Jul-1998  mjacob Patches from Justin that handle some REV B AIC7880 problems
 1.8 16-Apr-1998  leo Backout endian changes here (per discussion with Justin) and move them to
aic7xxx.c
 1.7 11-Mar-1998  leo Make it possible to interface to big-endian cpu's.
 1.6 08-Oct-1996  gibbs dev/microcode/aic7xxx/aic7xxx.seq,
dev/microcode/aic7xxx_seq.h,
dev/ic/aic7xxxreg.h:
Remove intrinsic knowledge about SDTR and WDTR messages and replace it
with a generic message system that allows the kernel driver to handle
SDTR, WDTR and any other type of extended message it chooses too. This
makes the sequencer code much simpler, makes extended message handling
debuggable since the bulk of the work is in the kernel driver, and saves
lots of instruction space.

Regen microcode header file.

dev/ic/aic7xxx.c, dev/ic/aic7xxxvar.h:
Add code to handle WDTR and SDTR negotiation in light of the changes in
the message interface to the sequencer. Don't reject targets that
negotiate async by sending an SDTR with a 0 offset. Use an sdtr message
with 0,0 to negotiate async when a target suggests a period that is too
long for us to handle. Some tape and cdrom drives don't like us doing
the message reject that we did in the past.

Fix a problem with handing the QUEUE FULL condition.

Fix a race condition (most likely the cause of the SCB paging problems) that
might allow the sequencer to get unpaused before the condition that caused
it to be paused (a SEQINT) was handled.

Race condition pointed out by Doug Ledford <dledford@dialnet.net> and
by "Dan Willis" <dan@plutotech.com>.

dev/pci/ahc_pci.c:
Add support for the 2940AU, an aic7860 based controller.

dev/pci/pcidevs.h, dev/pci/pcidevs_data.h:
Add product IDs for the 2940AU, aic7860 and aic7855.

Regen data file.

scsi/scsi_message.h:
Add MSG_EXT_SDTR_LEN and MSG_EXT_WDTR_LEN - the length of bytes in these
extended messages.

Thanks to Chuck Cranor <chuck@maria.wustl.edu> for testing these changes
out for me.
 1.5 10-Aug-1996  mycroft Compile the sequencer statically.
 1.4 10-Jul-1996  explorer Updates to aic7xxx driver ; from pr port-i386/2600
 1.3 20-May-1996  thorpej branches: 1.3.4;
RCS Id police.
 1.2 16-May-1996  mycroft New version, with changes from Justin Gibbs and Noriyuki Soda.
 1.1 09-Oct-1995  mycroft Add an Adaptec 2940 driver, by John Aycock and Justin Gibbs, ported to NetBSD by Stefan
Grefen, with several bug fixes by me.
 1.3.4.2 04-Mar-1997  mycroft Pull up latest ahc driver. Fixes several bugs.
 1.3.4.1 18-Jul-1996  jtc Pulled up from rev 1.4, ahc fixes
 1.10.14.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.11.6.2 24-Aug-2001  nathanw Catch up with -current.
 1.11.6.1 21-Jun-2001  nathanw Catch up to -current.
 1.12.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.15.12.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.15.10.1 29-Apr-2005  kent sync with -current
 1.15.2.1 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.16.4.1 30-Dec-2006  yamt sync with head.
 1.17.22.1 10-Dec-2006  yamt sync with head.
 1.17.20.1 12-Jan-2007  ad Sync with head.
 1.18.98.1 03-Dec-2017  jdolecek update from HEAD
 1.19.20.1 10-Jun-2019  christos Sync with HEAD
 1.4 15-Mar-2000  fvdl New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.3 22-Mar-1999  garbled branches: 1.3.8;
More and more .Os cleanups. .Os is defined in the tmac.doc-common file,
so we shouldn't override it with versions in the manpages. Many more to
come.
 1.2 20-May-1996  thorpej RCS Id police.
 1.1 09-Oct-1995  mycroft Add an Adaptec 2940 driver, by John Aycock and Justin Gibbs, ported to NetBSD by Stefan
Grefen, with several bug fixes by me.
 1.3.8.1 20-Nov-2000  bouyer Remove files that are no longer on the trunck, and commit Makefile which
I forgot in the batch of commits.
 1.6 15-Mar-2000  fvdl New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.5 01-Nov-1997  lukem branches: 1.5.14;
getopt returns -1 not EOF
 1.4 20-May-1996  thorpej RCS Id police.
 1.3 16-May-1996  mycroft New version, with changes from Justin Gibbs and Noriyuki Soda.
 1.2 29-Apr-1996  christos Add prototypes.
 1.1 09-Oct-1995  mycroft Add an Adaptec 2940 driver, by John Aycock and Justin Gibbs, ported to NetBSD by Stefan
Grefen, with several bug fixes by me.
 1.5.14.1 20-Nov-2000  bouyer Remove files that are no longer on the trunck, and commit Makefile which
I forgot in the batch of commits.
 1.6 25-Oct-2021  ryo regen
 1.5 27-Jun-2020  jdolecek make sure to strip leading '$' from NetBSD rcs id so that it won't be
replaces by cvs, and regen the headers again
 1.4 27-Jun-2020  jdolecek regen again
 1.3 27-Jun-2020  jdolecek regen - NFCI, confirmed by comparing compiled binary object before and
after
 1.2 19-Apr-2003  fvdl Generated register/sequencer code include files for the ahc and ahd
drivers.
 1.1 15-Mar-2000  fvdl branches: 1.1.6;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file aic7xxx_reg.h was added on branch thorpej_scsipi on 2000-11-20 11:41:33 +0000
 1.15 25-Oct-2021  ryo regen
 1.14 27-Jun-2020  jdolecek constify, NFCI
 1.13 27-Jun-2020  jdolecek make sure to strip leading '$' from NetBSD rcs id so that it won't be
replaces by cvs, and regen the headers again
 1.12 27-Jun-2020  jdolecek regen - NFCI, confirmed by comparing compiled binary object before and
after
 1.11 16-Nov-2006  christos __unused removal on arguments; approved by core.
 1.10 12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.9 19-Apr-2003  fvdl branches: 1.9.48; 1.9.50;
Generated register/sequencer code include files for the ahc and ahd
drivers.
 1.8 30-Apr-2001  lukem minor lint
 1.7 22-Jan-2001  jdolecek branches: 1.7.2;
make patches[] const
 1.6 18-Jan-2001  jdolecek constify
 1.5 15-Mar-2000  fvdl New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.4 04-Jul-1998  mjacob branches: 1.4.14;
port-i386/5706: I had no problem with the previous patch, but someone
else has. Rolling it back while we try and figure it out.
 1.3 03-Jul-1998  mjacob Patches from Justin that handle some REV B AIC7880 problems
 1.2 08-Oct-1996  gibbs branches: 1.2.6;
dev/microcode/aic7xxx/aic7xxx.seq,
dev/microcode/aic7xxx_seq.h,
dev/ic/aic7xxxreg.h:
Remove intrinsic knowledge about SDTR and WDTR messages and replace it
with a generic message system that allows the kernel driver to handle
SDTR, WDTR and any other type of extended message it chooses too. This
makes the sequencer code much simpler, makes extended message handling
debuggable since the bulk of the work is in the kernel driver, and saves
lots of instruction space.

Regen microcode header file.

dev/ic/aic7xxx.c, dev/ic/aic7xxxvar.h:
Add code to handle WDTR and SDTR negotiation in light of the changes in
the message interface to the sequencer. Don't reject targets that
negotiate async by sending an SDTR with a 0 offset. Use an sdtr message
with 0,0 to negotiate async when a target suggests a period that is too
long for us to handle. Some tape and cdrom drives don't like us doing
the message reject that we did in the past.

Fix a problem with handing the QUEUE FULL condition.

Fix a race condition (most likely the cause of the SCB paging problems) that
might allow the sequencer to get unpaused before the condition that caused
it to be paused (a SEQINT) was handled.

Race condition pointed out by Doug Ledford <dledford@dialnet.net> and
by "Dan Willis" <dan@plutotech.com>.

dev/pci/ahc_pci.c:
Add support for the 2940AU, an aic7860 based controller.

dev/pci/pcidevs.h, dev/pci/pcidevs_data.h:
Add product IDs for the 2940AU, aic7860 and aic7855.

Regen data file.

scsi/scsi_message.h:
Add MSG_EXT_SDTR_LEN and MSG_EXT_WDTR_LEN - the length of bytes in these
extended messages.

Thanks to Chuck Cranor <chuck@maria.wustl.edu> for testing these changes
out for me.
 1.1 10-Aug-1996  mycroft Compile the sequencer statically.
 1.2.6.2 04-Mar-1997  mycroft Regen.
 1.2.6.1 08-Oct-1996  mycroft file aic7xxx_seq.h was added on branch netbsd-1-2 on 1997-03-04 14:55:54 +0000
 1.4.14.2 11-Feb-2001  bouyer Sync with HEAD.
 1.4.14.1 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.7.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.9.50.2 10-Dec-2006  yamt sync with head.
 1.9.50.1 22-Oct-2006  yamt sync with head
 1.9.48.1 18-Nov-2006  ad Sync with head.
 1.14 01-Sep-2023  andvar fix typos in comments, mainly s/innner/inner/.
 1.13 24-May-2022  andvar fix various typos in comment, documentation and log messages.
 1.12 25-Oct-2021  ryo For "num_critical_sections", now output not only the "static const int" variable but also macro definition.
 1.11 24-Jul-2021  andvar Fix all remaining typos, mainly in comments but also in few definitions and log messages, reported by me in PR kern/54889.
Also fixed some additional typos in comments, found on review of same files or typos.
 1.10 27-Jun-2020  jdolecek branches: 1.10.6;
constify, NFCI
 1.9 15-Aug-2016  maxv This thing is completely buggy. There is a use-after-free and NULL pointer
dereference. Just fix the uaf, and add a comment. Not tested, but obvious
enough; found by brainy.
 1.8 27-Dec-2009  jakllsch branches: 1.8.22; 1.8.40;
Free memory when done with it.
From Henning Petersen in PR/42522.
 1.7 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.6 11-Dec-2005  christos branches: 1.6.74; 1.6.84; 1.6.90;
merge ktrace-lwp.
 1.5 14-Jul-2003  lukem add missing __RCSID()
 1.4 19-Apr-2003  fvdl branches: 1.4.2;
Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.3 22-Jan-2001  jdolecek make patches[] const
 1.2 18-Jan-2001  jdolecek constify
 1.1 15-Mar-2000  fvdl branches: 1.1.6;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.6.3 11-Feb-2001  bouyer Sync with HEAD.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file aicasm.c was added on branch thorpej_scsipi on 2000-11-20 11:41:33 +0000
 1.4.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.2.1 03-Aug-2004  skrll Sync with HEAD
 1.6.90.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.84.1 28-Apr-2009  skrll Sync with HEAD.
 1.6.74.2 11-Mar-2010  yamt sync with head
 1.6.74.1 04-May-2009  yamt sync with head.
 1.8.40.1 05-Oct-2016  skrll Sync with HEAD
 1.8.22.1 03-Dec-2017  jdolecek update from HEAD
 1.10.6.1 01-Aug-2021  thorpej Sync with HEAD.
 1.4 11-Dec-2005  christos merge ktrace-lwp.
 1.3 27-Feb-2005  perry nuke trailing whitespace
 1.2 19-Apr-2003  fvdl branches: 1.2.2; 1.2.10; 1.2.12;
Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.1 15-Mar-2000  fvdl branches: 1.1.6;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file aicasm.h was added on branch thorpej_scsipi on 2000-11-20 11:41:34 +0000
 1.2.12.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.2.10.1 29-Apr-2005  kent sync with -current
 1.2.2.1 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.9 25-Oct-2021  ryo fix build failure of "multiple definition"
 1.8 19-Sep-2021  andvar fix various typos in comments, messages and documentation.
 1.7 27-Jun-2020  jdolecek make sure to strip leading '$' from NetBSD rcs id so that it won't be
replaces by cvs, and regen the headers again
 1.6 25-Nov-2006  christos spell precede; from Zafer
 1.5 11-Dec-2005  christos branches: 1.5.20; 1.5.22;
merge ktrace-lwp.
 1.4 27-Feb-2005  perry branches: 1.4.4;
nuke trailing whitespace
 1.3 19-Apr-2003  fvdl branches: 1.3.2; 1.3.10; 1.3.12;
Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.2 02-Jun-2002  lukem Use SLIST_*() instead of accessing slh_first,sle_next directly.

XXX: this program currently doesn't parse macros that cross the EOL with \
(there are a couple in sys/dev/scsipi/scsi_message.h).
with that issue temporarily worked around, this change generates the
same output as the version of aicasm without this change.
 1.1 15-Mar-2000  fvdl branches: 1.1.6; 1.1.8; 1.1.10; 1.1.22;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.22.1 20-Jun-2002  gehenna catch up with -current.
 1.1.10.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.1.8.1 20-Jun-2002  nathanw Catch up to -current.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file aicasm_gram.y was added on branch thorpej_scsipi on 2000-11-20 11:41:34 +0000
 1.3.12.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.3.10.1 29-Apr-2005  kent sync with -current
 1.3.2.1 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.4.4.1 30-Dec-2006  yamt sync with head.
 1.5.22.1 10-Dec-2006  yamt sync with head.
 1.5.20.1 12-Jan-2007  ad Sync with head.
 1.1 19-Apr-2003  fvdl Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.4 10-Feb-2024  andvar Fix various typos in comments, log messages and documentation.
 1.3 27-Jun-2020  jdolecek make this compile with normal WARNS
 1.2 25-Nov-2006  christos spell precede; from Zafer
 1.1 19-Apr-2003  fvdl branches: 1.1.18; 1.1.48; 1.1.50;
Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.1.50.1 10-Dec-2006  yamt sync with head.
 1.1.48.1 12-Jan-2007  ad Sync with head.
 1.1.18.1 30-Dec-2006  yamt sync with head.
 1.3 11-Dec-2005  christos merge ktrace-lwp.
 1.2 27-Feb-2005  perry nuke trailing whitespace
 1.1 19-Apr-2003  fvdl branches: 1.1.2; 1.1.10; 1.1.12;
Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.1.12.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.1.10.1 29-Apr-2005  kent sync with -current
 1.1.2.1 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.6 27-Jun-2020  jdolecek make this compile with normal WARNS
 1.5 11-Dec-2005  christos merge ktrace-lwp.
 1.4 27-Feb-2005  perry nuke trailing whitespace
 1.3 19-Apr-2003  fvdl branches: 1.3.2; 1.3.10; 1.3.12;
Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.2 02-Jun-2002  lukem Use SLIST_*() instead of accessing slh_first,sle_next directly.

XXX: this program currently doesn't parse macros that cross the EOL with \
(there are a couple in sys/dev/scsipi/scsi_message.h).
with that issue temporarily worked around, this change generates the
same output as the version of aicasm without this change.
 1.1 15-Mar-2000  fvdl branches: 1.1.6; 1.1.8; 1.1.10; 1.1.22;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.22.1 20-Jun-2002  gehenna catch up with -current.
 1.1.10.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.1.8.1 20-Jun-2002  nathanw Catch up to -current.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file aicasm_scan.l was added on branch thorpej_scsipi on 2000-11-20 11:41:34 +0000
 1.3.12.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.3.10.1 29-Apr-2005  kent sync with -current
 1.3.2.1 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.9 24-May-2022  andvar fix various typos in comment, documentation and log messages.
 1.8 01-Jan-2022  andvar fix typos in word "diagnostic".
 1.7 27-Jun-2020  jdolecek make this compile with normal WARNS
 1.6 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.5 11-Dec-2005  christos branches: 1.5.74; 1.5.84; 1.5.90;
merge ktrace-lwp.
 1.4 14-Jul-2003  lukem add missing __RCSID()
 1.3 19-Apr-2003  fvdl branches: 1.3.2;
Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.2 02-Jun-2002  lukem Use SLIST_*() instead of accessing slh_first,sle_next directly.

XXX: this program currently doesn't parse macros that cross the EOL with \
(there are a couple in sys/dev/scsipi/scsi_message.h).
with that issue temporarily worked around, this change generates the
same output as the version of aicasm without this change.
 1.1 15-Mar-2000  fvdl branches: 1.1.6; 1.1.8; 1.1.10; 1.1.22;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.22.1 20-Jun-2002  gehenna catch up with -current.
 1.1.10.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.1.8.1 20-Jun-2002  nathanw Catch up to -current.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file aicasm_symbol.c was added on branch thorpej_scsipi on 2000-11-20 11:41:34 +0000
 1.3.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.3.2.1 03-Aug-2004  skrll Sync with HEAD
 1.5.90.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.5.84.1 28-Apr-2009  skrll Sync with HEAD.
 1.5.74.1 04-May-2009  yamt sync with head.
 1.4 24-May-2022  andvar fix various typos in comment, documentation and log messages.
 1.3 25-Oct-2021  ryo fix build failure of "multiple definition"
 1.2 19-Apr-2003  fvdl Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.1 15-Mar-2000  fvdl branches: 1.1.6;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file aicasm_symbol.h was added on branch thorpej_scsipi on 2000-11-20 11:41:34 +0000
 1.2 19-Apr-2003  fvdl Newer aic sequencer assembler. From FreeBSD, written by Justin Gibbs.
Ported to NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some Makefile changes by me.

The 79xx code isn't yet used, driver for that to follow shortly.
 1.1 15-Mar-2000  fvdl branches: 1.1.6;
New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 15-Mar-2000  bouyer file sequencer.h was added on branch thorpej_scsipi on 2000-11-20 11:41:34 +0000

RSS XML Feed