The Linux Digiboard Driver
--------------------------

The Digiboard Driver for Linux supports the following boards:

 DigiBoard PC/Xe, PC/Xi, PC/Xeve

Limitations:
------------
Currently the Driver does not do autoprobing!

The preconfigured I/O address is 0200h and the default memory address
0D0000h, ALT-PIN feature on and 16 ports available.

Use them and you will not have to worry about configuring anything.

You can configure the driver via lilo. Have a look at the end of this
message. The default settings vanish as soon as you give a digi= commandline.
You can give multiple digi= commandline parameters to define multiple
boards.

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

WARNING: Most of the stuff available right now uses the WRONG Major Device
numbers and the wrong call out devices. Be careful and check them first.
Better not use any of the software in that directory if you run a recent
1.3.X Kernel or later!

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

Currently the Linux MAKEDEV command does not support generating the Digiboard
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=22
DIGICU_MAJOR=23

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 $DIGIMAJOR $name
	mknod /dev/ttyD$name c $DIGICUMAJOR $name
  done
  boardnum=`expr $boardnum + 1`
done
------------------ mkdigidev end
or apply the following patch to /dev/MAKEDEV and do a 
make 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

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

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.

-----------------------------------------------------------------------------

Changes v1.5.5:

The ability to use the kernel's command line to pass in the configuration for 
boards.  Using LILO's APPEND command, a string of comma separated identifiers 
or integers can be used.  The 6 values in order are:

   Enable/Disable this card,
   Type of card: PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)
   Enable/Disable alternate pin arrangement,
   Number of ports on this card,
   I/O Port where card is configured (in HEX if using string identifiers),
   Base of memory window (in HEX if using string identifiers), 

Samples:
   append="digi=E,PC/Xi,D,16,200,D0000"
   append="digi=1,0,0,16,512,(whatever D0000 is in base 10 :)

Driver's minor device numbers are conserved. This means that instead of
each board getting a block of 16 minors pre-assigned, it gets however
many it should, with the next card following directly behind it.  A
system with 4 2-port PC/Xi boards will use minor numbers 0-7.
This conserves some memory, and removes a few hard coded constants.

NOTE!! NOTE!! NOTE!!
The definition of PC/Xem as a valid board type is the BEGINNING of support
for this device.  The driver does not currently recognise the board, nor
does it want to initialize it.  At least not the EISA version.

Mike McLagan <mike.mclagan@linux.org> 5, April 1996.
