se_hdlc(7D)
NAME
se_hdlc - on-board high-performance serial HDLC interface
SYNOPSIS
se@bus_address:port_number[, hdlc]
DESCRIPTION
The se_hdlc devices are a synchronous hdlc-framing interface
for the se serial devices. Both built-in serial ports
(port_number) on platforms which have the se serial dev-
ices, support synchronous data transfer at a maximum rate of
384 kbps. bus_address is the platform specific se device
bus address. port_number is a single digit number (0-9).
APPLICATION PROGRAMMING INTERFACE
The se_hdlcn devices provide a data path which supports the
transfer of data via read(2) and write(2) system calls, as
well as ioctl(2) calls. Data path opens are exclusive in
order to protect against injection or diversion of data by
another process.
The se_hdlc device provides a separate control path for use
by programs that need to configure or monitor a connection
independent of any exclusive access restrictions imposed by
data path opens. Up to three control paths may be active on
a particular serial channel at any one time. Control path
accesses are restricted to ioctl(2) calls only; no data
transfer is possible.
When used in synchronous modes, the SAB 82532 ESCC supports
several options for clock sourcing and data encolding. Both
the transmit and receive clock sources can be set to be the
external Transmit clock (TRxC), external Receive Clock
(RTxC), the internal Baud Rate Generator (BRG), or the out-
put of the ESCC 's Digital Phase-Lock Loop (DPLL).
The BRG is a programmable divisor that derives a clock fre-
quency from the PCLK input signal to the ESCC. The pro-
grammed baud rate is translated into a floating point (6-
bit mantissa, 4-bit exponent) number time constant that is
stored in the ESCC.
A local loopback mode is available, primarily for use by
syncloop(1M) for testing purposes, and should not be con-
fused with SDLC loop mode, which is not supported on this
interface. Also, an auto-echo feature may be selected that
causes all incoming data to be routed to the transmit data
line, allowing the port to act as the remote end of a digi-
tal loop. Neither of these options should be selected casu-
ally, or left in use when not needed.
The se driver keeps running totals of various hardware gen-
erated events for each channel. These include numbers of
packets and characters sent and received, abort conditions
detected by the receiver, receive CRC errors, transmit
underruns, receive overruns, input errors and output
errors, and message block allocation failures. Input errors
are logged whenever an incoming message must be discarded,
such as when an abort or CRC error is detected, a receive
overrun occurs, or when no message block is available to
store incoming data. Output errors are logged when the data
must be discarded due to underruns, CTS drops during
transmission, CTS timeouts, or excessive watchdog timeouts
caused by a cable break.
IOCTLS
The se driver supports the following ioctl() commands.
S_IOCGETMODE
Return a struct scc_mode containing parameters
currently in use. These include the transmit and
receive clock sources, boolean loopback and NRZI mode
flags and the integer baud rate.
S_IOCSETMODE
The argument is a struct scc_mode from which the ESCC
channel will be programmed.
S_IOCGETSTATS
Return a struct sl_stats containing the current totals
of hardware-generated events.
These include numbers of packets and characters sent
and received by the driver, aborts and CRC errors
detected, transmit underruns, and receive overruns.
S_IOCCLRSTATS
Clear the hardware statistics for this channel.
S_IOCGETSPEED
Returns the currently set baud rate as an integer.
This may not reflect the actual data transfer rate if
external clocks are used.
S_IOCGETMCTL
Returns the current state of the CTS and DCD incoming
modem interface signals as an integer.
The following structures are used with se hdlc ioctl() com-
mands:
struct scc_mode {
char sm_txclock; /* transmit clock sources */
char sm_rxclock; /* receive clock sources */
char sm_iflags; /* data and clock inversion flags (non-zsh) */
uchar_t sm_config; /* boolean configuration options */
int sm_baudrate; /* real baud rate */
int sm_retval; /* reason codes for ioctl failures */
};
struct sl_stats {
long ipack; /* input packets */
long opack; /* output packets */
long ichar; /* input bytes */
long ochar; /* output bytes */
long abort; /* abort received */
long crc; /* CRC error */
long cts; /* CTS timeouts */
long dcd; /* Carrier drops */
long overrun; /* receive overrun */
long underrun; /* transmit underrun */
long ierror; /* input error */
long oerror; /* output error */
long nobuffers; /* receive side memory allocation failure */
};
ERRORS
An open() will fail if a STREAMS message block cannot be
allocated or under the following conditions:
ENXIO The unit being opened does not exist.
EBUSY The device is in use by another serial protocol.
An ioctl() will fail under the following conditions:
EINVAL
An attempt was made to select an invalid clocking
source.
EINVAL
The baud rate specified for use with the baud
rate generator would translate to a null time
constant in the ESCC's registers.
FILES
/dev/se_hdlc[0-1], /dev/se_hdlc
character-special devices
/usr/include/sys/ser_sync.h
header file specifying synchronous serial communica-
tion definitions
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Architecture | SPARC |
|_____________________________|_____________________________|
SEE ALSO
syncinit(1M), syncloop(1M), syncstat(1M), ioctl(2), open(2),
read(2), write(2), attributes(5), se(7D), zsh(7D)
Siemens ESCC2 SAB 82532 Enhanced Serial Communication Con-
troller User's Manual
DIAGNOSTICS
se_hdlc clone open failed, no memory, rq=nnn
A kernel memory allocation failed for one of the
private data structures. The value of nnn is the
address of the read queue passed to open(2).
se_hdlc: clone device must be attached before use!
An operation was attempted through a control path
before that path had been attached to a particular
serial channel.
se_hdlcn: not initialized, can't send message
An M_DATA message was passed to the driver for a chan-
nel that had not been programmed at least once since
the driver was loaded. The ESCC's registers were in
an unknown state. The S_IOCSETMODE ioctl command per-
forms the programming operation.
sen hdlc_start: Invalid message type d on write queue
driver received an invalid message type from streams.
se_hdlcn: transmit hung
The transmitter was not successfully restarted after
the watchdog timer expired. This is usually caused by
a bad or disconnected cable.
Man(1) output converted with
man2html