Commit Graph

80 Commits

Author SHA1 Message Date
thorpej
b33907f299 Don't DMA the scsi command from or the sense data to the scsipi_xfer
directly.  That would require that we map the scsipi_xfer into DMA
space.  Instead, copy to/from the NCR CCB, which the script already
has to DMA to/from.  These copies are small, and don't seem to affect
performance.
1998-12-13 00:11:37 +00:00
thorpej
178fc3cc05 Step 3:
Use DMA maps for the actual data transfers.
1998-12-12 23:41:56 +00:00
thorpej
3cc30b3641 Step two:
Use DMA-safe memory for the script instances.  The most important thing
here is that is guarantees that the script is contiguous in DMA space.
1998-12-12 00:19:13 +00:00
thorpej
086b4b0bf1 Step one of bus_dma'ing the PCI NCR driver:
Separate the ncb (i.e. softc) members that are accessed by the script into
a separate structure.  Allocate one of these structures in DMA safe memory
using bus_dma, and change RELOC_SOFTC to use the DMA address of this
structure.
1998-12-11 23:21:11 +00:00
mjacob
74bc9f26d5 Update HBAs to incorporate the new max_lun property. 1998-12-05 19:43:33 +00:00
thorpej
3b068a6c78 Adapt to the new scsipi_adapter interface. 1998-11-19 21:53:32 +00:00
thorpej
29d472f53d Garbage-collect the open_target_lu and close_target_lu entry points from
struct scsipi_adapter; they were not used.

Add a scsipi_ioctl entry point to struct scsipi_adapter.  This will be
used to issue ioctl commands to the host adapters.

Inspired by PR #6090, from Matt Jacob.
1998-10-10 00:28:28 +00:00
mjacob
07bb8331e8 Roll back to 1.71 version- too many unexplainable problems with 1.72. 1998-09-21 14:53:58 +00:00
mjacob
52588e4fde add more general probe to regular more operation stuff 1998-09-08 07:30:32 +00:00
veego
ff2c3adddc Add some braces to stop the new egcs warnings. 1998-08-20 19:55:06 +00:00
eeh
a2dd74ed79 Merge paddr_t changes into the main branch. 1998-08-13 02:10:37 +00:00
ross
920e7c7d5d Fix a race involving determination of pollmode. This is not known to be
associated with any observed lossage...it was just noticed while reading
ncr_start().

g/c some now-unreachable code produced by the earlier race condition fix.
1998-08-10 13:10:33 +00:00
ross
815f9f2445 1. Untangle preprocessor conditionals for sanity and {} balance
2. Fix a race between the first callout and the first non-polled ncr_start()
1998-08-08 00:14:08 +00:00
thorpej
ea3a1d9c44 Nuke __BROKEN_INDIRECT_CONFIG. 1998-06-08 06:55:54 +00:00
matt
d575ad31d0 Use PCI_REVISION and eliminate some pci_conf_reads 1998-05-28 13:51:09 +00:00
thorpej
2538ed1062 Use offsetof() from libkern.h 1998-01-28 02:23:04 +00:00
thorpej
06ce220790 Update for config changes. 1998-01-12 09:39:57 +00:00
perry
3979615b0d ncr_reg.h -> ncrreg.h per Dave Huang 1997-09-23 02:39:15 +00:00
perry
69fbaa747d updates from FreeBSD via Dave Huang <khym@bga.com> 1997-09-23 02:27:43 +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
cjs
312218482a Add QUIRK_NOTAGS quirk to disable tagged command queuing for particular
drives. Add a quirk entry for HP C372x drives with QUIRK_NOTAGS. Also,
print quirks being used if quirks other than QUIRK_NOSYNC are being used.
1997-07-01 00:41:43 +00:00
mikel
7aa8facf27 end line after printing WIDE SCSI status; fixes PR kern 3505. 1997-04-17 07:21:14 +00:00
cgd
36949596f0 rename pci_map_register to pci_mapreg_map. The latter name is more
descriptive, and allows for a sane name for a function which just digs
the info out of the mapping register but doesn't do the mapping.
1997-04-13 20:14:20 +00:00
cgd
4c2cff7209 use pci_map_register(). map both mem and I/O spaces, preferring mem space
by default if it's usable, but falling back to I/O space if mem isn't usable.
If NCR_IOMAPPED is defined (default on the x86), prefer I/O space
then fall back to mem.  Also, clean up the various memory consistency checks
so that they can deal with run-time determination of whether or not the
device is to be memory- or I/O-mapped.
1997-04-13 19:58:17 +00:00
mycroft
e481e52aa9 Fix a couple of splhigh()s that should be splbio(). 1997-03-04 21:42:32 +00:00
perry
40533e83ff Commit latest fixes/upgrades to NCR SCSI driver. From FreeBSD via
Dave Huang <khym@bga.com>

Tested on alpha by cgd, tested on several i386 boxes. Certainly causes
no harm to the goddamned mess, but the NCR driver only works when you
perform voodoo rituals on it anyway.

