Commit Graph

46 Commits

Author SHA1 Message Date
mhitch b3f9a74326 Fix a problem that will reboot the system with no message as to what the
problem was.  A collision between a select and reselect would leave TC
non-zero from the command-out DMA count, which could later be considered
a fatal condition, causing a reboot.  The message for that error was
only displayed with DEBUG.  Fixed by clearing TC on a reselect.  The
non-zero TC detection won't occur in this case, so unconditionally
display the message if it occurs.

Workaround for another problem that resulted from an "Illegal Command"
status from the 53c94 which would get ignored and result in a timeout
(which also reboots the system).  Added the missing check for the
illegal command status, and add the workaround of resending the "accept
message" command to the 53c94.  Correct fix will be to determine why the
message wasn't sent in the first place.  Abort if the resending the
command doesn't work.

Correctly detect a spurious interrupt and ignore it.  This was taken
from a newer Mach driver, but did not get the check converted for the
design difference between the current NetBSD driver and the Mach driver.
1998-05-08 15:39:01 +00:00
thorpej b9db388b0f don't use variables declared _inside_ DEBUG in code _outside_ DEBUG 1998-03-26 00:49:03 +00:00
mhitch 8adf8abfea Enable another error message before the driver reboots the machine. It was
not being printed if not compiled with DEBUG.  Now all situtiations where
the driver gives up should display a message before the reboot.
1998-03-24 20:49:22 +00:00
thorpej 19feaef2b4 Adjust for changes in config. 1998-01-12 09:51:28 +00:00
mhitch f018043286 Fix driver bug when using an RZ23 (and very likely any other drive that
does a "restore data pointers" when reselected after disconnecting in
the middle of a DMA transfer).  The driver needs a different way to know
which script to continue the DMA transfer.  The message-in for the "restore
data pointers" loses the original "resume" script, and the driver would
attempt to continue the DMA transfer at the beginning of the current DMA
chunk, rather than at the point the disconnect occured.  The result was a
spurious console message, and a trashed filesystem.
1997-11-28 18:23:38 +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
mhitch 0ae3de1a27 Use direct DMA with the IOASIC ASC SCSI interface. DMA buffering can be
re-enabled with ASC_IOASIC_BOUNCE.
All DMA buffered processing is now done in the bus-specific DMA routines
in asc_ioasic.c and asc_tc.c.
Disable several informational messages dealing with non-empty FIFO conditions,
but allow enabling with ASC_DIAGNOSTIC for troubleshooting.
1997-07-28 19:39:22 +00:00
jonathan 0bca2bff6d include <machine/bus.h>. 1997-06-16 03:46:29 +00:00
mhitch c108a0ce0b Fix another weird driver state. After sending the SCSI command to the target
after synch negotation during device probes, the 53C94 stops with the target
reqesting more command data.  The fifo appears to still contain a couple of
bytes, so transfer them.  If the target still wants command data after that,
do a transfer pad.  The target seems to function normally after this.  A
much better solution thant simply rebooting!
Also fix a problem when compiling with DIAGNOSTIC - a mismatch between using
DIAGNOSTIC and MACH_DIAGNOSTIC caused the compile to fail.
Try to start another target and a device disconnects.
1997-06-07 05:10:42 +00:00
jonathan 3bdc896e84 lint: fix %x vs pointer and tyops in error-logging printfs. 1997-05-24 09:48:53 +00:00
jonathan 7fcfe9e0f5 Print explanatory message before each panic, or "goto abort" (which panics). 1997-04-07 03:21:14 +00:00
jonathan 2f1aae7d37 Commit message for previous revision (lost due to Ultrix-compat bug):
* Don't print DMA_OUT message in the `normal' case of a 16-byte residual.
* ioasic-connected 53c94 devices are always clocked  at 25MHz even on
  machines with 12.5MHz TurboChannel.
