summaryrefslogtreecommitdiffstats
path: root/Documentation/digiboard.txt
blob: 0a49a427f52e3b71eb14ce2679d18120ba18982a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
The Linux Digiboard Driver
--------------------------

The Digiboard Driver for Linux supports the following boards:

 DigiBoard PC/Xi, PC/Xe, PC/Xeve(which is the newer, smaller Xe with
 a 8K window which is also known as PC/Xe(8K) and has no memory/irq
 switches) You can use up to 4 cards with this driver and should work
 on other architectures than intel also.

In case you have problems with this version(1.6.1) of this driver, please
email directly to me as I made the last update. It you have a report about
runnning it on other architectures than intel, email me, so I can document
it here.

An version of this driver has been taken by Digiboard to make a driver
software package which supports also PC/Xem cards and newer PCI cards
but it don't support the old PC/Xi cards and it isn't yet ported to
linux-2.1.x and may not be useable on other architectures than intel now.
It is available from ftp.digi.com/ftp.digiboard.com. You can write me if
you need an patch for this driver.

  Bernhard Kaindl (bkaindl@netway.at)  6. April 1997.

Configuring the Driver
----------------------

The driver can be build direct into the kernel or as module.
The pcxx driver can be configured using the command line feature while
loading the kernel with LILO or LOADLIN or, if built as a module,
with arguments to insmod and modprobe or with parameters in
/etc/conf.modules for modprobe and kerneld.

After configuring the driver you need to create the device special files
as described in "Device file creation:" below and set the appropriate
permissions for your application.

As Module
---------

modprobe pcxx io=<io> \
  membase=<membase> \
  memsize=<memsize> \
  numports=<numports>  \
  altpin=<altpin> \
  verbose=<verbose>

or, if several cards are installed

modprobe pcxx io=<io-1>,<io-2>,... \
  membase=<membase-1>,<membase-2>,... \
  memsize=<memsize-1>,<memsize-2>,... \
  numports=<numports-1>,<numports-2>,... \
  altpin=<altpin-1>,<altpin-2>,... \
  verbose=<verbose>

where <io-N> is the io address of the Nth card and <membase-N> is the
memory base address of the Nth card, etc.

The parameters can be specified in any order. For example, the numports
parameter can precede the membase parameter, or vice versa. If several
cards are installed the ordering within the comma separated parameter
lists must be consistent, of course.

io       - I/O port address of that card.
membase  - Memory start address of that card.
memsize  - Memory size of that card, in kilobytes. If given, this value
           is compared against the card to verify configuration and
           hinder the driver to use a misconfigured card. If the parameter
           does not match the board it is disabled with a memory size error.
numports - Number of ports on this card. This is the number of devices to
           assign to this card or reserve if disabled.
altpin   - 1: swap DCD and DSR for 8-pin RJ-45 with modems.
	   0: don't swap DCD and DSR.
           other values count as 1.
verbose  - 1: give nice verbose output during initialisation of the driver.
              possibly helpful during board configuration.
           0: normal terse output.

Only the parameters which differ from the defaults need to be specified.
If the io= parameter is not given, the default config is used. This is

  io=0x200 membase=0xD0000 numports=16 altpin=0

Only parameters applicable need be specified. For example to configure
2 boards, first one at 0x200 with 8 ports, rest defaults, second one at
0x120, memory at 0xD80000, altpin enabled, rest defaults, you can do this
by using these parameters:

  modprobe pcxx io=0x200,0x120 numports=8,8 membase=,0xD80000 altpin=,1

To disable a temporary unuseable board without changing the mapping of the
devices following that board, you can empty the io-value for that board:

  modprobe pcxx io=,0x120 numports=8,8 membase=,0xD80000 altpin=,1

The remainig board still uses ttyD8-ttyD15 and cud8-cud15.

Example line for /etc/conf.modules for use with kerneld and as default
parameters for modprobe:

options pcxx           io=0x200 numports=8

For kerneld to work you will likely need to add these two lines to your
/etc/conf.modules:

alias char-major-22    pcxx
alias char-major-23    pcxx


Boot-time configuration when linked into the kernel
---------------------------------------------------

Per Board to be configured, pass a digi= commandline parameter to the
kernel using lilo or loadlin. It consists of a string of comma separated
identifiers or integers.  The 6 values in order are:

