Commit Graph

53 Commits

Author SHA1 Message Date
mrg
ea9579cbb2 don't declare ahc_pci_ident_table[] and ahc_num_pci_devs extern, they aren't. 2006-05-11 01:02:15 +00:00
tsutsui
ce21617f93 Add AHC_USETARGETDEFAULTS to ahc_flag, which enables to
use default target (but not for host) device settings on
ahc(4) interface without its SEEPROM (mostly on-board one).

This flag could be useful if host's BIOS (firmware) initializes
ahc(4) chip with some conservative (async, no tagged queuing etc.)
target settings for minimum support to load its primary loader etc.,
and it will be enabled in each attachment according to MD device
properties(9). Currently this property is set only on sgimips for
O2 on-board aic7880 adapters.

No objection on tech-kern (and netbsd-bugs), and closes PR kern/23276.
2006-04-15 14:22:52 +00:00
tsutsui
4b0dbc6b50 TAB/space cleanup. 2006-03-14 15:24:30 +00:00
bouyer
2ac6595656 Don't call alloc_scb() (which can call bus_dmamem_alloc/map) from
ADAPTER_REQ_RUN_XFER context (which can be interrupt context), defer this
to the ADAPTER_REQ_GROW_RESOURCES callback.
Fix a panic in uvm reported by John R. Shannon on port-xen; patch tested on
ahc by me and on ahd by John.
2005-11-28 21:03:19 +00:00
thorpej
77e4f4547b Remove some extern decls for PCI-specific stuff that are private to
the PCI front-end.
2005-06-28 00:32:27 +00:00
christos
f381db6045 - add missing const
- fix variable shadowing
- remove unneeded casts
2005-05-30 04:43:46 +00:00
perry
f31bd063e9 nuke trailing whitespace 2005-02-27 00:26:58 +00:00
thorpej
df9803ce96 Part 1 of a cleanup pass over the SCSI subsystem. The aim is to name
everything "scsi_*", since we really are talking about the SCSI command
set, ATAPI transport not withstanding.  Improve the names of many structures,
and prepend "SCSI_" onto all SCSI command opcodes.  Place items described
by the SCSI Primary Commands document into scsi_spc.h.
2005-02-21 00:29:06 +00:00
itojun
4c6511de84 avoid unbounded sprintf(), use snprintf() 2004-04-21 18:03:13 +00:00
wiz
3f9411f688 Spell removable with only two es. Inspired by jmc@openbsd. 2004-04-19 12:44:09 +00:00
wiz
c5670263e0 Fix some typos. From Tom Cosgrove via jmc@openbsd. 2003-11-02 11:07:44 +00:00
fvdl
61834e8959 Cap the transfer size at MAXPHYS, the driver won't get bigger requests
than that. Allocating 16M per SCB is silly (as pointed out by
Frederick Bruckman).
2003-10-08 17:38:31 +00:00
fvdl
4458cfede6 * Make the ahc and ahd probes more alike.
* Remove some redundant code.
* ahd: Don't initiate negotiation for a discovery xs when the negotiation goal
  is set. Just looking at the auto_negotiate mask is enough, and it can
  cause an endless loop if the request gets requeued (happens with a
  of a PPR negotiation, which ends with a busfree).