1997-04-06 10:07:54 +00:00
jonathan 055fff0581 *** empty log message *** 1997-04-06 09:58:30 +00:00
mhitch cb3b852a7f A couple of missed boot() -> cpu_reboot() changes. 1997-03-29 05:03:01 +00:00
thorpej 55acc3ffb3 Fill in sc_link.max_target 1996-12-10 21:57:17 +00:00
christos 86373f8cf9 backout kprintf changes 1996-10-13 01:37:04 +00:00
christos b5c4f2fc49 printf -> kprintf, sprintf -> ksprintf 1996-10-10 20:25:34 +00:00
jonathan 9b84ee7f35 Fix data-corruption bug on async targets:
*  When we are transferring in DATA (in asc_dma_in) and the target
  is an async device, there is sometimes an extra byte in the FIFO.
  If so, we need to drain that byte out of the fifo, but if and only
  if the target is async.  See also the comments in asc_dma_in()
  in the related Mach mk84 asc driver (scsi_53C94_hdw.c), which
  has an identical fix but applied in more restrictive conditions
  than we need, with async *disk* targets, as well as async tapes.

* Add a watchdog and timeout active SCSI requests, to eliminate any
  potential for deadlock due to applying the fix above on newer
  silicon versions of the 53c94 which may not have the above problem.
  Should use the MI scsi per-target timeout instead, when available.
1996-09-29 03:02:19 +00:00
jonathan 8eca2b2bb4 * Rewrite asc driver with ``mi'' backend and parent-specific front-end
cfattach code for TC SCSI option cards  and ioasic 53c94 baseboard SCSI.
    ascvar.h:  shared softc  declarations
    asc_ioasic.c: ioasic front-end code.
    asc_tc.c: Turbochannel option (and 5000/200 basebard) front-end code.
* ioasic_attach meeds more work to eliminate pmax_type dependency
   and to verify the clocks speed passed to 53c94.
* Add prototypes for asc script entry points; should compile with
  -Wstrict-prototypes -Wmissing-prototypes.
* Use tcvar.h interface.  The usage of tc_syncbus() and tc_mb() may
  not be quite stylistically on an Alhpa, but it apparently makes no
  difference on the eerly-generation Alpha CPUs in TC Alphas.
1996-09-25 21:07:46 +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
mrg 5abbf990f3 Change reboot(2) to take two arguments: bootopt like normal and also
a boot string for firmware that can do this, such as the SPARC and
the sun3 models.  It is currently silently ignored on all other
hardware now, however.  The MD function "boot()" has been changed to
also take a char *.
1996-08-09 10:30:23 +00:00
mhitch ebe82deed0 Remove the "goto abort" (which currently reboots the machine) when the
FIFO is non-empty when the message-in phase occurs before the DMA output
starts.  This showed up on a Micropolis drive.
1996-07-30 06:18:40 +00:00
mhitch e4de48ff39 Don't flush the 53C94 fifo when starting dma_in. The fifo data is valid
at that point, and flushing the fifo will hang the system.
1996-07-16 15:20:38 +00:00
mhitch cc47447cfc Try to avoid collisions with reselection when starting a new selection.
Enable reselections as soon as possible after a disconnect - prevents
losing a reselecting device.
Check for and ignore a spurious interrupt during a DMA input (from the
Mach driver).
1996-06-11 05:15:32 +00:00
mhitch 3a8d18d828 Fix the oversight that the ASC SCSI adapter can also be on the
Turbochannel as well as the IOASIC.  It should now work on the 5000/200.
Removed the "aborts" which could leave the disk trashed when the abort
rebooted the system.  Fix the data corruption problem by clearing the
FIFO before starting a data transfer.
1996-06-04 21:08:24 +00:00
mhitch 40b6370ffb Fix the DECstation ASC SCSI driver autoconfiguration to more closely
match the alpha.  The DS3100 will now configure properly.  Also fix
the name in the cfdriver structure - somewhere it got changed from
"asc" to "as".
1996-05-29 06:32:38 +00:00
jonathan d1e0e11f70 * Fix formatstr/argument mismatches in diagnostic printf()s.
* Change MachEmptyWriteBuffer() to wbflush(). Should  use TC mi names tc_mb(),
  tc_wmb, tc_syncbus() but I'm not sure which each wbflush() should be.
* Add prototyped forward decl for asc_Dumplog() and add an explicit void
  return type.
