diff options
Diffstat (limited to 'sys/i386/isa/README.stl')
-rw-r--r-- | sys/i386/isa/README.stl | 536 |
1 files changed, 0 insertions, 536 deletions
diff --git a/sys/i386/isa/README.stl b/sys/i386/isa/README.stl deleted file mode 100644 index d723dca..0000000 --- a/sys/i386/isa/README.stl +++ /dev/null @@ -1,536 +0,0 @@ -$FreeBSD$ - -Stallion Multiport Serial Driver Readme ---------------------------------------- - -Version: 0.0.5 alpha -Date: 20MAR96 -Author: Greg Ungerer (gerg@stallion.oz.au) - - - -1. INTRODUCTION - -This is a FreeBSD driver for some of the Stallion Technologies range of -multiport serial boards. This driver is still very new, so it should be -considered to be of very alpha quality. - -This driver has not been developed by Stallion Technologies. I developed it -in my spare time in the hope that it would be useful. As such there is no -warranty or support of any form. What this means is that this driver is not -officially supported by Stallion Technologies, so don't ring their support -if you can't get it working. They will probably not be able to help you. -Instead email me if you have problems or bug reports and I will do what I -can... (Sorry to sound so heavy handed, but I need to stress that this driver -is not officially supported in any way.) - -This package actually contains two drivers. One is for the true Stallion -intelligent multiport boards, and the other is for the smart range of boards. - -All host driver source is included in this package, and is copyrighted under -a BSD style copyright. The board "firmware" code in this package is copyright -Stallion Technologies (the files cdk.sys and 2681.sys). - - -1.1 SMART MULTIPORT BOARD DRIVER - -This driver supports the EasyIO and EasyConnection 8/32 range of boards. -These boards are not classic intelligent multiport boards, but are host -based multiport boards that use high performance Cirrus Logic CL-CD1400 RISC -UART's (they have built in FIFO's, automatic flow control and some other -good stuff). - -The EasyIO range of cards comes in 3 forms, the EasyIO-4, EasyIO-8 and the -EasyIO-8M. All of these are non-expandable, low cost, ISA, multiport boards -with 4, 8 and 8 RS-232C ports respectively. Each EasyIO board requires 8 -bytes of I/O address space and 1 interrupt. On an EISA system it is possible -to share 1 interrupt between multiple boards. The EasyIO-4 has 10 pin RJ -connectors, and the EasyIO-8 comes with a dongle cable with either 10 pin RJ -connectors or DB-25 connectors. The EasyIO-8M has 6 pin RJ connectors. - -The EasyConnection 8/32 family of boards is a relatively low cost modular -range of multiport serial boards. The EasyConnection 8/32 boards can be -configured to have from 8 to 32 serial ports by plugging in external serial -port modules that contain either 8 or 16 ports each. There is a wide range -of external modules available that offer: DB-25 connectors, RJ-45 connectors -(both with RS-232 D and E compatible drivers), and also RS-422 and RS-485 -ports. The EasyConnection 8/32 boards come in ISA, PCI and MCA bus versions. -The board takes the form of a host adapter card, with an external connector -cable that plugs into the external modules. The external modules just clip -together to add ports (BTW, they are NOT hot pluggable). Each ISA -EasyConnection 8/32 board requires two separate I/O address ranges, one two -bytes in size and a secondary region of 32 bytes. Each PCI EasyConnection -8/32 requires two regions of I/O address space, normally these will be -automatically allocated by the system BIOS at system power on time. Each MCA -EasyConnection board requires one I/O address region 64 bytes in size. All -board types also require one interrupt. On EISA systems multiple boards can -share one interrupt. The secondary I/O range of the ISA board (the 32 byte -range) can be shared between multiple boards on any bus type. - - -1.2 INTELLIGENT MULTIPORT BOARD DRIVER - -This driver is for Stallion's range of true intelligent multiport boards. -It supports the EasyConnection 8/64, ONboard, Brumby and original Stallion -families of multiport boards. The EasyConnection 8/64 and ONboard boards come -in ISA, EISA and Microchannel bus versions. The Brumby and Stallion boards -are only available in ISA versions. - -The EasyConnection 8/64 family of boards is a medium cost, high performance, -modular range of intelligent multiport serial boards. The EasyConnection 8/64 -boards can be configured to have from 8 to 64 serial ports by plugging in -external serial port modules that contain either 8 or 16 ports each (these -modules are the same used by the EasyConnection 8/32 board). There is a wide -range of external modules available that offer: DB-25 connectors, RJ-45 -connectors (both with RS-232 D and E compatible drivers), and also RS-422 and -RS-485 ports. The board takes the form of a host adapter card, with an external -connector cable that plugs into the external modules. The external modules -just clip together to add ports (BTW, they are NOT hot pluggable). Each -EasyConnection 8/64 board requires 4 bytes of I/O address space and a region -of memory space. The size of the memory region required depends on the exact -board type. The EISA version requires 64 Kbytes of address space (that can -reside anywhere in the 4 Gigabyte physical address space). The ISA and MCA -boards require 4 Kbytes of address space (which must reside in the lower -1 Mbyte of physical address space - typically in the c8000 to e0000 range). -No interrupts are required. The physical memory region of multiple -EasyConnection 8/64 boards can be shared, but each board must have a separate -I/O address space. - -The ONboard family of boards are traditional intelligent multiport serial -boards. They are Stallion's older range of boards with a limited expansion -capability. They come in 4, 8, 12, 16 and 32 port versions. The board uses -the same base card (which has 4 ports on it) and is expanded to more ports -via a mezzanine board that attaches directly onto the board. External panels -plug into the ONboard providing RS-232C ports with DB-25 plugs. An RS-422 -DB-25 dual interface panel is also available. The ISA and microchannel -ONboards require 16 bytes of I/O address space and 64K bytes of memory -space. The memory space can be anywhere in the 16 Mbyte ISA bus address -range. No interrupt is required. The EISA ONboard requires 64 Kbytes of -memory space that can be anywhere in the 4 Gigabyte physical address space. -All ONboard boards can share their memory region with other ONboards (or -EasyConnection 8/64 boards). - -The Brumby family of boards are traditional, low cost intelligent multiport -serial boards. They are non-expandable and come in 4, 8 and 16 port versions. -They are only available for the ISA bus. The serial ports are all on DB-25 -"dongle" cables that attach to the rear of the board. Each Brumby board -requires 16 bytes of I/O address space and 16 Kbytes of memory space. No -interrupts are required. - -The original Stallion boards are old. They went out of production some years -back. They offer limited expandability and are available in 8 or 16 port -configurations. An external panel houses 16 RS-232C ports with DB-9 -connectors. They require 16 bytes of I/O address space, and either 64K or -128K of memory space. No interrupt is required. I will not actively support -these boards, although they will work with the driver. - -That's the boards supported by the second driver. The ONboard, Brumby and -Stallion boards are Stallion's older range of intelligent multiports - so -there are lots of them around. They only support a maximum baud rate of -38400. The EasyConnection 8/64 is a true high performance intelligent -multiport board, having much greater throughput than any of Stallion's -older boards. It also supports speeds up to 115200 baud. - - -1.3 HOW TO GET BOARDS - -Stallion Technologies has offices all over the world, as well as many more -distributors and resellers. To find out about local availability please -contact the nearest Stallion office and they can give you all the information -you need. - - Stallion Technologies Sales and Support Offices - =============================================== - - Stallion Technologies Pty. Ltd. - P.O. Box 954 - Toowong, QLD 4066, Australia - Tel. +61 7 3270 4242 - Fax. +61 7 3270 4245 - Email: support@stallion.oz.au - - Stallion Technologies Inc. - 2880 Research Park Drive, - Soquel, CA 95073, USA. - Tel. +1 408 477 0440 - Fax. +1 408 477 0444 - Email: support@staltec.com - - Stallion Technologies Deutschland GmbH. - Martin-Behaim-Strasse 12 - 63263 Neu-Isenburg - Germany - Tel. +49 6102 73970 - Fax. +49 6102 739710 - -Another good source of information about the Stallion range of boards and -local availability is on the Stallion Web page. Check it out at -http://www.stallion.com. - - - -2. INSTALLATION - -This driver, as is, will work on a FreeBSD 2.1 system. It will run on -a 2.0.5 system, or -current version systems by changing a define in the -driver source. - -You will need to build a new kernel to use this driver. So the first thing -you need is to have the full kernel source. Most people will have this -(I hope!). The following assumes that the kernel source is in /usr/src/sys. - -The drivers can support up to 8 boards. For the smart board driver any -combination of EasyIO and EasyConnection 8/32 boards can be installed. For -the intelligent any combination of EasyConnection 8/64, ONboard, Brumby or -original Stallion. So there is a theoretical maximum of 512 ports. -(Off-course I have not tested a system with this many!) - - -[[[ The install instructions are obsolete, it is now standard ]]] -[[[ Skip forward to item 4, editing your kernel config file ]]] - -2.1 Instructions to install: - -1. Copy the driver source files into the kernel source tree. - - cp stallion.c istallion.c cdk.h comstats.h /usr/src/sys/i386/isa - cp scd1400.h /usr/src/sys/i386/isa/ic - - Note: if you are NOT using FreeBSD 2.1.0 then you will need to edit the - stallion.c and istallion.c files and change the VFREEBSD define to match - your version. - -2. Skip to next step if on a FreeBSD kernel later than 2.1.0. - Add a character device switch table entry for the driver that you which - to use into the cdevsw table structure. This involves adding some code - into the kernel conf.c file. - - If you are using an EasyIO or EasyConnection 8/32 then you need to use - the stallion.c driver. All other board types (EasyConnection 8/64, - ONboard, Brumby, Stallion) use the istallion.c driver. You can also have - a mix of boards using both drivers. You will need to use a different - major device number for the second driver though (not the default 72 - - see below for more details on this). - -2.1. If using the stallion.c driver then do: - - cd /usr/src/sys/i386/i386 - vi conf.c - - add the following lines (in 2.1 I put them at line 729): - -/* Stallion Multiport Serial Driver */ -#include "stl.h" -#if NSTL > 0 -d_open_t stlopen; -d_close_t stlclose; -d_read_t stlread; -d_write_t stlwrite; -d_ioctl_t stlioctl; -d_stop_t stlstop; -d_ttycv_t stldevtotty; -#define stlreset nxreset -#define stlmmap nxmmap -#define stlstrategy nxstrategy -#else -#define stlopen nxopen -#define stlclose nxclose -#define stlread nxread -#define stlwrite nxwrite -#define stlioctl nxioctl -#define stlstop nxstop -#define stlreset nxreset -#define stlmmap nxmmap -#define stlstrategy nxstrategy -#define stldevtotty nxdevtotty -#endif - - - - and then inside the actual cdevsw structure definition, at the - last entry add (this is now line 1384 in the 2.1 conf.c): - - { stlopen, stlclose, stlread, stlwrite, /*72*/ - stlioctl, stlstop, stlreset, stldevtotty,/*stallion*/ - ttselect, stlmmap, stlstrategy }, - - - the line above used major number 72, but this may be different - on your system. Take note of what major number you are using. - - - save the file and exit vi. - - -2.2. If using the istallion.c driver then do: - - cd /usr/src/sys/i386/i386 - vi conf.c - - add the following lines (in 2.1 I put them at line 729): - -/* Stallion Intelligent Multiport Serial Driver */ -#include "stl.h" -#if NSTL > 0 -d_open_t stliopen; -d_close_t stliclose; -d_read_t stliread; -d_write_t stliwrite; -d_ioctl_t stliioctl; -d_stop_t stlistop; -d_ttycv_t stlidevtotty; -#define stlireset nxreset -#define stlimmap nxmmap -#define stlistrategy nxstrategy -#else -#define stliopen nxopen -#define stliclose nxclose -#define stliread nxread -#define stliwrite nxwrite -#define stliioctl nxioctl -#define stlistop nxstop -#define stlireset nxreset -#define stlimmap nxmmap -#define stlistrategy nxstrategy -#define stlidevtotty nxdevtotty -#endif - - - - and then inside the actual cdevsw structure definition, at the - last entry add (this is now line 1384 in the 2.1 conf.c): - - { stliopen, stliclose, stliread, stliwrite, /*72*/ - stliioctl, stlistop, stlireset, stlidevtotty,/*istallion*/ - ttselect, stlimmap, stlistrategy }, - - - the line above used major number 72, but this may be different - on your system. Take note of what major number you are using. - - - save the file and exit vi. - -3. Add the driver source files to the kernel files list: - - cd /usr/src/sys/i386/conf - vi files.i386 - - add the following definition lines into the list (it is stored - alphabetically, so insert them appropriately): - -i386/isa/istallion.c optional stli device-driver - -i386/isa/stallion.c optional stl device-driver - - - save the file and exit vi. - -4. Add board probe entries into the kernel configuration file: - - cd /usr/src/sys/i386/conf - cp GENERIC MYKERNEL - - if you already have a kernel config that you use then you - could just use that (instead of MYKERNEL) - vi MYKERNEL - - if only using ECH-PCI boards then you don't need to enter a - configuration line, the kernel will automatically detect - the board at boot up, so skip to step 5. - - enter a line for each board that you want to use. For stallion.c - boards entries should look like: - -device stl0 at isa? port 0x2a0 tty irq 10 - - For istallion.c boards, the entries should look like: - -device stli0 at isa? port 0x2a0 tty iomem 0xcc000 iosiz 0x1000 flags 23 - - (I suggest you put them after the sio? entries) - (Don't enter lines for ECH-PCI boards) - - change the entry resources as required. For the Stallion.c - entries this may involve changing the port address or irq. - For the istallion.c entries this may involve changing the port - address, iomem address, iosiz value and the flags. Select from - the following table for appropriate flags and iosiz values for - your board type: - - EasyConnection 8/64 ISA: flags 23 iosiz 0x1000 - EasyConnection 8/64 EISA: flags 24 iosiz 0x10000 - EasyConnection 8/64 MCA: flags 25 iosiz 0x1000 - ONboard ISA: flags 4 iosiz 0x10000 - ONboard EISA: flags 7 iosiz 0x10000 - ONboard MCA: flags 3 iosiz 0x10000 - Brumby: flags 2 iosiz 0x4000 - Stallion: flags 1 iosiz 0x10000 - - - save the file and exit - -5. Build a new kernel using this configuration. - - cd /usr/src/sys/i386/conf - config MYKERNEL - cd ../../compile/MYKERNEL - make depend - make all - make install - - -And there you have it! It is a little bit of effort to get it in there... - -Once you have a new kernel built reboot to start it up. On startup the -Stallion board probes will report on whether the boards were found or not. -For each board found the driver will print out the type of board found, -and how many panels and ports it has. - -If a board is not found by the driver but is actually in the system then the -most likely problem is that the IO address is incorrect. The easiest thing to -do is change the DIP switches on the board to the desired address and reboot. - -On EasyIO and EasyConnection 8/32 boards the IRQ is software programmable, -so if there is a conflict you may need to change the IRQ used for a board in -the MYKERNEL configuration file and rebuild the kernel. - -Note that the secondary IO address of the EasyConnection 8/32 boards is hard -coded into the stallion.c driver code. It is currently set to IO address -0x280. If you need to use a different address then you will need to edit this -file and change the variable named stl_ioshared. - -On intelligent boards it is possible that the board shared memory region is -clashing with that of some other device. Check for this and change the device -or kernel configuration as required. - - -2.2 INTELLIGENT DRIVER OPERATION - -The intelligent boards also need to have their "firmware" code downloaded -to them. This is done via a user level application supplied in the driver -package called "stlload". Compile this program where ever you dropped the -package files, by typing "make". In its simplest form you can then type - ./stlload -i cdk.sys -in this directory and that will download board 0 (assuming board 0 is an -EasyConnection 8/64 board). To download to an ONboard, Brumby or Stallion do: - ./stlload -i 2681.sys - -Normally you would want all boards to be downloaded as part of the standard -system startup. To achieve this, add one of the lines above into the -/etc/rc.serial file. To download each board just add the "-b <brd-number>" -option to the line. You will need to download code for every board. You should -probably move the stlload program into a system directory, such as /usr/sbin. -Also, the default location of the cdk.sys image file in the stlload -down-loader is /usr/lib/stallion. Create that directory and put the cdk.sys -and 2681.sys files in it. (It's a convenient place to put them anyway). As an -example your /etc/rc.serial file might have the following lines added to it -(if you had 3 boards): - /usr/sbin/stlload -b 0 -i /usr/lib/stallion/cdk.sys - /usr/sbin/stlload -b 1 -i /usr/lib/stallion/2681.sys - /usr/sbin/stlload -b 2 -i /usr/lib/stallion/2681.sys - -The image files cdk.sys and 2681.sys are specific to the board types. The -cdk.sys will only function correctly on an EasyConnection 8/64 board. Similarly -the 2681.sys image will only operate on ONboard, Brumby and Stallion boards. -If you load the wrong image file into a board it will fail to start up, and -of course the ports will not be operational! - - - -3. USING THE DRIVER - -Once the driver is installed you will need to setup some device nodes to -access the serial ports. Use the supplied "mkdevnods" script to automatically -create all required device entries for your boards. To make device nodes for -more than 1 board then just supply the number of boards you are using as a -command line parameter to mkdevnods and it will create nodes for that number -of boards. By default it will create device nodes for 1 board only. - -Note that if the driver is not installed at character major number 72 then -you will need to edit the mkdevnods script and modify the STL_SERIALMAJOR -variable to the major number you are using. - -Device nodes created for the normal serial port devices are named /dev/ttyEX -where X is the port number. (The second boards ports will start from ttyE64, -the third boards from ttyE128, etc). It will also create a set of modem call -out devices named cueX where again X is the port number. - -For the most part the Stallion driver tries to emulate the standard PC system -com ports and the standard sio serial driver. The idea is that you should -be able to use Stallion board ports and com ports inter-changeably without -modifying anything but the device name. Anything that doesn't work like that -should be considered a bug in this driver! - -Since this driver tries to emulate the standard serial ports as much as -possible then most system utilities should work as they do for the standard -com ports. Most importantly "stty" works as expected and "comcontrol" can be -used just like for the serial ports. - -This driver should work with anything that works on standard com serial ports. -Having said that, I have used it on at least the following types of "things" -under FreeBSD: - a) standard dumb terminals (using getty) - b) modems (using cu, etc) - c) ppp (through pppd, kernel ppp) - - - -4. NOTES - -Be aware that these drivers are still very new, so there is sure to be some -bugs in them. Please email me any feedback on bugs, problems, or even good -experiences with these drivers! - -You can use both drivers at once if you have a mix of board types installed -in a system. However to do this you will need to change the major number used -by one of the drivers. Currently both drivers use default major number 72 for -their devices. Change one driver to use some other major number (how this is -achieved will depend on the kernel version you are using), and then modify the -mkdevnods script to make device nodes based on those new major numbers. For -example, you could change the stallion.c driver to use major number 73. You -will also need to create device nodes with different names for the ports, for -eg ttyFXXX. - -Currently the intelligent board driver (istallion.c) does not have the -ability to share a boards memory region with other boards (you can only do -this on EasyConnection 8/64 and ONboards normally anyway). It also does -not currently support any memory address ranges above the low 1Mb region. -These will be fixed in a future release of the driver. - -Finding a free physical memory address range can be a problem. The older -boards like the Stallion and ONboard need large areas (64K or even 128K), so -they can be very difficult to get into a system. If you have 16 Mb of RAM -then you have no choice but to put them somewhere in the 640K -> 1Mb range. -ONboards require 64K, so typically 0xd0000 is good, or 0xe0000 on some -systems. If you have an original Stallion board, "V4.0" or Rev.O, then you -need a 64K memory address space, so again 0xd0000 and 0xe0000 are good. Older -Stallion boards are a much bigger problem. They need 128K of address space and -must be on a 128K boundary. If you don't have a VGA card then 0xc0000 might be -usable - there is really no other place you can put them below 1Mb. - -Both the ONboard and old Stallion boards can use higher memory addresses as -well, but you must have less than 16Mb of RAM to be able to use them. Usual -high memory addresses used include 0xec0000 and 0xf00000. - -The Brumby boards only require 16Kb of address space, so you can usually -squeeze them in somewhere. Common addresses are 0xc8000, 0xcc000, or in -the 0xd0000 range. EasyConnection 8/64 boards are even better, they only -require 4Kb of address space, again usually 0xc8000, 0xcc000 or 0xd0000 -are good. - -If you are using an EasyConnection 8/64-EI or ONboard/E then usually the -0xd0000 or 0xe0000 ranges are the best options below 1Mb. If neither of -them can be used then the high memory support to use the really high address -ranges is the best option. Typically the 2Gb range is convenient for them, -and gets them well out of the way. - -The ports of the EasyIO-8M board do not have DCD or DTR signals. So these -ports cannot be used as real modem devices. Generally when using these -ports you should only use the cueX devices. - -There is a new utility in this package that reports statistics on the -serial ports. You will need to have the ncurses library installed on your -system to build it. - -To build the statistics display program type: - make stlstats -Once compiled simply run it (you will need to be root) and it will display -a port summary for the first board and panel installed. Use the digits to -select different board numbers, or 'n' to cycle through the panels on a -board. To look at detailed port information then hit 'p', that will display -detailed port 0 information. Use the digits and letters 'a' through 'f' to -select the different ports (on this board and panel). - - - -5. ACKNOWLEDGEMENTS - -This driver is loosely based on the code of the FreeBSD sio serial driver. -A big thanks to Stallion Technologies for the use of their equipment. - |