Card status:      Enable      - use that board
		  Disable     - don't actually use that board.

Card type:        PC/Xi       - the old ones with 64/128/256/512K RAM.
		  PC/Xe       - PC/Xe(old ones with 64k mem range).
		  PC/Xeve     - PC/Xe(newers with 8k mem range).

Note: This is for documentation only, the type is detected from the board.

Altpin setting:   Enable      - swap DCD and DSR for 8-pin RJ-45 with modems.
		  Disable     - don't swap DCD and DSR.

Number of ports:  1 ... 16    - Number of ports on this card. This is the
				number of devices to assign to this card.

I/O port address: eg. 200     - I/O Port address where the card is configured.

Memory base addr: eg. 80000   - Memory address where the board's memory starts.

This is an example for a line which you can insert into you lilo.conf:

   append="digi=Enable,PC/Xi,Disable,4,120,D0000"

there is an alternate form, in which you must use decimal values only:

   append="digi=1,0,0,16,512,851968"

If you don't give a digi= commandline, the compiled-in defaults of
board 1: io=0x200, membase=0xd0000, altpin=off and numports=16 are used.

If you have the resources (io&mem) free for use, configure your board to
these settings and you should be set up fine even if yours has not 16 ports.


Sources of Information
----------------------

Webpage: http://private.fuller.edu/clameter/digi.html

Mailing List: digiboard@list.fuller.edu

(Write e-mail to that address to subscribe. Common ListServ commands work.
Archive of messages available)

Christoph Lameter (clameter@fuller.edu) 16. April 1996.

Supporting Tools
----------------

Some tools and more detailed information can be found at
ftp://ftp.fuller.edu/Linux/digi

The "ditty" tool described in the Digiboard Manuals for other Unixes
is also available.


Device file creation
--------------------

Currently the Linux MAKEDEV command does not support generating the Digiboard
Devices. 

The /dev/cud devices behave like the /dev/cua devices
and the ttyD devices are like the /dev/ttyS devices.

Use the following script to generate the devices:

------------------ mkdigidev begin
#!/bin/sh
#
# Script to create Digiboard Devices
# Christoph Lameter, April 16, 1996
#
# Usage:
# mkdigidev [<number of devices>]
# 

DIGI_MAJOR=23
DIGICU_MAJOR=22

BOARDS=$1

if [ "$BOARDS" = "" ]; then
BOARDS=1
fi

boardnum=0
while [ $boardnum -lt $BOARDS ];
do
  for c in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15;
  do
	name=`expr $boardnum \* 16 + $c`
	mknod /dev/cud$name c $DIGICU_MAJOR $name
	mknod /dev/ttyD$name c $DIGI_MAJOR $name
  done
  boardnum=`expr $boardnum + 1`
done
------------------ mkdigidev end

or apply the following patch to /dev/MAKEDEV and do a 
sh /dev/MAKEDEV digi

----- MAKEDEV Patch
--- /dev/MAKEDEV	Sun Aug 13 15:48:23 1995
+++ MAKEDEV	Tue Apr 16 17:53:27 1996
@@ -120,7 +120,7 @@
 	while [ $# -ne 0 ]
 	do
 		case "$1" in
-			mem|tty|ttyp|cua|cub)	;;
+			mem|tty|ttyp|cua|cub|cud)	;;
 			hd)	echo hda hdb hdc hdd ;;
 			xd)	echo xda xdb ;;
 			fd)	echo fd0 fd1 ;;
@@ -140,6 +140,7 @@
 			dcf)		echo dcf ;;
 			pcmcia)	;; # taken care of by its own driver
 			ttyC)	echo cyclades ;;
+			ttyD)	echo digi ;;
 			*)	echo "$0: don't know what \"$1\" is" >&2 ;;
 		esac
 		shift
@@ -208,6 +209,15 @@
 		do
 			makedev ttyC$i c $major1 `expr 32 + $i` $tty
 			makedev cub$i c $major2 `expr 32 + $i` $dialout
+		done
+		;;
+	digi)
+		major1=`Major ttyD` || continue
+		major2=`Major cud` || continue
+		for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+		do
+			makedev ttyD$i c $major1 `expr 32 + $i` $tty
+			makedev cud$i c $major2 `expr 32 + $i` $dialout
 		done
 		;;
 	par[0-2])
----- End Makedev patch