ZS(4) BSD Programmer's Manual (SPARC Architecture) ZS(4)NAMEzs - Zilog Z8530 (ZSCC) serial port driver
DESCRIPTION
The zs driver supports the built-in Sun serial ports ttya and ttyb, as
well as the console keyboard and mouse (if present). Each chip provides
two ports; the two tty ports are on the first device (zs0) and are there-
fore zs0a and zs0b, while the keyboard and mouse are on the second and
are therefore zs1a and zs1b respectively. The location of the chips
within the hardware varies depending on the Sun model, but both chips are
included in the standard configurations and need not be specified in any
system configuration file.
The initial configuration of the two tty ports is determined by the set-
tings in the boot PROM. There are three strings per port, or six total.
The three for ttya look something like this:
ttya-mode=9600,8,n,1,-
ttya-ignore-cd=true
ttya-rts-dtr-off=false
Those for ttyb are the same, except that they begin with ``ttyb''. The
first string (``mode'') controls the PROM's port speed, bits per charac-
ter, parity, stop bits, and flow control; the second string (ignore-cd)
instructs the PROM whether to act as though the Data Carrier Detect (DCD)
line were permanently on. The third string (rts-dtr-off) appears to have
no effect in the PROM and is currently ignored by the system as well.
The speed may be set to any value up to 307200 bits per second that can
be set within a 4% tolerance by dividing a 307200 Hz clock. This in-
cludes all of the usual values up through 38400 baud (divisor 8); howev-
er, a 57600 bit rate is not available, as the two closest values are
51200 (divisor 6) and 61440 (divisor 5) (these are off by -11% and +6.7%
respectively). The 115200 rate is similarly unavailable. In any case,
the termios(4) interface must be used to set non-traditional speeds, and
the PROM itself may not support anything higher than 38400 baud.
The bits per character in the ``mode'' string may be any value between 5
and 8. The parity should be one of the letters ``e'', ``o'', or ``n''
for even, odd, or no parity respectively. The stop bits value can be ei-
ther 1 or 2; the system does not support 1.5 stop bits per character.
The flow control parameter can be either of the letters ``h'' or ``s''
for hardware (RTS/CTS) and software (XON/XOFF) flow control, or a hyphen
``-'' (or even absent) for no flow control. In any case, these parame-
ters affect only the initial (first-open) state of the port; any program
can override all of these parameters via the termios(4) interface.
An open on the zs driver will block until carrier is present, unless
O_NONBLOCK or CLOCAL is set. If the port's ``ignore-cd'' parameter is
set to ``true'', however, the system will act as though carrier were al-
ways present; this parameter should be set to ``false'' (and the machine
rebooted) to use a modem on one of these ports.
FILES
/dev/ttya
/dev/ttyb
BUGS
The hardware has only a two-character receive FIFO per port; this is eas-
ily overrun. In order to compensate for this, serial port interrupts are
given a very high priority. The hardware interrupt handler transfers da-
ta to a software buffer. Thus, there are two possible buffers to over-
flow: the hardware "fifo" and the software "ring buffer". A message of
the form:
zs0a: fifo overrun
indicates the former, while one of the form:
zs0a: ring buffer overrun
indicates the latter. RTS/CTS ``hardware'' flow control must actually be
implemented in software; RTS flow control will help prevent ring buffer
overruns, but not fifo overruns. CTS flow control should prevent output
overruns, however, since output is also run entirely from software.
Because of the interrupt-per-character nature of the ZSCC, high speed se-
rial port data transfers can add a noticeable computing load.
SEE ALSOtermios(4), eeprom(8), getty(8)HISTORY
The initial version of the zs driver was written at Lawrence Berkeley
Laboratories. Since then, extensive revisions were made by BSDI, incor-
porating some ideas from NetBSD.
BSDI BSD/OS January 6, 1998 2