HAYES ESP DRIVER VERSION 2.1

A big thanks to the people at Hayes, especially Alan Adamson.  Their support
has enabled me to provide enhancements to the driver.

Please report your experiences with this driver to me (arobinso@nyx.net).  I
am looking for both positive and negative feedback.

*** IMPORTANT CHANGES FOR 2.1 ***
Support for PIO mode.  Five situations will cause PIO mode to be used:
1) A multiport card is detected.  PIO mode will always be used.  (8 port cards
do not support DMA).
2) The DMA channel is set to an invalid value (anything other than 1 or 3).
3) The DMA buffer/channel could not be allocated.  The port will revert to PIO
mode until it is reopened.
4) Less than a specified number of bytes need to be transferred to/from the
FIFOs.  PIO mode will be used for that transfer only.
5) A port needs to do a DMA transfer and another port is already using the
DMA channel.  PIO mode will be used for that transfer only.

Since the Hayes ESP seems to conflict with other cards (notably sound cards)
when using DMA, DMA is turned off by default.  To use DMA, it must be turned
on explicitly, either with the "dma=" option described below or with
setserial.  A multiport card can be forced into DMA mode by using setserial;
however, most multiport cards don't support DMA.

The latest version of setserial allows the enhanced configuration of the ESP
card to be viewed and modified.
***

This package contains the files needed to compile a module to support the Hayes
ESP card.  The drivers are basically a modified version of the serial drivers.

Features:

- Uses the enhanced mode of the ESP card, allowing a wider range of
  interrupts and features than compatibility mode
- Uses DMA and 16 bit PIO mode to transfer data to and from the ESP's FIFOs,
  reducing CPU load
- Supports primary and secondary ports


If the driver is compiled as a module, the IRQs to use can be specified by
using the irq= option.  The format is:

irq=[0x100],[0x140],[0x180],[0x200],[0x240],[0x280],[0x300],[0x380]

The address in brackets is the base address of the card.  The IRQ of
nonexistent cards can be set to 0.  If an IRQ of a card that does exist is set
to 0, the driver will attempt to guess at the correct IRQ.  For example, to set
the IRQ of the card at address 0x300 to 12, the insmod command would be:

insmod esp irq=0,0,0,0,0,0,12,0

The custom divisor can be set by using the divisor= option.  The format is the
same as for the irq= option.  Each divisor value is a series of hex digits,
with each digit representing the divisor to use for a corresponding port.  The
divisor value is constructed RIGHT TO LEFT.  Specifying a nonzero divisor value
will automatically set the spd_cust flag.  To calculate the divisor to use for
a certain baud rate, divide the port's base baud (generally 921600) by the
desired rate.  For example, to set the divisor of the primary port at 0x300 to
4 and the divisor of the secondary port at 0x308 to 8, the insmod command would
be:

insmod esp divisor=0,0,0,0,0,0,0x84,0

The dma= option can be used to set the DMA channel.  The channel can be either
1 or 3.  Specifying any other value will force the driver to use PIO mode.
For example, to set the DMA channel to 3, the insmod command would be:

insmod esp dma=3

The rx_trigger= and tx_trigger= options can be used to set the FIFO trigger
levels.  They specify when the ESP card should send an interrupt.  Larger
values will decrease the number of interrupts; however, a value too high may
result in data loss.  Valid values are 1 through 1023, with 768 being the
default.  For example, to set the receive trigger level to 512 bytes and the
transmit trigger level to 700 bytes, the insmod command would be:

insmod esp rx_trigger=512 tx_trigger=700

The flow_off= and flow_on= options can be used to set the hardware flow off/
flow on levels.  The flow on level must be lower than the flow off level, and
the flow off level should be higher than rx_trigger.  Valid values are 1
through 1023, with 1016 being the default flow off level and 944 being the
default flow on level.  For example, to set the flow off level to 1000 bytes
and the flow on level to 935 bytes, the insmod command would be:

insmod esp flow_off=1000 flow_on=935

The rx_timeout= option can be used to set the receive timeout value.  This
value indicates how long after receiving the last character that the ESP card
should wait before signalling an interrupt.  Valid values are 0 though 255,
with 128 being the default.  A value too high will increase latency, and a
value too low will cause unnecessary interrupts.  For example, to set the
receive timeout to 255, the insmod command would be:

insmod esp rx_timeout=255

The pio_threshold= option sets the threshold (in number of characters) for
using PIO mode instead of DMA mode.  For example, if this value is 32,
transfers of 32 bytes or less will always use PIO mode.

insmod esp pio_threshold=32

Multiple options can be listed on the insmod command line by separating each
option with a space.  For example:

insmod esp dma=3 trigger=512

The esp module can be automatically loaded when needed.  To cause this to
happen, add the following lines to /etc/modprobe.conf (replacing the last line
with options for your configuration):

alias char-major-57 esp
alias char-major-58 esp
options esp irq=0,0,0,0,0,0,3,0 divisor=0,0,0,0,0,0,0x4,0

You may also need to run 'depmod -a'.

Devices must be created manually.  To create the devices, note the output from
the module after it is inserted.  The output will appear in the location where
kernel messages usually appear (usually /var/adm/messages).  Create two devices
for each 'tty' mentioned, one with major of 57 and the other with major of 58.
The minor number should be the same as the tty number reported.  The commands
would be (replace ? with the tty number):

mknod /dev/ttyP? c 57 ?
mknod /dev/cup? c 58 ?

For example, if the following line appears:

Oct 24 18:17:23 techno kernel: ttyP8 at 0x0140 (irq = 3) is an ESP primary port

...two devices should be created:

mknod /dev/ttyP8 c 57 8
mknod /dev/cup8 c 58 8

You may need to set the permissions on the devices:

chmod 666 /dev/ttyP*
chmod 666 /dev/cup*

The ESP module and the serial module should not conflict (they can be used at
the same time).  After the ESP module has been loaded the ports on the ESP card
will no longer be accessible by the serial driver.

If I/O errors are experienced when accessing the port, check for IRQ and DMA
conflicts ('cat /proc/interrupts' and 'cat /proc/dma' for a list of IRQs and
DMAs currently in use).

Enjoy!
Andrew J. Robinson <arobinso@nyx.net>
