The Digi Intl. epca driver. 
----------------------------
The Digi Intl. epca driver for Linux supports the following boards:

Digi PC/Xem, PC/Xr, PC/Xe, PC/Xi, PC/Xeve 
Digi EISA/Xem, PCI/Xem, PCI/Xr 

Limitations:
------------
Currently the driver only autoprobes for supported PCI boards. 

The Linux MAKEDEV command does not support generating the Digiboard
Devices.  Users executing digiConfig to setup EISA and PC series cards
will have their device nodes automatically constructed (cud?? for ~CLOCAL,
and ttyD?? for CLOCAL).  Users wishing to boot their board from the LILO
prompt, or those users booting PCI cards may use buildDIGI to construct 
the necessary nodes. 

Notes:
------
This driver may be configured via LILO.  For users who have already configured
their driver using digiConfig, configuring from LILO will override previous 
settings.  Multiple boards may be configured by issuing multiple LILO command 
lines.  For examples see the bottom of this document.

Device names start at 0 and continue up.  Beware of this as previous Digi 
drivers started device names with 1.

PCI boards are auto-detected and configured by the driver.  PCI boards will
be allocated device numbers (internally) beginning with the lowest PCI slot
first.  In other words a PCI card in slot 3 will always have higher device
nodes than a PCI card in slot 1. 

LILO config examples:
---------------------
Using LILO's APPEND command, a string of comma separated identifiers or 
integers can be used to configure supported boards.  The six values in order 
are:

   Enable/Disable this card or Override,
   Type of card: PC/Xe (AccelePort) (0), PC/Xeve (1), PC/Xem or PC/Xr (2), 
                 EISA/Xem (3), PC/64Xe (4), PC/Xi (5), 
   Enable/Disable alternate pin arrangement,
   Number of ports on this card,
   I/O Port where card is configured (in HEX if using string identifiers),
   Base of memory window (in HEX if using string identifiers), 

NOTE : PCI boards are auto-detected and configured.  Do not attempt to 
configure PCI boards with the LILO append command.  If you wish to override
previous configuration data (As set by digiConfig), but you do not wish to
configure any specific card (Example if there are PCI cards in the system) 
the following override command will accomplish this:
-> append="digi=2"

Samples:
   append="digiepca=E,PC/Xe,D,16,200,D0000"
                  or
   append="digi=1,0,0,16,512,851968"

Supporting Tools:
-----------------
Supporting tools include digiDload, digiConfig, buildPCI, and ditty.  See
/usr/src/linux/Documentation/README.epca.dir/user.doc for more details.  Note,
this driver REQUIRES that digiDload be executed prior to it being used. 
Failure to do this will result in an ENODEV error.

The latest version of the tool package is available at:
ftp://ftp.dgii.com/drivers/linux/released/async/

Documentation:
--------------
Complete documentation for this product may be found in the tool package. 

Sources of information and support:
-----------------------------------
Digi Intl. support site for this product:
-> digilnux@dgii.com 

Related information and information concerning other drivers supporting 
Digi Intl. products:

-> FTP: ftp://dgii.com
-> Webpage: http://www.dgii.com
-> Webpage: http://lameter.com/digi

Acknowledgments:
----------------
Much of this work (And even text) was derived from a similar document 
supporting the original public domain DigiBoard driver Copyright (C)
1994,1995 Troy De Jongh.  Many thanks to Christoph Lameter 
(christoph@lameter.com) and Mike McLagan (mike.mclagan@linux.org) who authored 
and contributed to the original document. 
