digiboard.txt
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:9k
- 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 it should work
- on other architectures than intel also.
- A 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 doesn't support the old PC/Xi cards and it isn't yet ported to
- linux-2.1.x and may not be usable 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 built direct into the kernel or as a 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/modules.conf 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 from using 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 applicable parameters 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 unusable 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 remaining board still uses ttyD8-ttyD15 and cud8-cud15.
- Example line for /etc/modules.conf 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/modules.conf:
- 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= command-line 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(new ones 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= command line, 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 got 16
- ports.
- Sources of Information
- ----------------------
- Please contact digi directly digilnux@dgii.com. Forward any information of
- general interest to me so that I can include it on the webpage.
- Web page: http://lameter.com/digi
- Christoph Lameter (christoph@lameter.com) Aug 14, 2000.
- 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
- -----------------------------------------------------------------------------
- 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 :)
- Drivers' 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.