Commit Graph

657 Commits

Author SHA1 Message Date
pk 39879b883e Use a 1-character queue so polled console output can be deferred if
regular I/O has been scheduled.
1997-11-12 22:17:07 +00:00
bouyer f7c6e141e6 Various bug fixes for atapi part:
- clean up debug code
- Don't check ATAPI signature when probing ATA drives, ATAPI devices were
  detected before
- Reset controller after disks probes. The probe, with some combinations of
  ATA/ATAPI device keep it in a mostly working, but strange state (with busy
  led on)
- The WDCF_IRQ_WAIT flag is now cleared by wdc_ata_intr and wdc_atapi_intr
  when appropriate (helps recover from failure conditions)
- In wdcunwedge, send ATAPI_SOFT_RESET to non-ata drives
  (helps recover from failure conditions)
- in wdctimeout be a bit more verbose when we missed an interrupt
- Always Increment xfer->c_skip where it should be
- Set the ITSDONE flag when a polled command completed.
1997-11-05 22:19:07 +00:00
thorpej 1713a9fb07 is790 u_char -> int. 1997-11-05 07:15:42 +00:00
thorpej 03a0c2d900 Implement a simple queueing mechanism that makes these drivers much
more robust in resource shortage situations, basically identical to
code I added to the "ahc" driver some time ago.

Thanks to Brad Spencer for the testing help.
1997-11-04 05:58:22 +00:00
mycroft 47c2d7502f Actually use TIOCFLAG_CDTRCTS. 1997-11-03 16:30:54 +00:00
mycroft 0e16ca013b Always leave DCD_IE and CTS_IE on for now. Needs more work in zsparam() to
make the optimization actually work right.
1997-11-03 16:15:47 +00:00
mycroft 37e260f4a6 Leave the console running with or without DDB. 1997-11-03 15:35:42 +00:00
mycroft 13e9b38191 Slight optimization in soft input routine. 1997-11-03 08:20:35 +00:00
mycroft ce29cdf2e7 Set the ring size back to 2k. 1997-11-03 06:56:28 +00:00
mycroft 9b9cce6084 Mostly cosmetic and performance changes:
* Make the ring buffer size and water marks patchable, and allocate the buffer
  separately.
* Do the ttymalloc() at attach time.
* Reorganize the receive buffer so the status and data pair are next to each
  other.  This is slightly faster.
* Make sure we actually do turn off interrupts in comclose() if we have DDB
  configured and it's not the console.  (D'oh!!!!)
* When we exhaust the current transmit run, turn off transmit interrupts in
  comintr(), so we're fairly sure we don't get another one.
* Nuke the silly lsrmap[] idea; it's slower in the normal case.
* Cache the l_rint pointer in the soft interrupt routine.
1997-11-03 06:55:54 +00:00
mycroft 7d7ecb9200 Bug fixes:
* Carrier detect (TS_CARR_ON) is based on the actual DCD bit, even if it's
  being ignored.
* Set TS_WOPEN early on in zsopen().
* Don't disable interrupts on the console during close if we have DDB.

