Comtrol(tm) RocketPort(R)/RocketModem(TM) Series 
Device Driver for the Linux Operating System

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

PRODUCT OVERVIEW
----------------

This driver provides a loadable kernel driver for the Comtrol RocketPort
and RocketModem PCI boards. These boards provide, 2, 4, 8, 16, or 32 
high-speed serial ports or modems.  This driver supports up to a combination
of four RocketPort or RocketModems boards in one machine simultaneously.
This file assumes that you are using the RocketPort driver which is
integrated into the kernel sources.  

The driver can also be installed as an external module using the usual 
"make;make install" routine.  This external module driver, obtainable 
from the Comtrol website listed below, is useful for updating the driver
or installing it into kernels which do not have the driver configured
into them.  Installations instructions for the external module
are in the included README and HW_INSTALL files.

RocketPort ISA and RocketModem II PCI boards currently are only supported by
this driver in module form.

The RocketPort ISA board requires I/O ports to be configured by the DIP
switches on the board.  See the section "ISA Rocketport Boards" below for
information on how to set the DIP switches.

You pass the I/O port to the driver using the following module parameters:

board1 :	I/O port for the first ISA board
board2 :	I/O port for the second ISA board
board3 :	I/O port for the third ISA board
board4 :	I/O port for the fourth ISA board

There is a set of utilities and scripts provided with the external driver
( downloadable from http://www.comtrol.com ) that ease the configuration and
setup of the ISA cards.

The RocketModem II PCI boards require firmware to be loaded into the card
before it will function.  The driver has only been tested as a module for this
board.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

INSTALLATION PROCEDURES
-----------------------

RocketPort/RocketModem PCI cards require no driver configuration, they are 
automatically detected and configured.

The RocketPort driver can be installed as a module (recommended) or built 
into the kernel. This is selected, as for other drivers, through the `make config`
command from the root of the Linux source tree during the kernel build process. 

The RocketPort/RocketModem serial ports installed by this driver are assigned
device major number 46, and will be named /dev/ttyRx, where x is the port number 
starting at zero (ex. /dev/ttyR0, /devttyR1, ...).  If you have multiple cards
installed in the system, the mapping of port names to serial ports is displayed
in the system log at /var/log/messages.

If installed as a module, the module must be loaded.  This can be done
manually by entering "modprobe rocket".  To have the module loaded automatically
upon system boot, edit the /etc/modprobe.conf file and add the line
"alias char-major-46 rocket".

In order to use the ports, their device names (nodes) must be created with mknod.
This is only required once, the system will retain the names once created.  To 
create the RocketPort/RocketModem device names, use the command 
"mknod /dev/ttyRx c 46 x" where x is the port number starting at zero.  For example:

>mknod /dev/ttyR0 c 46 0
>mknod /dev/ttyR1 c 46 1
>mknod /dev/ttyR2 c 46 2  

The Linux script MAKEDEV will create the first 16 ttyRx device names (nodes)
for you:

>/dev/MAKEDEV ttyR

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

ISA Rocketport Boards
---------------------

You must assign and configure the I/O addresses used by the ISA Rocketport
card before installing and using it.  This is done by setting a set of DIP
switches on the Rocketport board.


SETTING THE I/O ADDRESS
-----------------------

Before installing RocketPort(R) or RocketPort RA boards, you must find
a range of I/O addresses for it to use. The first RocketPort card
requires a 68-byte contiguous block of I/O addresses, starting at one
of the following: 0x100h, 0x140h, 0x180h, 0x200h, 0x240h, 0x280h,
0x300h, 0x340h, 0x380h.  This I/O address must be reflected in the DIP
switches of *all* of the Rocketport cards.

The second, third, and fourth RocketPort cards require a 64-byte
contiguous block of I/O addresses, starting at one of the following
I/O addresses: 0x100h, 0x140h, 0x180h, 0x1C0h, 0x200h, 0x240h, 0x280h,
0x2C0h, 0x300h, 0x340h, 0x380h, 0x3C0h.  The I/O address used by the
second, third, and fourth Rocketport cards (if present) are set via
software control.  The DIP switch settings for the I/O address must be
set to the value of the first Rocketport cards.

In order to distinguish each of the card from the others, each card
must have a unique board ID set on the dip switches.  The first
Rocketport board must be set with the DIP switches corresponding to
the first board, the second board must be set with the DIP switches
corresponding to the second board, etc.  IMPORTANT: The board ID is
the only place where the DIP switch settings should differ between the
various Rocketport boards in a system.

The I/O address range used by any of the RocketPort cards must not
conflict with any other cards in the system, including other
RocketPort cards.  Below, you will find a list of commonly used I/O
address ranges which may be in use by other devices in your system.
On a Linux system, "cat /proc/ioports" will also be helpful in
identifying what I/O addresses are being used by devices on your
system.

Remember, the FIRST RocketPort uses 68 I/O addresses.  So, if you set it
for 0x100, it will occupy 0x100 to 0x143.  This would mean that you
CAN NOT set the second, third or fourth board for address 0x140 since
the first 4 bytes of that range are used by the first board.  You would
need to set the second, third, or fourth board to one of the next available
blocks such as 0x180.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

RocketPort and RocketPort RA SW1 Settings:

          +-------------------------------+
          | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
          +-------+-------+---------------+
          | Unused| Card  | I/O Port Block|
          +-------------------------------+

DIP Switches                             DIP Switches
7    8                                   6    5
===================                      ===================
On   On   UNUSED, MUST BE ON.            On   On   First Card    <==== Default
                                         On   Off  Second Card
                                         Off  On   Third Card
                                         Off  Off  Fourth Card

DIP Switches         I/O Address Range
4    3    2    1     Used by the First Card
=====================================
On   Off  On   Off   100-143
On   Off  Off  On    140-183
On   Off  Off  Off   180-1C3       <==== Default
Off  On   On   Off   200-243
Off  On   Off  On    240-283
Off  On   Off  Off   280-2C3
Off  Off  On   Off   300-343
Off  Off  Off  On    340-383
Off  Off  Off  Off   380-3C3

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

REPORTING BUGS
--------------

For technical support, please provide the following
information: Driver version, kernel release, distribution of
kernel, and type of board you are using. Error messages and log
printouts port configuration details are especially helpful.

USA
    Phone: (612) 494-4100
      FAX: (612) 494-4199
    email: support@comtrol.com

Comtrol Europe
    Phone: +44 (0) 1 869 323-220
      FAX: +44 (0) 1 869 323-211
    email: support@comtrol.co.uk

Web:	http://www.comtrol.com
FTP:	ftp.comtrol.com

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


