1 |
199 |
simons |
The Linux Digiboard Driver
|
2 |
|
|
--------------------------
|
3 |
|
|
|
4 |
|
|
The Digiboard Driver for Linux supports the following boards:
|
5 |
|
|
|
6 |
|
|
DigiBoard PC/Xe, PC/Xi, PC/Xeve
|
7 |
|
|
|
8 |
|
|
Limitations:
|
9 |
|
|
------------
|
10 |
|
|
Currently the Driver does not do autoprobing!
|
11 |
|
|
|
12 |
|
|
The preconfigured I/O address is 0200h and the default memory address
|
13 |
|
|
0D0000h, ALT-PIN feature on and 16 ports available.
|
14 |
|
|
|
15 |
|
|
Use them and you will not have to worry about configuring anything.
|
16 |
|
|
|
17 |
|
|
You can configure the driver via lilo. Have a look at the end of this
|
18 |
|
|
message. The default settings vanish as soon as you give a digi= commandline.
|
19 |
|
|
You can give multiple digi= commandline parameters to define multiple
|
20 |
|
|
boards.
|
21 |
|
|
|
22 |
|
|
Supporting Tools:
|
23 |
|
|
-----------------
|
24 |
|
|
Some tools and more detailed information can be found at
|
25 |
|
|
ftp://ftp.fuller.edu/Linux/digi
|
26 |
|
|
|
27 |
|
|
WARNING: Most of the stuff available right now uses the WRONG Major Device
|
28 |
|
|
numbers and the wrong call out devices. Be careful and check them first.
|
29 |
|
|
Better not use any of the software in that directory if you run a recent
|
30 |
|
|
1.3.X Kernel or later!
|
31 |
|
|
|
32 |
|
|
The "ditty" tool described in the Digiboard Manuals for other Unixes
|
33 |
|
|
is also available.
|
34 |
|
|
|
35 |
|
|
Currently the Linux MAKEDEV command does not support generating the Digiboard
|
36 |
|
|
Devices. Use the following script to generate the devices:
|
37 |
|
|
|
38 |
|
|
------------------ mkdigidev begin
|
39 |
|
|
#!/bin/sh
|
40 |
|
|
#
|
41 |
|
|
# Script to create Digiboard Devices
|
42 |
|
|
# Christoph Lameter, April 16, 1996
|
43 |
|
|
#
|
44 |
|
|
# Usage:
|
45 |
|
|
# mkdigidev []
|
46 |
|
|
#
|
47 |
|
|
|
48 |
|
|
DIGI_MAJOR=23
|
49 |
|
|
DIGICU_MAJOR=22
|
50 |
|
|
|
51 |
|
|
BOARDS=$1
|
52 |
|
|
|
53 |
|
|
if [ "$BOARDS" = "" ]; then
|
54 |
|
|
BOARDS=1
|
55 |
|
|
fi
|
56 |
|
|
|
57 |
|
|
boardnum=0
|
58 |
|
|
while [ $boardnum -lt $BOARDS ];
|
59 |
|
|
do
|
60 |
|
|
for c in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15;
|
61 |
|
|
do
|
62 |
|
|
name=`expr $boardnum \* 16 + $c`
|
63 |
|
|
mknod /dev/cud$name c $DIGICU_MAJOR $name
|
64 |
|
|
mknod /dev/ttyD$name c $DIGI_MAJOR $name
|
65 |
|
|
done
|
66 |
|
|
boardnum=`expr $boardnum + 1`
|
67 |
|
|
done
|
68 |
|
|
------------------ mkdigidev end
|
69 |
|
|
or apply the following patch to /dev/MAKEDEV and do a
|
70 |
|
|
make digi
|
71 |
|
|
----- MAKEDEV Patch
|
72 |
|
|
--- /dev/MAKEDEV Sun Aug 13 15:48:23 1995
|
73 |
|
|
+++ MAKEDEV Tue Apr 16 17:53:27 1996
|
74 |
|
|
@@ -120,7 +120,7 @@
|
75 |
|
|
while [ $# -ne 0 ]
|
76 |
|
|
do
|
77 |
|
|
case "$1" in
|
78 |
|
|
- mem|tty|ttyp|cua|cub) ;;
|
79 |
|
|
+ mem|tty|ttyp|cua|cub|cud) ;;
|
80 |
|
|
hd) echo hda hdb hdc hdd ;;
|
81 |
|
|
xd) echo xda xdb ;;
|
82 |
|
|
fd) echo fd0 fd1 ;;
|
83 |
|
|
@@ -140,6 +140,7 @@
|
84 |
|
|
dcf) echo dcf ;;
|
85 |
|
|
pcmcia) ;; # taken care of by its own driver
|
86 |
|
|
ttyC) echo cyclades ;;
|
87 |
|
|
+ ttyD) echo digi ;;
|
88 |
|
|
*) echo "$0: don't know what \"$1\" is" >&2 ;;
|
89 |
|
|
esac
|
90 |
|
|
shift
|
91 |
|
|
@@ -208,6 +209,15 @@
|
92 |
|
|
do
|
93 |
|
|
makedev ttyC$i c $major1 `expr 32 + $i` $tty
|
94 |
|
|
makedev cub$i c $major2 `expr 32 + $i` $dialout
|
95 |
|
|
+ done
|
96 |
|
|
+ ;;
|
97 |
|
|
+ digi)
|
98 |
|
|
+ major1=`Major ttyD` || continue
|
99 |
|
|
+ major2=`Major cud` || continue
|
100 |
|
|
+ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
101 |
|
|
+ do
|
102 |
|
|
+ makedev ttyD$i c $major1 `expr 32 + $i` $tty
|
103 |
|
|
+ makedev cud$i c $major2 `expr 32 + $i` $dialout
|
104 |
|
|
done
|
105 |
|
|
;;
|
106 |
|
|
par[0-2])
|
107 |
|
|
----- End Makedev patch
|
108 |
|
|
|
109 |
|
|
The /dev/cud?? devices behave like the /dev/cua?? devices
|
110 |
|
|
and the ttyD devices are like the /dev/ttyS?? devices.
|
111 |
|
|
|
112 |
|
|
Sources of Information
|
113 |
|
|
----------------------
|
114 |
|
|
|
115 |
|
|
Webpage: http://private.fuller.edu/clameter/digi.html
|
116 |
|
|
|
117 |
|
|
Mailing List: digiboard@list.fuller.edu
|
118 |
|
|
|
119 |
|
|
(Write e-mail to that address to subscribe. Common ListServ commands work.
|
120 |
|
|
Archive of messages available)
|
121 |
|
|
|
122 |
|
|
Christoph Lameter (clameter@fuller.edu) 16. April 1996.
|
123 |
|
|
|
124 |
|
|
-----------------------------------------------------------------------------
|
125 |
|
|
|
126 |
|
|
Changes v1.5.5:
|
127 |
|
|
|
128 |
|
|
The ability to use the kernel's command line to pass in the configuration for
|
129 |
|
|
boards. Using LILO's APPEND command, a string of comma separated identifiers
|
130 |
|
|
or integers can be used. The 6 values in order are:
|
131 |
|
|
|
132 |
|
|
Enable/Disable this card,
|
133 |
|
|
Type of card: PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)
|
134 |
|
|
Enable/Disable alternate pin arrangement,
|
135 |
|
|
Number of ports on this card,
|
136 |
|
|
I/O Port where card is configured (in HEX if using string identifiers),
|
137 |
|
|
Base of memory window (in HEX if using string identifiers),
|
138 |
|
|
|
139 |
|
|
Samples:
|
140 |
|
|
append="digi=E,PC/Xi,D,16,200,D0000"
|
141 |
|
|
append="digi=1,0,0,16,512,(whatever D0000 is in base 10 :)
|
142 |
|
|
|
143 |
|
|
Driver's minor device numbers are conserved. This means that instead of
|
144 |
|
|
each board getting a block of 16 minors pre-assigned, it gets however
|
145 |
|
|
many it should, with the next card following directly behind it. A
|
146 |
|
|
system with 4 2-port PC/Xi boards will use minor numbers 0-7.
|
147 |
|
|
This conserves some memory, and removes a few hard coded constants.
|
148 |
|
|
|
149 |
|
|
NOTE!! NOTE!! NOTE!!
|
150 |
|
|
The definition of PC/Xem as a valid board type is the BEGINNING of support
|
151 |
|
|
for this device. The driver does not currently recognise the board, nor
|
152 |
|
|
does it want to initialize it. At least not the EISA version.
|
153 |
|
|
|
154 |
|
|
Mike McLagan 5, April 1996.
|
155 |
|
|
|