2003-09-02 21:02:56 +00:00
itojun
7f6ed16ef4 function prototype must not have variable name 2003-07-08 10:06:28 +00:00
wiz
05e990b871 summarize with two m. 2003-05-14 12:46:27 +00:00
wiz
1ffa7b76c4 DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
fvdl
11e1ebb8dd Reset channel(s) in ahc_attach, rather than at first access. 2003-04-21 19:59:48 +00:00
fvdl
b30a81c90c Resurrect change from previous ahc driver version: reset channel (unless
configured not to in the BIOS) on first access.
2003-04-20 19:49:45 +00:00
fvdl
c620a2fd66 Fix some AHC_DEBUG printf cases, and undef AHC_DEBUG. 2003-04-20 16:04:54 +00:00
fvdl
26813b6545 Get rid of AHC_LUN_WILDCARD, making differences with FreeBSD smaller. 2003-04-20 11:17:20 +00:00
fvdl
ccadc2cbd3 Newer adaptec 7xxx driver. Written by Justin Gibbs for FreeBSD. Ported to
NetBSD by Pascal Renauld at Network Storage Solutions, Inc.
Some modifications by me.
2003-04-19 19:33:29 +00:00
ichiro
170528a210 delete definition of STAILQ_ENTRY
previous defined sys/sys/queue.h
2002-12-07 01:40:24 +00:00
wiz
b231fd7631 explicitly, with two l. 2002-02-11 11:01:52 +00:00
ichiro
f855f38bdd add detach/activate routine 2002-01-16 02:11:20 +00:00
wiz
e7313e53ae Fix typo in comment. 2001-07-04 20:34:03 +00:00
lukem
52a1d62934 delint 2001-04-30 03:45:35 +00:00
bouyer
937a7a3ed9 Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
  ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
  to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
  peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
  recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
  scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
  (no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
  set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
  the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
  will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
2001-04-25 17:53:04 +00:00
chs
09cb38f22b expose the definitions of MIN() and MAX() in sys/param.h to the kernel
and use those in favor of a dozen copies scattered around the source tree.
2001-02-05 10:42:40 +00:00
jdolecek
34c8ae80da constify 2001-01-18 20:28:15 +00:00
fvdl
4b7b35ae8a When a bus is accessed for the first time, reset it. Without this,
some devices may not be found if the BIOS (which would normally
do the reset at startup) is disabled. Should really be done from the SCSI
layer.

Implement the SCBUSIORESET ioctl.
2000-05-27 21:58:15 +00:00
fvdl
c9fe89891a Don't try to re-enable tags once they have been disabled because of a
MSG_REJECT from the target. Obey the NOTAG quirk.
2000-05-22 21:14:24 +00:00
fvdl
f44ddd61a9 Do bus-specific interrupt handling (i.e. ahc_pci_intr) via a bus_intr
field in the softc, instead of relying on NPCI > 0. This would
prevent things from compiling if PCI buses were in the config file,
but ahc was attached only to something else than the PCI bus.
2000-03-16 10:33:45 +00:00
fvdl
1e4647a15b New ahc driver, a port of Justin Gibbs' FreeBSD driver. This adds
support for the U2W chips, and U160 controllers.
2000-03-15 02:08:28 +00:00
thorpej
8949eab0cb Split the code that reads the SEEPROM into its own file. 2000-01-26 06:04:37 +00:00
thorpej
7a9cc5bfbc Update for changed scsipi_xfer struct. 1998-12-09 08:37:50 +00:00
thorpej
5f0577babc Adapt to the new scsipi_adapter interface. 1998-11-19 21:43:00 +00:00
sommerfe
d64d1a0381 defopt a bunch of AHC specific options 1998-06-22 20:02:54 +00:00
leo
112b5de402 Use a stream method for AHC_OUTSL when possible. 1998-04-16 07:13:57 +00:00
leo
d2551d5b3f Use bus-dma functions. 1998-03-16 15:36:17 +00:00
bouyer
6f3bab1f59 Merge scsipi branch in the mainline. This add support for ATAPI devices
(currently only CD-ROM drives on i386). The sys/dev/scsipi system provides 2
busses to which devices can attach (scsibus and atapibus). This needed to
change some include files and structure names in the low level scsi drivers.
1997-08-27 11:22:52 +00:00
cgd
db0f072019 clean these up (mostly rename bus_space_{tag,handle}_t variables) so that
this code makes equal sense for memory and I/O space, prefer to map
the PCI front end via memory space (conditionalized on a patchable kernel
variable), and do a bit of other random NetBSD-specific cleanup.  (These
changes were sent to Justin Gibbs on March 28.)
1997-04-10 02:48:38 +00:00
cgd
4c654c0acf fixes from Matt Jacob so that these can compile and run on the Alpha.
(aic7xxx has been tested and works on the Alpha, bha has not yet been
tested on thne Alpha.)
1997-03-13 00:38:48 +00:00
thorpej
7d4d4753a8 Implement a simple scsi xfer queue to avoid presenting a resource
shortage to the upper scsi layers, which don't (yet) deal well with
resource shortages.
1996-12-02 19:06:41 +00:00
thorpej
16c4c5af26 New bus.h implementation/interface:
- No more distinction between i/o-mapped and memory-mapped
	  devices.  It's all "bus space" now, and space tags
	  differentiate the space with finer grain than the
	  bus chipset tag.
	- Add memory barrier methods.
	- Implement space alloc/free methods.
	- Implement region read/write methods (like memcpy to/from
	  bus space).
This interface provides a better abstraction for dealing with
machine-independent chipset drivers.
1996-10-21 22:24:37 +00:00
gibbs
b9c06e6fa3 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.
1996-10-08 03:04:02 +00:00
explorer
c62a6661a1 Updates to aic7xxx driver ; from pr port-i386/2600 1996-07-10 22:50:44 +00:00
thorpej
722d0da592 RCS Id police. 1996-05-20 00:56:39 +00:00
mycroft
1474c6f3a3 Replace STAILQ with SIMPLEQ. 1996-05-16 05:22:28 +00:00
mycroft
f636c54f70 Replace STAILQ with SIMPLEQ. 1996-05-16 05:20:23 +00:00
mycroft
117bb8ae8b New version, with changes from Justin Gibbs and Noriyuki Soda. 1996-05-16 03:59:03 +00:00