================================================
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
