xref: /OK3568_Linux_fs/kernel/Documentation/driver-api/serial/rocket.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun================================================
2*4882a593SmuzhiyunComtrol(tm) RocketPort(R)/RocketModem(TM) Series
3*4882a593Smuzhiyun================================================
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunDevice Driver for the Linux Operating System
6*4882a593Smuzhiyun============================================
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunProduct overview
9*4882a593Smuzhiyun----------------
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunThis driver provides a loadable kernel driver for the Comtrol RocketPort
12*4882a593Smuzhiyunand RocketModem PCI boards. These boards provide, 2, 4, 8, 16, or 32
13*4882a593Smuzhiyunhigh-speed serial ports or modems.  This driver supports up to a combination
14*4882a593Smuzhiyunof four RocketPort or RocketModems boards in one machine simultaneously.
15*4882a593SmuzhiyunThis file assumes that you are using the RocketPort driver which is
16*4882a593Smuzhiyunintegrated into the kernel sources.
17*4882a593Smuzhiyun
18*4882a593SmuzhiyunThe driver can also be installed as an external module using the usual
19*4882a593Smuzhiyun"make;make install" routine.  This external module driver, obtainable
20*4882a593Smuzhiyunfrom the Comtrol website listed below, is useful for updating the driver
21*4882a593Smuzhiyunor installing it into kernels which do not have the driver configured
22*4882a593Smuzhiyuninto them.  Installations instructions for the external module
23*4882a593Smuzhiyunare in the included README and HW_INSTALL files.
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunRocketPort ISA and RocketModem II PCI boards currently are only supported by
26*4882a593Smuzhiyunthis driver in module form.
27*4882a593Smuzhiyun
28*4882a593SmuzhiyunThe RocketPort ISA board requires I/O ports to be configured by the DIP
29*4882a593Smuzhiyunswitches on the board.  See the section "ISA Rocketport Boards" below for
30*4882a593Smuzhiyuninformation on how to set the DIP switches.
31*4882a593Smuzhiyun
32*4882a593SmuzhiyunYou pass the I/O port to the driver using the following module parameters:
33*4882a593Smuzhiyun
34*4882a593Smuzhiyunboard1:
35*4882a593Smuzhiyun	I/O port for the first ISA board
36*4882a593Smuzhiyunboard2:
37*4882a593Smuzhiyun	I/O port for the second ISA board
38*4882a593Smuzhiyunboard3:
39*4882a593Smuzhiyun	I/O port for the third ISA board
40*4882a593Smuzhiyunboard4:
41*4882a593Smuzhiyun	I/O port for the fourth ISA board
42*4882a593Smuzhiyun
43*4882a593SmuzhiyunThere is a set of utilities and scripts provided with the external driver
44*4882a593Smuzhiyun(downloadable from http://www.comtrol.com) that ease the configuration and
45*4882a593Smuzhiyunsetup of the ISA cards.
46*4882a593Smuzhiyun
47*4882a593SmuzhiyunThe RocketModem II PCI boards require firmware to be loaded into the card
48*4882a593Smuzhiyunbefore it will function.  The driver has only been tested as a module for this
49*4882a593Smuzhiyunboard.
50*4882a593Smuzhiyun
51*4882a593SmuzhiyunInstallation Procedures
52*4882a593Smuzhiyun-----------------------
53*4882a593Smuzhiyun
54*4882a593SmuzhiyunRocketPort/RocketModem PCI cards require no driver configuration, they are
55*4882a593Smuzhiyunautomatically detected and configured.
56*4882a593Smuzhiyun
57*4882a593SmuzhiyunThe RocketPort driver can be installed as a module (recommended) or built
58*4882a593Smuzhiyuninto the kernel. This is selected, as for other drivers, through the `make config`
59*4882a593Smuzhiyuncommand from the root of the Linux source tree during the kernel build process.
60*4882a593Smuzhiyun
61*4882a593SmuzhiyunThe RocketPort/RocketModem serial ports installed by this driver are assigned
62*4882a593Smuzhiyundevice major number 46, and will be named /dev/ttyRx, where x is the port number
63*4882a593Smuzhiyunstarting at zero (ex. /dev/ttyR0, /devttyR1, ...).  If you have multiple cards
64*4882a593Smuzhiyuninstalled in the system, the mapping of port names to serial ports is displayed
65*4882a593Smuzhiyunin the system log at /var/log/messages.
66*4882a593Smuzhiyun
67*4882a593SmuzhiyunIf installed as a module, the module must be loaded.  This can be done
68*4882a593Smuzhiyunmanually by entering "modprobe rocket".  To have the module loaded automatically
69*4882a593Smuzhiyunupon system boot, edit a `/etc/modprobe.d/*.conf` file and add the line
70*4882a593Smuzhiyun"alias char-major-46 rocket".
71*4882a593Smuzhiyun
72*4882a593SmuzhiyunIn order to use the ports, their device names (nodes) must be created with mknod.
73*4882a593SmuzhiyunThis is only required once, the system will retain the names once created.  To
74*4882a593Smuzhiyuncreate the RocketPort/RocketModem device names, use the command
75*4882a593Smuzhiyun"mknod /dev/ttyRx c 46 x" where x is the port number starting at zero.
76*4882a593Smuzhiyun
77*4882a593SmuzhiyunFor example::
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun	> mknod /dev/ttyR0 c 46 0
80*4882a593Smuzhiyun	> mknod /dev/ttyR1 c 46 1
81*4882a593Smuzhiyun	> mknod /dev/ttyR2 c 46 2
82*4882a593Smuzhiyun
83*4882a593SmuzhiyunThe Linux script MAKEDEV will create the first 16 ttyRx device names (nodes)
84*4882a593Smuzhiyunfor you::
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun	>/dev/MAKEDEV ttyR
87*4882a593Smuzhiyun
88*4882a593SmuzhiyunISA Rocketport Boards
89*4882a593Smuzhiyun---------------------
90*4882a593Smuzhiyun
91*4882a593SmuzhiyunYou must assign and configure the I/O addresses used by the ISA Rocketport
92*4882a593Smuzhiyuncard before installing and using it.  This is done by setting a set of DIP
93*4882a593Smuzhiyunswitches on the Rocketport board.
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun
96*4882a593SmuzhiyunSetting the I/O address
97*4882a593Smuzhiyun-----------------------
98*4882a593Smuzhiyun
99*4882a593SmuzhiyunBefore installing RocketPort(R) or RocketPort RA boards, you must find
100*4882a593Smuzhiyuna range of I/O addresses for it to use. The first RocketPort card
101*4882a593Smuzhiyunrequires a 68-byte contiguous block of I/O addresses, starting at one
102*4882a593Smuzhiyunof the following: 0x100h, 0x140h, 0x180h, 0x200h, 0x240h, 0x280h,
103*4882a593Smuzhiyun0x300h, 0x340h, 0x380h.  This I/O address must be reflected in the DIP
104*4882a593Smuzhiyunswitches of *all* of the Rocketport cards.
105*4882a593Smuzhiyun
106*4882a593SmuzhiyunThe second, third, and fourth RocketPort cards require a 64-byte
107*4882a593Smuzhiyuncontiguous block of I/O addresses, starting at one of the following
108*4882a593SmuzhiyunI/O addresses: 0x100h, 0x140h, 0x180h, 0x1C0h, 0x200h, 0x240h, 0x280h,
109*4882a593Smuzhiyun0x2C0h, 0x300h, 0x340h, 0x380h, 0x3C0h.  The I/O address used by the
110*4882a593Smuzhiyunsecond, third, and fourth Rocketport cards (if present) are set via
111*4882a593Smuzhiyunsoftware control.  The DIP switch settings for the I/O address must be
112*4882a593Smuzhiyunset to the value of the first Rocketport cards.
113*4882a593Smuzhiyun
114*4882a593SmuzhiyunIn order to distinguish each of the card from the others, each card
115*4882a593Smuzhiyunmust have a unique board ID set on the dip switches.  The first
116*4882a593SmuzhiyunRocketport board must be set with the DIP switches corresponding to
117*4882a593Smuzhiyunthe first board, the second board must be set with the DIP switches
118*4882a593Smuzhiyuncorresponding to the second board, etc.  IMPORTANT: The board ID is
119*4882a593Smuzhiyunthe only place where the DIP switch settings should differ between the
120*4882a593Smuzhiyunvarious Rocketport boards in a system.
121*4882a593Smuzhiyun
122*4882a593SmuzhiyunThe I/O address range used by any of the RocketPort cards must not
123*4882a593Smuzhiyunconflict with any other cards in the system, including other
124*4882a593SmuzhiyunRocketPort cards.  Below, you will find a list of commonly used I/O
125*4882a593Smuzhiyunaddress ranges which may be in use by other devices in your system.
126*4882a593SmuzhiyunOn a Linux system, "cat /proc/ioports" will also be helpful in
127*4882a593Smuzhiyunidentifying what I/O addresses are being used by devices on your
128*4882a593Smuzhiyunsystem.
129*4882a593Smuzhiyun
130*4882a593SmuzhiyunRemember, the FIRST RocketPort uses 68 I/O addresses.  So, if you set it
131*4882a593Smuzhiyunfor 0x100, it will occupy 0x100 to 0x143.  This would mean that you
132*4882a593SmuzhiyunCAN NOT set the second, third or fourth board for address 0x140 since
133*4882a593Smuzhiyunthe first 4 bytes of that range are used by the first board.  You would
134*4882a593Smuzhiyunneed to set the second, third, or fourth board to one of the next available
135*4882a593Smuzhiyunblocks such as 0x180.
136*4882a593Smuzhiyun
137*4882a593SmuzhiyunRocketPort and RocketPort RA SW1 Settings::
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun            +-------------------------------+
140*4882a593Smuzhiyun            | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
141*4882a593Smuzhiyun            +-------+-------+---------------+
142*4882a593Smuzhiyun            | Unused| Card  | I/O Port Block|
143*4882a593Smuzhiyun            +-------------------------------+
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun  DIP Switches                             DIP Switches
146*4882a593Smuzhiyun  7    8                                   6    5
147*4882a593Smuzhiyun  ===================                      ===================
148*4882a593Smuzhiyun  On   On   UNUSED, MUST BE ON.            On   On   First Card    <==== Default
149*4882a593Smuzhiyun                                           On   Off  Second Card
150*4882a593Smuzhiyun                                           Off  On   Third Card
151*4882a593Smuzhiyun                                           Off  Off  Fourth Card
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun  DIP Switches         I/O Address Range
154*4882a593Smuzhiyun  4    3    2    1     Used by the First Card
155*4882a593Smuzhiyun  =====================================
156*4882a593Smuzhiyun  On   Off  On   Off   100-143
157*4882a593Smuzhiyun  On   Off  Off  On    140-183
158*4882a593Smuzhiyun  On   Off  Off  Off   180-1C3       <==== Default
159*4882a593Smuzhiyun  Off  On   On   Off   200-243
160*4882a593Smuzhiyun  Off  On   Off  On    240-283
161*4882a593Smuzhiyun  Off  On   Off  Off   280-2C3
162*4882a593Smuzhiyun  Off  Off  On   Off   300-343
163*4882a593Smuzhiyun  Off  Off  Off  On    340-383
164*4882a593Smuzhiyun  Off  Off  Off  Off   380-3C3
165*4882a593Smuzhiyun
166*4882a593SmuzhiyunReporting Bugs
167*4882a593Smuzhiyun--------------
168*4882a593Smuzhiyun
169*4882a593SmuzhiyunFor technical support, please provide the following
170*4882a593Smuzhiyuninformation: Driver version, kernel release, distribution of
171*4882a593Smuzhiyunkernel, and type of board you are using. Error messages and log
172*4882a593Smuzhiyunprintouts port configuration details are especially helpful.
173*4882a593Smuzhiyun
174*4882a593SmuzhiyunUSA:
175*4882a593Smuzhiyun    :Phone: (612) 494-4100
176*4882a593Smuzhiyun    :FAX: (612) 494-4199
177*4882a593Smuzhiyun    :email: support@comtrol.com
178*4882a593Smuzhiyun
179*4882a593SmuzhiyunComtrol Europe:
180*4882a593Smuzhiyun    :Phone: +44 (0) 1 869 323-220
181*4882a593Smuzhiyun    :FAX: +44 (0) 1 869 323-211
182*4882a593Smuzhiyun    :email: support@comtrol.co.uk
183*4882a593Smuzhiyun
184*4882a593SmuzhiyunWeb:	http://www.comtrol.com
185*4882a593SmuzhiyunFTP:	ftp.comtrol.com
186