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 a /etc/modprobe.d/*.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

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