Inert changes:
* Don't handle ZS_HWFLAG_NO_DCD here; the frontend does it.
* Deprecate `register'.
* Use SET(), CLR(), and ISSET().

More performance changes:
* Rototill receive handling; use a backpressure mechanism to prevent livelock.
* Output silo/ibuf overflow warnings at most once per minute, from a callout.
* When we exhaust the current transmit run, turn off transmit interrupts in
  zstty_txint(), so we're fairly sure we don't get another one.
1997-11-03 06:16:43 +00:00
mycroft 067898abb8 Mostly cosmetic and performance changes:
* Make the ring buffer size and water marks patchable, and allocate the buffer
  separately.
* Do the ttymalloc() at attach time.
* Reorganize the receive buffer so the status and data pair are next to each
  other.  This is slightly faster.
* Make sure we actually do turn off interrupts in comclose() if we have DDB
  configured and it's not the console.  (D'oh!!!!)
* When we exhaust the current transmit run, turn off transmit interrupts in
  comintr(), so we're fairly sure we don't get another one.
* Nuke the silly lsrmap[] idea; it's slower in the normal case.
* Cache the l_rint pointer in the soft interrupt routine.
1997-11-03 06:12:02 +00:00
gwr 762cc5a0fc Fix serial console support (did not turn on CLOCAL). 1997-11-03 04:34:18 +00:00
thorpej e7044069f6 Fix a think'o in ifmedia initialization. 1997-11-03 00:19:41 +00:00
mycroft 61bf289f3e Slight code rearrangement. 1997-11-02 09:31:49 +00:00
mycroft acb27fb42a Slight code rearrangement. 1997-11-02 09:24:51 +00:00
mycroft 5869b743c7 Rearrange *param() slightly to eliminate a spl.
Also fix another comment regarding DTR.
1997-11-02 09:15:41 +00:00
mycroft 76b7dd52df Add another splserial()/splzs(). 1997-11-02 08:55:52 +00:00
mycroft acd97c6676 Minimize some spl regions slightly. 1997-11-02 08:50:31 +00:00
mycroft 8914537568 If we lose HFC, assert RTS. 1997-11-02 08:29:51 +00:00
mycroft b000ee5105 Set the state of DCD_IE and CTS_IE based on what's in rr0_mask. 1997-11-02 08:02:40 +00:00
scottr c35524f0a1 Fix a serious problem in dp8390_write_mbuf(), noticed by Jason Thorpe:
after we've written out the contents of the mbuf, increment the transmit
buffer offset by m->m_len.
1997-11-02 06:18:27 +00:00
thorpej 7438e6c882 Adjust for ifmedia-related changes to dp8390 driver. 1997-11-02 00:25:11 +00:00
thorpej 18636a8934 Add ifmedia support via callbacks to the front-end. 1997-11-02 00:23:54 +00:00
mycroft 74df2cee60 Correct a comment regarding our behaviour with DTR. 1997-11-01 20:40:36 +00:00
mycroft d0df1f96f4 Add additional splserial()s in comopen() and comclose(). These are not
necessary on the i386 port, but may be on others.
1997-11-01 20:31:57 +00:00
mycroft 8475e6c0ba Fix minor omission; write back reg 1 earlier in zsopen(). 1997-11-01 20:23:50 +00:00
mycroft 386d55a1ca Need some additional splzs() in zsopen(), and nuke one that's no longer
needed.
1997-11-01 20:15:10 +00:00
mycroft 8ffb1f6b84 Nuke the special case of heldchange for reg 5. We don't use it for flow
control any more, and the speed of changing DTR isn't really an issue.  Also,
the old code created a bug where zsparam() might have failed to set some
registers.
1997-11-01 18:15:12 +00:00
mycroft 75dc31c41d Yet more changes imported from com driver:
Change the interface to zs_hwiflow(); just have it use zst_rx_blocked.
Make zs_modem() a tiny bit faster.
Do RTS updates immediately; do not allow them to be held.
1997-11-01 17:57:14 +00:00
mycroft eb0f6686d2 Make zst_tba a u_char *. 1997-11-01 17:12:54 +00:00
mycroft 4377152a4b More changes taken from com driver:
Stop output as fast as possible when DCD is deasserted.
Do *not* automatically drop DTR when DCD is deasserted.
Only check for rr0 bits that we care about (DTR and DCD).
1997-11-01 17:09:06 +00:00
mycroft deb1d9f40a GC some unused bits.
Also, part of the previous was copied from the com driver, so DTRT.
1997-11-01 15:59:26 +00:00
mycroft 8008239563 Rearrange open sequence to make sure we catch all line status changes.
Make sure we turn on DTR and/or RTS as appropriate during open.
Rearrange close sequence so the tty is flushed before turning off interrupts.
Deal with `softcar' and the console device by silently asserting CLOCAL and
|HUPCL, as in com driver.
Do *not* fiddle with DTR when changing the line speed.
Make sure we update the tty's carrier status when CLOCAL or MDMBUF is changed.
Only change rr1 when we actually need to turn on or off TIE.
1997-11-01 15:51:23 +00:00
drochner d52df86460 Print probe result after the LCR is restored. Otherwise, bad
things happen if we are the console.
Restore to the prevoius value (not to hardwired 8N1) because this
could be set by the serial console initialization.
Closed PR kern/4373 (Dave Huang)
1997-10-29 18:28:07 +00:00
thorpej 7964d4bd34 When probing for a dp8390 in ne2000_detect(), check for RST being set
in the ISR (from the ISA "ed" driver's generic 8390 probe routine).
Also, add a big comment describing exactly what we're checking when
probing for the dp8390 (also lifted from the ISA "ed" driver).

The RST check should help weed-out non-matches before they get to the
fairly invasive memory check.
1997-10-29 07:57:53 +00:00
thorpej b01dbb214c When creating mscps, be a little more informative about why we couldn't
should creation/initialization of a mscp fail.  Also, don't panic in
these situations.  Instead, simply return an error condition and allow
the caller to deal with it.  It may be the case that we were able to
create one mscp what we can grab, and continue to hobble along.

Also, fix the mscp freelist fencepost error, similar to aha.c and bha.c
1997-10-28 23:46:49 +00:00
thorpej 6e8facbdcc When creating ccbs, be a little more informative about why we couldn't
should creation/initialization of a ccb fail.  Also, don't panic in
these situations.  Instead, simply return an error condition and allow
the caller to deal with it.  It may be the case that we were able to
create one ccb what we can grab, and continue to hobble along.
1997-10-28 23:31:30 +00:00
thorpej 711fc71012 When creating ccbs, be a little more informative about why we couldn't
shoud creation/initialization of a ccb fail.  Also, don't panic in
these situations.  Instead, simply return an error condition and allow
the caller to deal with it.  It may be the case that we were able to
create one ccb what we can grab, and continue to hobble along.
1997-10-28 23:06:21 +00:00
thorpej d1bfbc66c6 Syncronize with changes to aha.c:
Adjust the number of ccbs allocated during initialization.
Every ccb could potentially lock 64k of memory for dma buffers if bounce
buffers are used.  Instead of BHA_CCB_MAX ccbs using 2MByte, only
sc_link.openings ccbs per device are allocated.  Thus we now use only
256KByte per device present.
(hannken)

Fix a couple of errors in bha_create_ccbs():
- Don't ever let the number of CCBs be creater than BHA_CCB_MAX.
- Fix a fencepost that caused the last CCB allocated to never be put
  on the freelist.
(thorpej)
1997-10-28 19:13:36 +00:00
thorpej 1dfae448cd Reply from an INQUIRE DEVICES is a lun map. 1997-10-28 19:08:26 +00:00
thorpej 1bfea0bd23 Fix a couple of errors in aha_create_ccbs():
- Don't ever let the number of CCBs be creater than AHA_CCB_MAX.
- Fix a fencepost that caused the last CCB allocated to never be put
  on the freelist.
1997-10-28 18:40:07 +00:00
bouyer 917389821c Changes to the probe and attach routine:
- at end of attach, explicitely select an existing drive. This fixes hangs
  some users reported (such as the one reported in port-i386/4247).
- Some atapi cdrom drives (e.g. Nec 24x) don't enables their registers before
  a controller reset is issued. The controller probe routine is changed as
  follow: issue a controller reset. If fail, test atapi signature on slave.
  If fail, wait 5s and retry a reset. If the second reset fail, return(0).
  If the first reset succeed, test presence of a master drive:
  atapi signature, and if this fail RO/RW registers test. If no master, test
  atapi signature on slave. If no slave, return 0.
1997-10-27 14:09:23 +00:00
pk 233c534958 Apply patch from Michael L. Hitch (PR#4318):
"A sequence step of 0 after a select with ATN can be a selection
 timeout, or it can also indicate the target did not respond with
 a message out phase.  The latter will occur on very old SCSI
 devices which do not respond to the ATN signal and go directly to
 the command phase".
1997-10-26 16:45:24 +00:00
fvdl 37e4eea4a4 Make 16650 probe optional on COM16650 define. It breaks on some
multiport Startech chips.
1997-10-21 01:25:41 +00:00
is 4a8fcf4aed Dont waste time in delay()s... else we won't finish in time to get our first
lowwatermark interupt for AUDIO_BYPASS data.
1997-10-20 19:07:59 +00:00
is b266316bea Fix pasto in symbolic name for string 1997-10-19 20:46:32 +00:00
christos 7507e6a5e9 Make this compile again. 1997-10-19 20:34:54 +00:00
is eb1b51cac1 tav_write_word -> tav_write_short 1997-10-19 20:21:49 +00:00
mycroft 1bb75c1efa Initialize the IER to 0 in com_attach_subr(). 1997-10-19 20:01:08 +00:00