* Remove unused variables.
1996-05-20 09:46:21 +00:00
jonathan 5bccfd6764 Additional fixes to complete the NetBSD/1.1B config changes:
Add new device-attach struct cfattach asc_ca and struct cfdriver asc_cd.
Change cfdriver references from "XXXcd"  to "XXX_cd".
1996-03-18 01:39:47 +00:00
jonathan 8b3d92f17f Resolve pmax and alpha IOCTL asic driver differences, pass 1:
Rename the ioctl asic register and slot macros from ASIC_<xxx> to
IOASIC_<xxx>, to be compatible with the machine-indpendent names in
sys/dev/tc/ioasicvar.h.  The pmax code still uses
sys/arch/pmax/pmax/asic.h, as some of the registers and offsets
defined there are not yet defined in sys/dev/tc/ioasicvar.h.
Rename the ioctl asic base-address pointer from `asic_base' to `ioasic_base'.
Use the device address in the attach_args structure, instead of
using the deprecated BUS_CVTADDR macro.

Change the Mach derived asc driver to use "SCSI_PHASE_xxx" instead of
"ASC_PHASE_xxx",  as the latest version of the Mach driver does.
1996-02-02 02:33:34 +00:00
jonathan 3b6b27f9d5 Commit trivial changes from Mach MK84 to force sup'ables source to be updated:
Drop spurious interrupts in asc_intr().   Read back the pending SCSI command
so asc_intr() can add it to the asc SCSI log.
1996-01-04 17:43:23 +00:00
jonathan d7b9b56e07 Rename the old pmax SCSI driver's "struct scsi_device" to
"struct pmax_scsi_device", to avoid name conflicts with the sys/dev/scsi
SCSI driver.
1995-09-13 19:35:53 +00:00
jonathan 23366c17ff Rename the old 4.4bsd/pmax old-style config "struct device" to
"struct pmax_device" to avoid conflict with <sys/device.h>.

Change the signature of interrupt-handlers to take a void *
(a pointer to the softc) and return an int (indicating spurious
interrupts or other conditions.)
1995-09-11 08:29:11 +00:00
jonathan 97cf65df4a Change pmax ASC driver to use dynamically-allocated softc structures.
Concomitant changes to code that prints driver/unit name: use dv_xname
and dv_unit, instead of doing pointer arithmetic on elements of the static
softc array.

Remove support for old config.  The old-config "driver" structure
is still present, because the pmax non-MI SCSI driver needs it.

Merge some off Per Fogelstrom's changes for the Pica driver,
which uses the machine-independent SCSI code. This is #ifdef'ed
out until the DMA is fixed to work on Decstations, too.
1995-08-21 21:22:43 +00:00
jonathan 88b9b7eb4a Update DECstation drivers to use new-style config, removing
old-style config support, except for SCSI disks and tapes.
1995-08-10 04:21:35 +00:00
jonathan 1bacfdc2dd Add preliminary support for new-style configuration: struct cfdriver,
and match and attach code.  Still use the static softc so that drivers
work with kernels configured with either new or old config.
1995-08-04 00:26:35 +00:00
dean 50c5dd6f0d fix problem with disconnects (Ralph Campbell) 1994-12-05 19:11:12 +00:00
dean ba0ac0e803 added missing #ifdef DEBUG 1994-12-01 16:41:05 +00:00
dean fcf0991366 new asc.c from Ralph Campbell 1994-11-28 19:05:54 +00:00
dean 393ee3693c Surrounded call to debug routine with #ifdef DEBUG 1994-11-15 18:59:40 +00:00
cgd a63beafc2b new RCS ID format. 1994-10-26 21:08:38 +00:00
glass 6b63c739f3 bsd 4.4-lite pmax port as ported to NetBSD 1994-05-27 08:57:32 +00:00
glass 377b097932 upgrade to bsd 4.4-lite code base. only mod is rcsids 1994-05-27 08:39:00 +00:00
deraadt 56cc97cb80 update from rick, tarfile of Oct 11 10:46 1993-10-15 02:56:33 +00:00
deraadt 63a052d489 fixed two icky rcs-log's. 1993-10-12 03:48:52 +00:00
deraadt fe806afec2 pmax code from <ralphc@pyramid.com> & <rick@snowhite.cis.uoguelph.ca> 1993-10-12 03:22:19 +00:00