The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/Documentation/stallion.txt

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 
    2 Stallion Multiport Serial Driver Readme
    3 ---------------------------------------
    4 
    5 Copyright (C) 1994-1999,  Stallion Technologies (support@stallion.com).
    6 
    7 Version:   5.5.1
    8 Date:      28MAR99
    9 
   10 
   11 
   12 1. INTRODUCTION
   13 
   14 There are two drivers that work with the different families of Stallion
   15 multiport serial boards. One is for the Stallion smart boards - that is
   16 EasyIO, EasyConnection 8/32 and EasyConnection 8/64-PCI, the other for
   17 the true Stallion intelligent multiport boards - EasyConnection 8/64
   18 (ISA, EISA, MCA), EasyConnection/RA-PCI, ONboard and Brumby.
   19 
   20 If you are using any of the Stallion intelligent multiport boards (Brumby,
   21 ONboard, EasyConnection 8/64 (ISA, EISA, MCA), EasyConnection/RA-PCI) with
   22 Linux you will need to get the driver utility package. This package is
   23 available at most of the Linux archive sites (and on CD-ROMs that contain
   24 these archives). The file will be called stallion-X.X.X.tar.gz where X.X.X
   25 will be the version number. In particular this package contains the board
   26 embedded executable images that are required for these boards. It also
   27 contains the downloader program. These boards cannot be used without this.
   28 
   29 The Stallion Technologies ftp site, ftp.stallion.com, will always have
   30 the latest version of the driver utility package. Other sites that usually
   31 have the latest version are tsx-11.mit.edu, sunsite.unc.edu and their
   32 mirrors.
   33 
   34 ftp.stallion.com:/drivers/ata5/Linux/v550.tar.gz
   35 tsx-11.mit.edu:/pub/linux/packages/stallion/stallion-5.5.0.tar.gz
   36 sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-5.5.0.tar.gz
   37 
   38 As of the printing of this document the latest version of the driver
   39 utility package is 5.5.0. If a later version is now available then you
   40 should use the latest version.
   41 
   42 If you are using the EasyIO, EasyConnection 8/32 or EasyConnection 8/64-PCI
   43 boards then you don't need this package. Although it does have a handy
   44 script to create the /dev device nodes for these boards, and a serial stats
   45 display program.
   46 
   47 If you require DIP switch settings, EISA or MCA configuration files, or any
   48 other information related to Stallion boards then have a look at Stallion's
   49 web pages at http://www.stallion.com.
   50 
   51 
   52 
   53 2. INSTALLATION
   54 
   55 The drivers can be used as loadable modules or compiled into the kernel.
   56 You can choose which when doing a "config" on the kernel.
   57 
   58 All ISA, EISA and MCA boards that you want to use need to be configured into
   59 the driver(s). All PCI boards will be automatically detected when you load
   60 the driver - so they do not need to be entered into the driver(s)
   61 configuration structure. Note that kernel PCI support is required to use PCI
   62 boards.
   63 
   64 There are two methods of configuring ISA, EISA and MCA boards into the drivers.
   65 If using the driver as a loadable module then the simplest method is to pass
   66 the driver configuration as module arguments. The other method is to modify
   67 the driver source to add configuration lines for each board in use.
   68 
   69 If you have pre-built Stallion driver modules then the module argument
   70 configuration method should be used. A lot of Linux distributions come with
   71 pre-built driver modules in /lib/modules/X.Y.Z/misc for the kernel in use.
   72 That makes things pretty simple to get going.
   73 
   74 
   75 2.1 MODULE DRIVER CONFIGURATION:
   76 
   77 The simplest configuration for modules is to use the module load arguments
   78 to configure any ISA, EISA or MCA boards. PCI boards are automatically
   79 detected, so do not need any additional configuration at all.
   80 
   81 If using EasyIO, EasyConnection 8/32 ISA or MCA, or EasyConnection 8/63-PCI
   82 boards then use the "stallion" driver module, Otherwise if you are using
   83 an EasyConnection 8/64 ISA, EISA or MCA, EasyConnection/RA-PCI, ONboard,
   84 Brumby or original Stallion board then use the "istallion" driver module.
   85 
   86 Typically to load up the smart board driver use:
   87 
   88     insmod stallion.o
   89 
   90 This will load the EasyIO and EasyConnection 8/32 driver. It will output a
   91 message to say that it loaded and print the driver version number. It will
   92 also print out whether it found the configured boards or not. These messages
   93 may not appear on the console, but typically are always logged to
   94 /var/adm/messages or /var/log/syslog files - depending on how the klogd and
   95 syslogd daemons are setup on your system.
   96 
   97 To load the intelligent board driver use:
   98 
   99     insmod istallion.o
  100 
  101 It will output similar messages to the smart board driver.
  102 
  103 If not using an auto-detectable board type (that is a PCI board) then you
  104 will also need to supply command line arguments to the "insmod" command
  105 when loading the driver. The general form of the configuration argument is
  106 
  107     board?=<name>[,<ioaddr>[,<addr>][,<irq>]]
  108 
  109 where:
  110 
  111     board?  -- specifies the arbitrary board number of this board,
  112                can be in the range 0 to 3.
  113 
  114     name    -- textual name of this board. The board name is the comman
  115                board name, or any "shortened" version of that. The board
  116                type number may also be used here.
  117 
  118     ioaddr  -- specifies the I/O address of this board. This argument is
  119                optional, but should generally be specified.
  120 
  121     addr    -- optional second address argument. Some board types require
  122                a second I/O address, some require a memory address. The
  123                exact meaning of this argument depends on the board type.
  124 
  125     irq     -- optional IRQ line used by this board.
  126 
  127 Up to 4 board configuration arguments can be specified on the load line.
  128 Here is some examples:
  129 
  130     insmod stallion.o board0=easyio,0x2a0,5
  131 
  132 This configures an EasyIO board as board 0 at I/O address 0x2a0 and IRQ 5.
  133 
  134     insmod istallion.o board3=ec8/64,0x2c0,0xcc000
  135 
  136 This configures an EasyConnection 8/64 ISA as board 3 at I/O address 0x2c0 at
  137 memory address 0xcc000.
  138 
  139     insmod stallion.o board1=ec8/32-at,0x2a0,0x280,10
  140 
  141 This configures an EasyConnection 8/32 ISA board at primary I/O address 0x2a0,
  142 secondary address 0x280 and IRQ 10.
  143 
  144 You will probably want to enter this module load and configuration information
  145 into your system startup scripts so that the drivers are loaded and configured
  146 on each system boot. Typically the start up script would be something line
  147 /etc/rc.d/rc.modules.
  148 
  149 
  150 2.2 STATIC DRIVER CONFIGURATION:
  151 
  152 For static driver configuration you need to modify the driver source code.
  153 Entering ISA, EISA and MCA boards into the driver(s) configuration structure
  154 involves editing the driver(s) source file. It's pretty easy if you follow
  155 the instructions below. Both drivers can support up to 4 boards. The smart
  156 card driver (the stallion.c driver) supports any combination of EasyIO and
  157 EasyConnection 8/32 boards (up to a total of 4). The intelligent driver
  158 supports any combination of ONboards, Brumbys, Stallions and EasyConnection
  159 8/64 (ISA and EISA) boards (up to a total of 4).
  160 
  161 To set up the driver(s) for the boards that you want to use you need to
  162 edit the appropriate driver file and add configuration entries.
  163 
  164 If using EasyIO or EasyConnection 8/32 ISA or MCA boards, do:
  165    vi /usr/src/linux/drivers/char/stallion.c
  166       - find the definition of the stl_brdconf array (of structures)
  167         near the top of the file
  168       - modify this to match the boards you are going to install
  169         (the comments before this structure should help)
  170       - save and exit
  171 
  172 If using ONboard, Brumby, Stallion or EasyConnection 8/64 (ISA or EISA)
  173 boards then do:
  174    vi /usr/src/linux/drivers/char/istallion.c
  175       - find the definition of the stli_brdconf array (of structures)
  176         near the top of the file
  177       - modify this to match the boards you are going to install
  178         (the comments before this structure should help)
  179       - save and exit
  180 
  181 Once you have set up the board configurations then you are ready to build
  182 the kernel or modules.
  183 
  184 When the new kernel is booted, or the loadable module loaded then the
  185 driver will emit some kernel trace messages about whether the configured
  186 boards were detected or not. Depending on how your system logger is set
  187 up these may come out on the console, or just be logged to
  188 /var/adm/messages or /var/log/syslog. You should check the messages to
  189 confirm that all is well.
  190 
  191 
  192 2.3 SHARING INTERRUPTS
  193 
  194 It is possible to share interrupts between multiple EasyIO and
  195 EasyConnection 8/32 boards in an EISA system. To do this you must be using
  196 static driver configuration, modifying the driver source code to add driver
  197 configuration. Then a couple of extra things are required:
  198 
  199 1. When entering the board resources into the stallion.c file you need to
  200    mark the boards as using level triggered interrupts. Do this by replacing
  201    the "0" entry at field position 6 (the last field) in the board
  202    configuration structure with a "1". (This is the structure that defines
  203    the board type, I/O locations, etc. for each board). All boards that are
  204    sharing an interrupt must be set this way, and each board should have the
  205    same interrupt number specified here as well. Now build the module or
  206    kernel as you would normally.
  207 
  208 2. When physically installing the boards into the system you must enter
  209    the system EISA configuration utility. You will need to install the EISA
  210    configuration files for *all* the EasyIO and EasyConnection 8/32 boards
  211    that are sharing interrupts. The Stallion EasyIO and EasyConnection 8/32
  212    EISA configuration files required are supplied by Stallion Technologies
  213    on the EASY Utilities floppy diskette (usually supplied in the box with
  214    the board when purchased. If not, you can pick it up from Stallion's FTP
  215    site, ftp.stallion.com). You will need to edit the board resources to
  216    choose level triggered interrupts, and make sure to set each board's
  217    interrupt to the same IRQ number.
  218 
  219 You must complete both the above steps for this to work. When you reboot
  220 or load the driver your EasyIO and EasyConnection 8/32 boards will be
  221 sharing interrupts.
  222 
  223 
  224 2.4 USING HIGH SHARED MEMORY
  225 
  226 The EasyConnection 8/64-EI, ONboard and Stallion boards are capable of
  227 using shared memory addresses above the usual 640K - 1Mb range. The ONboard
  228 ISA and the Stallion boards can be programmed to use memory addresses up to
  229 16Mb (the ISA bus addressing limit), and the EasyConnection 8/64-EI and
  230 ONboard/E can be programmed for memory addresses up to 4Gb (the EISA bus
  231 addressing limit).
  232 
  233 The higher than 1Mb memory addresses are fully supported by this driver.
  234 Just enter the address as you normally would for a lower than 1Mb address
  235 (in the driver's board configuration structure).
  236 
  237 
  238 
  239 2.5 TROUBLE SHOOTING
  240 
  241 If a board is not found by the driver but is actually in the system then the
  242 most likely problem is that the I/O address is wrong. Change the module load
  243 argument for the loadable module form. Or change it in the driver stallion.c
  244 or istallion.c configuration structure and rebuild the kernel or modules, or
  245 change it on the board.
  246 
  247 On EasyIO and EasyConnection 8/32 boards the IRQ is software programmable, so
  248 if there is a conflict you may need to change the IRQ used for a board. There
  249 are no interrupts to worry about for ONboard, Brumby or EasyConnection 8/64
  250 (ISA, EISA and MCA) boards. The memory region on EasyConnection 8/64 and
  251 ONboard boards is software programmable, but not on the Brumby boards.
  252 
  253 
  254 
  255 3. USING THE DRIVERS
  256 
  257 3.1 INTELLIGENT DRIVER OPERATION
  258 
  259 The intelligent boards also need to have their "firmware" code downloaded
  260 to them. This is done via a user level application supplied in the driver
  261 utility package called "stlload". Compile this program wherever you dropped
  262 the package files, by typing "make". In its simplest form you can then type
  263 
  264     ./stlload -i cdk.sys
  265 
  266 in this directory and that will download board 0 (assuming board 0 is an
  267 EasyConnection 8/64 or EasyConnection/RA board). To download to an
  268 ONboard, Brumby or Stallion do:
  269 
  270     ./stlload -i 2681.sys
  271 
  272 Normally you would want all boards to be downloaded as part of the standard
  273 system startup. To achieve this, add one of the lines above into the
  274 /etc/rc.d/rc.S or /etc/rc.d/rc.serial file. To download each board just add
  275 the "-b <brd-number>" option to the line. You will need to download code for
  276 every board. You should probably move the stlload program into a system
  277 directory, such as /usr/sbin. Also, the default location of the cdk.sys image
  278 file in the stlload down-loader is /usr/lib/stallion. Create that directory
  279 and put the cdk.sys and 2681.sys files in it. (It's a convenient place to put
  280 them anyway). As an example your /etc/rc.d/rc.S file might have the
  281 following lines added to it (if you had 3 boards):
  282 
  283     /usr/sbin/stlload -b 0 -i /usr/lib/stallion/cdk.sys
  284     /usr/sbin/stlload -b 1 -i /usr/lib/stallion/2681.sys
  285     /usr/sbin/stlload -b 2 -i /usr/lib/stallion/2681.sys
  286 
  287 The image files cdk.sys and 2681.sys are specific to the board types. The
  288 cdk.sys will only function correctly on an EasyConnection 8/64 board. Similarly
  289 the 2681.sys image fill only operate on ONboard, Brumby and Stallion boards.
  290 If you load the wrong image file into a board it will fail to start up, and
  291 of course the ports will not be operational!
  292 
  293 If you are using the modularized version of the driver you might want to put
  294 the insmod calls in the startup script as well (before the download lines
  295 obviously).
  296 
  297 
  298 3.2 USING THE SERIAL PORTS
  299 
  300 Once the driver is installed you will need to setup some device nodes to
  301 access the serial ports. The simplest method is to use the stallion utility
  302 "mkdevnods" script. It will automatically create device entries for Stallion
  303 boards. This will create the normal serial port devices as /dev/ttyE# where
  304 # is the port number starting from 0. A bank of 64 minor device numbers is
  305 allocated to each board, so the first port on the second board is port 64,
  306 etc. A set of callout type devices is also created. They are created as the
  307 devices /dev/cue# where # is the same as for the ttyE devices.
  308 
  309 For the most part the Stallion driver tries to emulate the standard PC system
  310 COM ports and the standard Linux serial driver. The idea is that you should
  311 be able to use Stallion board ports and COM ports interchangeably without
  312 modifying anything but the device name. Anything that doesn't work like that
  313 should be considered a bug in this driver!
  314 
  315 If you look at the driver code you will notice that it is fairly closely
  316 based on the Linux serial driver (linux/drivers/char/serial.c). This is
  317 intentional, obviously this is the easiest way to emulate its behavior!
  318 
  319 Since this driver tries to emulate the standard serial ports as much as
  320 possible, most system utilities should work as they do for the standard
  321 COM ports. Most importantly "stty" works as expected and "setserial" can
  322 also be used (excepting the ability to auto-configure the I/O and IRQ
  323 addresses of boards). Higher baud rates are supported in the usual fashion
  324 through setserial or using the CBAUDEX extensions. Note that the EasyIO and
  325 EasyConnection (all types) support at least 57600 and 115200 baud. The newer
  326 EasyConnection XP modules and new EasyIO boards support 230400 and 460800
  327 baud as well. The older boards including ONboard and Brumby support a
  328 maximum baud rate of 38400.
  329 
  330 If you are unfamiliar with how to use serial ports, then get the Serial-HOWTO
  331 by Greg Hankins. It will explain everything you need to know!
  332 
  333 
  334 
  335 4. NOTES
  336 
  337 You can use both drivers at once if you have a mix of board types installed
  338 in a system. However to do this you will need to change the major numbers
  339 used by one of the drivers. Currently both drivers use major numbers 24, 25
  340 and 28 for their devices. Change one driver to use some other major numbers,
  341 and then modify the mkdevnods script to make device nodes based on those new
  342 major numbers. For example, you could change the istallion.c driver to use
  343 major numbers 60, 61 and 62. You will also need to create device nodes with
  344 different names for the ports, for example ttyF# and cuf#.
  345 
  346 The original Stallion board is no longer supported by Stallion Technologies.
  347 Although it is known to work with the istallion driver.
  348 
  349 Finding a free physical memory address range can be a problem. The older
  350 boards like the Stallion and ONboard need large areas (64K or even 128K), so
  351 they can be very difficult to get into a system. If you have 16 Mb of RAM
  352 then you have no choice but to put them somewhere in the 640K -> 1Mb range.
  353 ONboards require 64K, so typically 0xd0000 is good, or 0xe0000 on some
  354 systems. If you have an original Stallion board, "V4.0" or Rev.O, then you
  355 need a 64K memory address space, so again 0xd0000 and 0xe0000 are good.
  356 Older Stallion boards are a much bigger problem. They need 128K of address
  357 space and must be on a 128K boundary. If you don't have a VGA card then
  358 0xc0000 might be usable - there is really no other place you can put them
  359 below 1Mb.
  360 
  361 Both the ONboard and old Stallion boards can use higher memory addresses as
  362 well, but you must have less than 16Mb of RAM to be able to use them. Usual
  363 high memory addresses used include 0xec0000 and 0xf00000.
  364 
  365 The Brumby boards only require 16Kb of address space, so you can usually
  366 squeeze them in somewhere. Common addresses are 0xc8000, 0xcc000, or in
  367 the 0xd0000 range. EasyConnection 8/64 boards are even better, they only
  368 require 4Kb of address space, again usually 0xc8000, 0xcc000 or 0xd0000
  369 are good.
  370 
  371 If you are using an EasyConnection 8/64-EI or ONboard/E then usually the
  372 0xd0000 or 0xe0000 ranges are the best options below 1Mb. If neither of
  373 them can be used then the high memory support to use the really high address
  374 ranges is the best option. Typically the 2Gb range is convenient for them,
  375 and gets them well out of the way.
  376 
  377 The ports of the EasyIO-8M board do not have DCD or DTR signals. So these
  378 ports cannot be used as real modem devices. Generally, when using these
  379 ports you should only use the cueX devices.
  380 
  381 The driver utility package contains a couple of very useful programs. One 
  382 is a serial port statistics collection and display program - very handy
  383 for solving serial port problems. The other is an extended option setting
  384 program that works with the intelligent boards.
  385 
  386 
  387 
  388 5. DISCLAIMER
  389 
  390 The information contained in this document is believed to be accurate and
  391 reliable. However, no responsibility is assumed by Stallion Technologies
  392 Pty. Ltd. for its use, nor any infringements of patents or other rights
  393 of third parties resulting from its use. Stallion Technologies reserves
  394 the right to modify the design of its products and will endeavour to change
  395 the information in manuals and accompanying documentation accordingly.
  396 

Cache object: 3f4252a2177444fb40c4106ac684482f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.