This is what Dave said (in email) has been added to the driver:

  ----------------------------------------------------------------------
  This seems to be the most significant change:
  General cleanup and new features for 53c875 based cards, especially the
  Tekram DC390W/U/F, whose config EEPROM can now be dumped, if the kernel
  is built with option NCR_TEKRAM_EEPROM.

  Other changes:

  - add brackets to expansion of OUTB/W/L macro arguments.
  - remove unused NCB structure element ns_async
  - support sync. SCSI offset of 16 (instead of only 8) on 825A and 875
  - correctly identify 53c810A and 53c825A chips
  - preserve SCSI BIOS settings of PCI performance options
  - remove (already disabled) support for NCR reset because of command timeout
  - reverse order of reading of SCSI and DMA specific interrupt cause registers
  - add definition of Tekram config EEPROM contents (not currently used)
  ----------------------------------------------------------------------
1997-01-10 05:57:10 +00:00
thorpej
d502e68402 Fill in sc_link.max_target 1996-12-10 21:27:16 +00:00
cgd
197d80c63a update these so they compile whether or not __BROKEN_INDIRECT_CONFIG
is defined.
1996-12-05 01:25:23 +00:00
cgd
f1482e61d8 cast pointers to long, not int, and fix the resulting printf format goof. 1996-11-23 21:42:28 +00:00
perry
a797b925b2 Incorporate updated version of fixes from FreeBSD submitted in PR
2841, plus some fixes to make the patches work on the Alpha. Seems to
improve the NCR driver a lot. We probably should try to incorporate
any updates that have happened since, too.
1996-11-20 21:26:48 +00:00
cgd
71f1ac1e29 print ptrdiff_t's by casting to long and printing with %l<whatever>.
(This fixes problems with the printf format fixes i checked in yesterday.
ptrdiff_t is an 'int' on the i386 but a 'long' on the alpha, so the cast
really is necessary...  *sigh*)
1996-11-14 20:33:04 +00:00
cgd
2bf9f4b20a fix a bunch of printf format botches 1996-11-13 19:34:31 +00:00
cgd
2ab4192195 update alpha_XXX_dmamap() invocations to match prototype. 1996-10-25 21:33:30 +00:00
cgd
702e7ec138 make script_kvars an array of unsigned longs, and cast when assigning the
elements, to avoid warnings (with -Wcast-qual) about 'volatile'
qualifiers being discarded.
1996-10-25 00:33:00 +00:00
cgd
2e7c250f84 update drivers to use the new NetBSD/alpha DMA mapping hack, since
the old one is not workable with the new bus.h.
1996-10-23 04:37:31 +00:00
thorpej
546c8abcee 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:56:24 +00:00
christos
86373f8cf9 backout kprintf changes 1996-10-13 01:37:04 +00:00
christos
95e30eafe7 printf -> kprintf, sprintf -> ksprintf 1996-10-10 19:58:18 +00:00
cgd
4463616051 put set of 'channel' field of scsi_link in the right #ifdef 1996-09-20 22:38:37 +00:00
cgd
71ad30d0e9 (1) set scsi_link channel to either the appropriate channel (if a
multi-channel driver), or to SCSI_CHANNEL_ONLY_ONE if a
    single-channel driver.
(2) use scsiprint() rather than a locally-defined autoconfig print
    function, and kill any locally-defined print function.
1996-08-28 18:59:15 +00:00
cgd
2a73ef60b7 change cfprint_t type definition to take a const char *, rather than
a char *, because that's what was really intended, and because
if the print function modifies the string, various things could become
unhappy (so the string should _not_ be modified).
1996-08-27 21:53:46 +00:00
cgd
de2285c4d2 #undef assert before defining it, so the new libkern definition doesn't
conflict with this one.
1996-08-27 01:00:00 +00:00
mycroft
988597c420 Eliminate reference to stddef.h. 1996-08-10 09:25:11 +00:00
cgd
effd413ecd before #defining the vtophys() hack for the alpha, #undef vtophys since
it may be a macro.
1996-07-15 16:40:27 +00:00
cgd
b1b4f705ba convert alpha vtophys() #defines to use __alpha_bus_XXX_dmamap(), to
get rid of the nasty (vtophys(va) | 0x40000000) expressions, and to make
the code more correct.
1996-06-03 20:30:21 +00:00
mycroft
cec36bf8d5 Use intr.h. 1996-05-12 23:51:23 +00:00
christos
5a4851d776 - fix printf format strings
- #ifdef out unused variables/functions
- parenthesize
1996-05-03 17:39:49 +00:00
mycroft
5e078e5ec8 Implement ncr_print(). 1996-04-03 08:44:15 +00:00
cgd
5c2768088c make sure that chipset tags are used properly (because the alpha cares),
and include <machine/intr.h> on the alpha, for interrupt information.
(i386 will probably switch to this eventually.)
1996-03-30 05:10:29 +00:00
cgd
d37d07a75b modify these to use the new PCI interfaces:
(1) use pci_{io,mem}_find(), to determine what I/O or memory
	    space is described by a given PCI configuration space
	    mapping register, and bus_{io,mem}_map() to map it.
	(2) use pci_intr_map(), pci_intr_string(), and
	    pci_intr_{,dis}establish() to manipulate and print info about
	    PCI interrupts.
	(5) make pci functions take as an argument a machine-dependent
	    cookie, to allow more flexibility in implementation.
1996-03-27 04:06:53 +00:00