diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/computone.txt |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/computone.txt')
-rw-r--r-- | Documentation/computone.txt | 588 |
1 files changed, 588 insertions, 0 deletions
diff --git a/Documentation/computone.txt b/Documentation/computone.txt new file mode 100644 index 000000000000..b1cf59b84d97 --- /dev/null +++ b/Documentation/computone.txt | |||
@@ -0,0 +1,588 @@ | |||
1 | NOTE: This is an unmaintained driver. It is not guaranteed to work due to | ||
2 | changes made in the tty layer in 2.6. If you wish to take over maintenance of | ||
3 | this driver, contact Michael Warfield <mhw@wittsend.com>. | ||
4 | |||
5 | Changelog: | ||
6 | ---------- | ||
7 | 11-01-2001: Original Document | ||
8 | |||
9 | 10-29-2004: Minor misspelling & format fix, update status of driver. | ||
10 | James Nelson <james4765@gmail.com> | ||
11 | |||
12 | Computone Intelliport II/Plus Multiport Serial Driver | ||
13 | ----------------------------------------------------- | ||
14 | |||
15 | Release Notes For Linux Kernel 2.2 and higher. | ||
16 | These notes are for the drivers which have already been integrated into the | ||
17 | kernel and have been tested on Linux kernels 2.0, 2.2, 2.3, and 2.4. | ||
18 | |||
19 | Version: 1.2.14 | ||
20 | Date: 11/01/2001 | ||
21 | Historical Author: Andrew Manison <amanison@america.net> | ||
22 | Primary Author: Doug McNash | ||
23 | Support: support@computone.com | ||
24 | Fixes and Updates: Mike Warfield <mhw@wittsend.com> | ||
25 | |||
26 | This file assumes that you are using the Computone drivers which are | ||
27 | integrated into the kernel sources. For updating the drivers or installing | ||
28 | drivers into kernels which do not already have Computone drivers, please | ||
29 | refer to the instructions in the README.computone file in the driver patch. | ||
30 | |||
31 | |||
32 | 1. INTRODUCTION | ||
33 | |||
34 | This driver supports the entire family of Intelliport II/Plus controllers | ||
35 | with the exception of the MicroChannel controllers. It does not support | ||
36 | products previous to the Intelliport II. | ||
37 | |||
38 | This driver was developed on the v2.0.x Linux tree and has been tested up | ||
39 | to v2.4.14; it will probably not work with earlier v1.X kernels,. | ||
40 | |||
41 | |||
42 | 2. QUICK INSTALLATION | ||
43 | |||
44 | Hardware - If you have an ISA card, find a free interrupt and io port. | ||
45 | List those in use with `cat /proc/interrupts` and | ||
46 | `cat /proc/ioports`. Set the card dip switches to a free | ||
47 | address. You may need to configure your BIOS to reserve an | ||
48 | irq for an ISA card. PCI and EISA parameters are set | ||
49 | automagically. Insert card into computer with the power off | ||
50 | before or after drivers installation. | ||
51 | |||
52 | Note the hardware address from the Computone ISA cards installed into | ||
53 | the system. These are required for editing ip2.c or editing | ||
54 | /etc/modprobe.conf, or for specification on the modprobe | ||
55 | command line. | ||
56 | |||
57 | Note that the /etc/modules.conf should be used for older (pre-2.6) | ||
58 | kernels. | ||
59 | |||
60 | Software - | ||
61 | |||
62 | Module installation: | ||
63 | |||
64 | a) Determine free irq/address to use if any (configure BIOS if need be) | ||
65 | b) Run "make config" or "make menuconfig" or "make xconfig" | ||
66 | Select (m) module for CONFIG_COMPUTONE under character | ||
67 | devices. CONFIG_PCI and CONFIG_MODULES also may need to be set. | ||
68 | c) Set address on ISA cards then: | ||
69 | edit /usr/src/linux/drivers/char/ip2.c if needed | ||
70 | or | ||
71 | edit /etc/modprobe.conf if needed (module). | ||
72 | or both to match this setting. | ||
73 | d) Run "make modules" | ||
74 | e) Run "make modules_install" | ||
75 | f) Run "/sbin/depmod -a" | ||
76 | g) install driver using `modprobe ip2 <options>` (options listed below) | ||
77 | h) run ip2mkdev (either the script below or the binary version) | ||
78 | |||
79 | |||
80 | Kernel installation: | ||
81 | |||
82 | a) Determine free irq/address to use if any (configure BIOS if need be) | ||
83 | b) Run "make config" or "make menuconfig" or "make xconfig" | ||
84 | Select (y) kernel for CONFIG_COMPUTONE under character | ||
85 | devices. CONFIG_PCI may need to be set if you have PCI bus. | ||
86 | c) Set address on ISA cards then: | ||
87 | edit /usr/src/linux/drivers/char/ip2.c | ||
88 | (Optional - may be specified on kernel command line now) | ||
89 | d) Run "make zImage" or whatever target you prefer. | ||
90 | e) mv /usr/src/linux/arch/i386/boot/zImage to /boot. | ||
91 | f) Add new config for this kernel into /etc/lilo.conf, run "lilo" | ||
92 | or copy to a floppy disk and boot from that floppy disk. | ||
93 | g) Reboot using this kernel | ||
94 | h) run ip2mkdev (either the script below or the binary version) | ||
95 | |||
96 | Kernel command line options: | ||
97 | |||
98 | When compiling the driver into the kernel, io and irq may be | ||
99 | compiled into the driver by editing ip2.c and setting the values for | ||
100 | io and irq in the appropriate array. An alternative is to specify | ||
101 | a command line parameter to the kernel at boot up. | ||
102 | |||
103 | ip2=io0,irq0,io1,irq1,io2,irq2,io3,irq3 | ||
104 | |||
105 | Note that this order is very different from the specifications for the | ||
106 | modload parameters which have separate IRQ and IO specifiers. | ||
107 | |||
108 | The io port also selects PCI (1) and EISA (2) boards. | ||
109 | |||
110 | io=0 No board | ||
111 | io=1 PCI board | ||
112 | io=2 EISA board | ||
113 | else ISA board io address | ||
114 | |||
115 | You only need to specify the boards which are present. | ||
116 | |||
117 | Examples: | ||
118 | |||
119 | 2 PCI boards: | ||
120 | |||
121 | ip2=1,0,1,0 | ||
122 | |||
123 | 1 ISA board at 0x310 irq 5: | ||
124 | |||
125 | ip2=0x310,5 | ||
126 | |||
127 | This can be added to and "append" option in lilo.conf similar to this: | ||
128 | |||
129 | append="ip2=1,0,1,0" | ||
130 | |||
131 | |||
132 | 3. INSTALLATION | ||
133 | |||
134 | Previously, the driver sources were packaged with a set of patch files | ||
135 | to update the character drivers' makefile and configuration file, and other | ||
136 | kernel source files. A build script (ip2build) was included which applies | ||
137 | the patches if needed, and build any utilities needed. | ||
138 | What you receive may be a single patch file in conventional kernel | ||
139 | patch format build script. That form can also be applied by | ||
140 | running patch -p1 < ThePatchFile. Otherwise run ip2build. | ||
141 | |||
142 | The driver can be installed as a module (recommended) or built into the | ||
143 | kernel. This is selected as for other drivers through the `make config` | ||
144 | command from the root of the Linux source tree. If the driver is built | ||
145 | into the kernel you will need to edit the file ip2.c to match the boards | ||
146 | you are installing. See that file for instructions. If the driver is | ||
147 | installed as a module the configuration can also be specified on the | ||
148 | modprobe command line as follows: | ||
149 | |||
150 | modprobe ip2 irq=irq1,irq2,irq3,irq4 io=addr1,addr2,addr3,addr4 | ||
151 | |||
152 | where irqnum is one of the valid Intelliport II interrupts (3,4,5,7,10,11, | ||
153 | 12,15) and addr1-4 are the base addresses for up to four controllers. If | ||
154 | the irqs are not specified the driver uses the default in ip2.c (which | ||
155 | selects polled mode). If no base addresses are specified the defaults in | ||
156 | ip2.c are used. If you are autoloading the driver module with kerneld or | ||
157 | kmod the base addresses and interrupt number must also be set in ip2.c | ||
158 | and recompile or just insert and options line in /etc/modprobe.conf or both. | ||
159 | The options line is equivalent to the command line and takes precedence over | ||
160 | what is in ip2.c. | ||
161 | |||
162 | /etc/modprobe.conf sample: | ||
163 | options ip2 io=1,0x328 irq=1,10 | ||
164 | alias char-major-71 ip2 | ||
165 | alias char-major-72 ip2 | ||
166 | alias char-major-73 ip2 | ||
167 | |||
168 | The equivalent in ip2.c: | ||
169 | |||
170 | static int io[IP2_MAX_BOARDS]= { 1, 0x328, 0, 0 }; | ||
171 | static int irq[IP2_MAX_BOARDS] = { 1, 10, -1, -1 }; | ||
172 | |||
173 | The equivalent for the kernel command line (in lilo.conf): | ||
174 | |||
175 | append="ip2=1,1,0x328,10" | ||
176 | |||
177 | |||
178 | Note: Both io and irq should be updated to reflect YOUR system. An "io" | ||
179 | address of 1 or 2 indicates a PCI or EISA card in the board table. | ||
180 | The PCI or EISA irq will be assigned automatically. | ||
181 | |||
182 | Specifying an invalid or in-use irq will default the driver into | ||
183 | running in polled mode for that card. If all irq entries are 0 then | ||
184 | all cards will operate in polled mode. | ||
185 | |||
186 | If you select the driver as part of the kernel run : | ||
187 | |||
188 | make zlilo (or whatever you do to create a bootable kernel) | ||
189 | |||
190 | If you selected a module run : | ||
191 | |||
192 | make modules && make modules_install | ||
193 | |||
194 | The utility ip2mkdev (see 5 and 7 below) creates all the device nodes | ||
195 | required by the driver. For a device to be created it must be configured | ||
196 | in the driver and the board must be installed. Only devices corresponding | ||
197 | to real IntelliPort II ports are created. With multiple boards and expansion | ||
198 | boxes this will leave gaps in the sequence of device names. ip2mkdev uses | ||
199 | Linux tty naming conventions: ttyF0 - ttyF255 for normal devices, and | ||
200 | cuf0 - cuf255 for callout devices. | ||
201 | |||
202 | If you are using devfs, existing devices are automatically created within | ||
203 | the devfs name space. Normal devices will be tts/F0 - tts/F255 and callout | ||
204 | devices will be cua/F0 - cua/F255. With devfs installed, ip2mkdev will | ||
205 | create symbolic links in /dev from the old conventional names to the newer | ||
206 | devfs names as follows: | ||
207 | |||
208 | /dev/ip2ipl[n] -> /dev/ip2/ipl[n] n = 0 - 3 | ||
209 | /dev/ip2stat[n] -> /dev/ip2/stat[n] n = 0 - 3 | ||
210 | /dev/ttyF[n] -> /dev/tts/F[n] n = 0 - 255 | ||
211 | /dev/cuf[n] -> /dev/cua/F[n] n = 0 - 255 | ||
212 | |||
213 | Only devices for existing ports and boards will be created. | ||
214 | |||
215 | IMPORTANT NOTE: The naming convention used for devfs by this driver | ||
216 | was changed from 1.2.12 to 1.2.13. The old naming convention was to | ||
217 | use ttf/%d for the tty device and cuf/%d for the cua device. That | ||
218 | has been changed to conform to an agreed-upon standard of placing | ||
219 | all the tty devices under tts. The device names are now tts/F%d for | ||
220 | the tty device and cua/F%d for the cua devices. If you were using | ||
221 | the older devfs names, you must update for the newer convention. | ||
222 | |||
223 | You do not need to run ip2mkdev if you are using devfs and only want to | ||
224 | use the devfs native device names. | ||
225 | |||
226 | |||
227 | 4. USING THE DRIVERS | ||
228 | |||
229 | As noted above, the driver implements the ports in accordance with Linux | ||
230 | conventions, and the devices should be interchangeable with the standard | ||
231 | serial devices. (This is a key point for problem reporting: please make | ||
232 | sure that what you are trying do works on the ttySx/cuax ports first; then | ||
233 | tell us what went wrong with the ip2 ports!) | ||
234 | |||
235 | Higher speeds can be obtained using the setserial utility which remaps | ||
236 | 38,400 bps (extb) to 57,600 bps, 115,200 bps, or a custom speed. | ||
237 | Intelliport II installations using the PowerPort expansion module can | ||
238 | use the custom speed setting to select the highest speeds: 153,600 bps, | ||
239 | 230,400 bps, 307,200 bps, 460,800bps and 921,600 bps. The base for | ||
240 | custom baud rate configuration is fixed at 921,600 for cards/expansion | ||
241 | modules with ST654's and 115200 for those with Cirrus CD1400's. This | ||
242 | corresponds to the maximum bit rates those chips are capable. | ||
243 | For example if the baud base is 921600 and the baud divisor is 18 then | ||
244 | the custom rate is 921600/18 = 51200 bps. See the setserial man page for | ||
245 | complete details. Of course if stty accepts the higher rates now you can | ||
246 | use that as well as the standard ioctls(). | ||
247 | |||
248 | |||
249 | 5. ip2mkdev and assorted utilities... | ||
250 | |||
251 | Several utilities, including the source for a binary ip2mkdev utility are | ||
252 | available under .../drivers/char/ip2. These can be build by changing to | ||
253 | that directory and typing "make" after the kernel has be built. If you do | ||
254 | not wish to compile the binary utilities, the shell script below can be | ||
255 | cut out and run as "ip2mkdev" to create the necessary device files. To | ||
256 | use the ip2mkdev script, you must have procfs enabled and the proc file | ||
257 | system mounted on /proc. | ||
258 | |||
259 | You do not need to run ip2mkdev if you are using devfs and only want to | ||
260 | use the devfs native device names. | ||
261 | |||
262 | |||
263 | 6. DEVFS | ||
264 | |||
265 | DEVFS is the DEVice File System available as an add on package for the | ||
266 | 2.2.x kernels and available as a configuration option in 2.3.46 and higher. | ||
267 | Devfs allows for the automatic creation and management of device names | ||
268 | under control of the device drivers themselves. The Devfs namespace is | ||
269 | hierarchical and reduces the clutter present in the normal flat /dev | ||
270 | namespace. Devfs names and conventional device names may be intermixed. | ||
271 | A userspace daemon, devfsd, exists to allow for automatic creation and | ||
272 | management of symbolic links from the devfs name space to the conventional | ||
273 | names. More details on devfs can be found on the DEVFS home site at | ||
274 | <http://www.atnf.csiro.au/~rgooch/linux/> or in the file kernel | ||
275 | documentation files, .../linux/Documentation/filesystems/devfs/README. | ||
276 | |||
277 | If you are using devfs, existing devices are automatically created within | ||
278 | the devfs name space. Normal devices will be tts/F0 - tts/F255 and callout | ||
279 | devices will be cua/F0 - cua/F255. With devfs installed, ip2mkdev will | ||
280 | create symbolic links in /dev from the old conventional names to the newer | ||
281 | devfs names as follows: | ||
282 | |||
283 | /dev/ip2ipl[n] -> /dev/ip2/ipl[n] n = 0 - 3 | ||
284 | /dev/ip2stat[n] -> /dev/ip2/stat[n] n = 0 - 3 | ||
285 | /dev/ttyF[n] -> /dev/tts/F[n] n = 0 - 255 | ||
286 | /dev/cuf[n] -> /dev/cua/F[n] n = 0 - 255 | ||
287 | |||
288 | Only devices for existing ports and boards will be created. | ||
289 | |||
290 | IMPORTANT NOTE: The naming convention used for devfs by this driver | ||
291 | was changed from 1.2.12 to 1.2.13. The old naming convention was to | ||
292 | use ttf/%d for the tty device and cuf/%d for the cua device. That | ||
293 | has been changed to conform to an agreed-upon standard of placing | ||
294 | all the tty devices under tts. The device names are now tts/F%d for | ||
295 | the tty device and cua/F%d for the cua devices. If you were using | ||
296 | the older devfs names, you must update for the newer convention. | ||
297 | |||
298 | You do not need to run ip2mkdev if you are using devfs and only want to | ||
299 | use the devfs native device names. | ||
300 | |||
301 | |||
302 | 7. NOTES | ||
303 | |||
304 | This is a release version of the driver, but it is impossible to test it | ||
305 | in all configurations of Linux. If there is any anomalous behaviour that | ||
306 | does not match the standard serial port's behaviour please let us know. | ||
307 | |||
308 | |||
309 | 8. ip2mkdev shell script | ||
310 | |||
311 | Previously, this script was simply attached here. It is now attached as a | ||
312 | shar archive to make it easier to extract the script from the documentation. | ||
313 | To create the ip2mkdev shell script change to a convenient directory (/tmp | ||
314 | works just fine) and run the following command: | ||
315 | |||
316 | unshar Documentation/computone.txt | ||
317 | (This file) | ||
318 | |||
319 | You should now have a file ip2mkdev in your current working directory with | ||
320 | permissions set to execute. Running that script with then create the | ||
321 | necessary devices for the Computone boards, interfaces, and ports which | ||
322 | are present on you system at the time it is run. | ||
323 | |||
324 | |||
325 | #!/bin/sh | ||
326 | # This is a shell archive (produced by GNU sharutils 4.2.1). | ||
327 | # To extract the files from this archive, save it to some FILE, remove | ||
328 | # everything before the `!/bin/sh' line above, then type `sh FILE'. | ||
329 | # | ||
330 | # Made on 2001-10-29 10:32 EST by <mhw@alcove.wittsend.com>. | ||
331 | # Source directory was `/home2/src/tmp'. | ||
332 | # | ||
333 | # Existing files will *not* be overwritten unless `-c' is specified. | ||
334 | # | ||
335 | # This shar contains: | ||
336 | # length mode name | ||
337 | # ------ ---------- ------------------------------------------ | ||
338 | # 4251 -rwxr-xr-x ip2mkdev | ||
339 | # | ||
340 | save_IFS="${IFS}" | ||
341 | IFS="${IFS}:" | ||
342 | gettext_dir=FAILED | ||
343 | locale_dir=FAILED | ||
344 | first_param="$1" | ||
345 | for dir in $PATH | ||
346 | do | ||
347 | if test "$gettext_dir" = FAILED && test -f $dir/gettext \ | ||
348 | && ($dir/gettext --version >/dev/null 2>&1) | ||
349 | then | ||
350 | set `$dir/gettext --version 2>&1` | ||
351 | if test "$3" = GNU | ||
352 | then | ||
353 | gettext_dir=$dir | ||
354 | fi | ||
355 | fi | ||
356 | if test "$locale_dir" = FAILED && test -f $dir/shar \ | ||
357 | && ($dir/shar --print-text-domain-dir >/dev/null 2>&1) | ||
358 | then | ||
359 | locale_dir=`$dir/shar --print-text-domain-dir` | ||
360 | fi | ||
361 | done | ||
362 | IFS="$save_IFS" | ||
363 | if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED | ||
364 | then | ||
365 | echo=echo | ||
366 | else | ||
367 | TEXTDOMAINDIR=$locale_dir | ||
368 | export TEXTDOMAINDIR | ||
369 | TEXTDOMAIN=sharutils | ||
370 | export TEXTDOMAIN | ||
371 | echo="$gettext_dir/gettext -s" | ||
372 | fi | ||
373 | if touch -am -t 200112312359.59 $$.touch >/dev/null 2>&1 && test ! -f 200112312359.59 -a -f $$.touch; then | ||
374 | shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"' | ||
375 | elif touch -am 123123592001.59 $$.touch >/dev/null 2>&1 && test ! -f 123123592001.59 -a ! -f 123123592001.5 -a -f $$.touch; then | ||
376 | shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"' | ||
377 | elif touch -am 1231235901 $$.touch >/dev/null 2>&1 && test ! -f 1231235901 -a -f $$.touch; then | ||
378 | shar_touch='touch -am $3$4$5$6$2 "$8"' | ||
379 | else | ||
380 | shar_touch=: | ||
381 | echo | ||
382 | $echo 'WARNING: not restoring timestamps. Consider getting and' | ||
383 | $echo "installing GNU \`touch', distributed in GNU File Utilities..." | ||
384 | echo | ||
385 | fi | ||
386 | rm -f 200112312359.59 123123592001.59 123123592001.5 1231235901 $$.touch | ||
387 | # | ||
388 | if mkdir _sh17581; then | ||
389 | $echo 'x -' 'creating lock directory' | ||
390 | else | ||
391 | $echo 'failed to create lock directory' | ||
392 | exit 1 | ||
393 | fi | ||
394 | # ============= ip2mkdev ============== | ||
395 | if test -f 'ip2mkdev' && test "$first_param" != -c; then | ||
396 | $echo 'x -' SKIPPING 'ip2mkdev' '(file already exists)' | ||
397 | else | ||
398 | $echo 'x -' extracting 'ip2mkdev' '(text)' | ||
399 | sed 's/^X//' << 'SHAR_EOF' > 'ip2mkdev' && | ||
400 | #!/bin/sh - | ||
401 | # | ||
402 | # ip2mkdev | ||
403 | # | ||
404 | # Make or remove devices as needed for Computone Intelliport drivers | ||
405 | # | ||
406 | # First rule! If the dev file exists and you need it, don't mess | ||
407 | # with it. That prevents us from screwing up open ttys, ownership | ||
408 | # and permissions on a running system! | ||
409 | # | ||
410 | # This script will NOT remove devices that no longer exist if their | ||
411 | # board or interface box has been removed. If you want to get rid | ||
412 | # of them, you can manually do an "rm -f /dev/ttyF* /dev/cuaf*" | ||
413 | # before running this script. Running this script will then recreate | ||
414 | # all the valid devices. | ||
415 | # | ||
416 | # Michael H. Warfield | ||
417 | # /\/\|=mhw=|\/\/ | ||
418 | # mhw@wittsend.com | ||
419 | # | ||
420 | # Updated 10/29/2000 for version 1.2.13 naming convention | ||
421 | # under devfs. /\/\|=mhw=|\/\/ | ||
422 | # | ||
423 | # Updated 03/09/2000 for devfs support in ip2 drivers. /\/\|=mhw=|\/\/ | ||
424 | # | ||
425 | X | ||
426 | if test -d /dev/ip2 ; then | ||
427 | # This is devfs mode... We don't do anything except create symlinks | ||
428 | # from the real devices to the old names! | ||
429 | X cd /dev | ||
430 | X echo "Creating symbolic links to devfs devices" | ||
431 | X for i in `ls ip2` ; do | ||
432 | X if test ! -L ip2$i ; then | ||
433 | X # Remove it incase it wasn't a symlink (old device) | ||
434 | X rm -f ip2$i | ||
435 | X ln -s ip2/$i ip2$i | ||
436 | X fi | ||
437 | X done | ||
438 | X for i in `( cd tts ; ls F* )` ; do | ||
439 | X if test ! -L tty$i ; then | ||
440 | X # Remove it incase it wasn't a symlink (old device) | ||
441 | X rm -f tty$i | ||
442 | X ln -s tts/$i tty$i | ||
443 | X fi | ||
444 | X done | ||
445 | X for i in `( cd cua ; ls F* )` ; do | ||
446 | X DEVNUMBER=`expr $i : 'F\(.*\)'` | ||
447 | X if test ! -L cuf$DEVNUMBER ; then | ||
448 | X # Remove it incase it wasn't a symlink (old device) | ||
449 | X rm -f cuf$DEVNUMBER | ||
450 | X ln -s cua/$i cuf$DEVNUMBER | ||
451 | X fi | ||
452 | X done | ||
453 | X exit 0 | ||
454 | fi | ||
455 | X | ||
456 | if test ! -f /proc/tty/drivers | ||
457 | then | ||
458 | X echo "\ | ||
459 | Unable to check driver status. | ||
460 | Make sure proc file system is mounted." | ||
461 | X | ||
462 | X exit 255 | ||
463 | fi | ||
464 | X | ||
465 | if test ! -f /proc/tty/driver/ip2 | ||
466 | then | ||
467 | X echo "\ | ||
468 | Unable to locate ip2 proc file. | ||
469 | Attempting to load driver" | ||
470 | X | ||
471 | X if /sbin/insmod ip2 | ||
472 | X then | ||
473 | X if test ! -f /proc/tty/driver/ip2 | ||
474 | X then | ||
475 | X echo "\ | ||
476 | Unable to locate ip2 proc file after loading driver. | ||
477 | Driver initialization failure or driver version error. | ||
478 | " | ||
479 | X exit 255 | ||
480 | X fi | ||
481 | X else | ||
482 | X echo "Unable to load ip2 driver." | ||
483 | X exit 255 | ||
484 | X fi | ||
485 | fi | ||
486 | X | ||
487 | # Ok... So we got the driver loaded and we can locate the procfs files. | ||
488 | # Next we need our major numbers. | ||
489 | X | ||
490 | TTYMAJOR=`sed -e '/^ip2/!d' -e '/\/dev\/tt/!d' -e 's/.*tt[^ ]*[ ]*\([0-9]*\)[ ]*.*/\1/' < /proc/tty/drivers` | ||
491 | CUAMAJOR=`sed -e '/^ip2/!d' -e '/\/dev\/cu/!d' -e 's/.*cu[^ ]*[ ]*\([0-9]*\)[ ]*.*/\1/' < /proc/tty/drivers` | ||
492 | BRDMAJOR=`sed -e '/^Driver: /!d' -e 's/.*IMajor=\([0-9]*\)[ ]*.*/\1/' < /proc/tty/driver/ip2` | ||
493 | X | ||
494 | echo "\ | ||
495 | TTYMAJOR = $TTYMAJOR | ||
496 | CUAMAJOR = $CUAMAJOR | ||
497 | BRDMAJOR = $BRDMAJOR | ||
498 | " | ||
499 | X | ||
500 | # Ok... Now we should know our major numbers, if appropriate... | ||
501 | # Now we need our boards and start the device loops. | ||
502 | X | ||
503 | grep '^Board [0-9]:' /proc/tty/driver/ip2 | while read token number type alltherest | ||
504 | do | ||
505 | X # The test for blank "type" will catch the stats lead-in lines | ||
506 | X # if they exist in the file | ||
507 | X if test "$type" = "vacant" -o "$type" = "Vacant" -o "$type" = "" | ||
508 | X then | ||
509 | X continue | ||
510 | X fi | ||
511 | X | ||
512 | X BOARDNO=`expr "$number" : '\([0-9]\):'` | ||
513 | X PORTS=`expr "$alltherest" : '.*ports=\([0-9]*\)' | tr ',' ' '` | ||
514 | X MINORS=`expr "$alltherest" : '.*minors=\([0-9,]*\)' | tr ',' ' '` | ||
515 | X | ||
516 | X if test "$BOARDNO" = "" -o "$PORTS" = "" | ||
517 | X then | ||
518 | # This may be a bug. We should at least get this much information | ||
519 | X echo "Unable to process board line" | ||
520 | X continue | ||
521 | X fi | ||
522 | X | ||
523 | X if test "$MINORS" = "" | ||
524 | X then | ||
525 | # Silently skip this one. This board seems to have no boxes | ||
526 | X continue | ||
527 | X fi | ||
528 | X | ||
529 | X echo "board $BOARDNO: $type ports = $PORTS; port numbers = $MINORS" | ||
530 | X | ||
531 | X if test "$BRDMAJOR" != "" | ||
532 | X then | ||
533 | X BRDMINOR=`expr $BOARDNO \* 4` | ||
534 | X STSMINOR=`expr $BRDMINOR + 1` | ||
535 | X if test ! -c /dev/ip2ipl$BOARDNO ; then | ||
536 | X mknod /dev/ip2ipl$BOARDNO c $BRDMAJOR $BRDMINOR | ||
537 | X fi | ||
538 | X if test ! -c /dev/ip2stat$BOARDNO ; then | ||
539 | X mknod /dev/ip2stat$BOARDNO c $BRDMAJOR $STSMINOR | ||
540 | X fi | ||
541 | X fi | ||
542 | X | ||
543 | X if test "$TTYMAJOR" != "" | ||
544 | X then | ||
545 | X PORTNO=$BOARDBASE | ||
546 | X | ||
547 | X for PORTNO in $MINORS | ||
548 | X do | ||
549 | X if test ! -c /dev/ttyF$PORTNO ; then | ||
550 | X # We got the hardware but no device - make it | ||
551 | X mknod /dev/ttyF$PORTNO c $TTYMAJOR $PORTNO | ||
552 | X fi | ||
553 | X done | ||
554 | X fi | ||
555 | X | ||
556 | X if test "$CUAMAJOR" != "" | ||
557 | X then | ||
558 | X PORTNO=$BOARDBASE | ||
559 | X | ||
560 | X for PORTNO in $MINORS | ||
561 | X do | ||
562 | X if test ! -c /dev/cuf$PORTNO ; then | ||
563 | X # We got the hardware but no device - make it | ||
564 | X mknod /dev/cuf$PORTNO c $CUAMAJOR $PORTNO | ||
565 | X fi | ||
566 | X done | ||
567 | X fi | ||
568 | done | ||
569 | X | ||
570 | Xexit 0 | ||
571 | SHAR_EOF | ||
572 | (set 20 01 10 29 10 32 01 'ip2mkdev'; eval "$shar_touch") && | ||
573 | chmod 0755 'ip2mkdev' || | ||
574 | $echo 'restore of' 'ip2mkdev' 'failed' | ||
575 | if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ | ||
576 | && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then | ||
577 | md5sum -c << SHAR_EOF >/dev/null 2>&1 \ | ||
578 | || $echo 'ip2mkdev:' 'MD5 check failed' | ||
579 | cb5717134509f38bad9fde6b1f79b4a4 ip2mkdev | ||
580 | SHAR_EOF | ||
581 | else | ||
582 | shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'ip2mkdev'`" | ||
583 | test 4251 -eq "$shar_count" || | ||
584 | $echo 'ip2mkdev:' 'original size' '4251,' 'current size' "$shar_count!" | ||
585 | fi | ||
586 | fi | ||
587 | rm -fr _sh17581 | ||
588 | exit 0 | ||