DigiWARE Release Notes for Digi Asynchronous Driver version 1.4.0 March 16, 1999 Digi Xi, Xe, Xr, Xem, C/X Linux operating systems 2.0.x, 2.2.x Software Package P/N 75000250E Diskette (3.5") P/N 40001450E Release Notes P/N 93000239E 1. Enhancements (v1.3.0 - v1.4.0): epca.c: ======= 1. Added 460K and 920K baud support in driver and ditty (see "Speed Patch" note below). 2. Added support for: PCI 2r-920, PCI Xr-422, ISA C/X and PCI C/X. 3. Added code to distinguish various members of the PCI/Xr family during digiDload notification. 4. Fixed kernel module implementation. Now the driver can be managed via modutils (e.g: modprobe, rmmod, lsmod). 5. Converted from old to new style (introduced in later 2.1 kernels) PCI recognition and configuration routines (the original code remains ifdef'd for older kernels). 6. Patch from Dan Taylor to add "digiepca=Override" option for boottime overriding of epcaconfig.h values. 7. Added new ioctls (DIGI_CXCON_INIT and DIGI_CXCON_NEXT) code to get C/X concentrator image (/etc/digi/cxcon.bin), if needed, from digiDload at runtime. 8. Added a new ioctl: DIGI_DISABLE, to disable a given card, so digiDload can disable a card before trying to initialize it. (Without this, a second call to digiDload could make the driver think that a previously initialized C/X is calling for another download image.) 9. Incorporated John Lombardo's patches to provide module load-time command line parameterization and /proc/epca support: a) The user can now give the parameters of the boards on the module load command line. The following parameters are supported: mod_type Module type 2=ISA PC/Xem, etc mod_altpin Altpin? mod_numports How many serial ports do we support? mod_port The base of the io ports window b) The driver now supports a /proc/epca file. This displays the driver's concept of what boards it has installed. There is an ioctl() to give the same information, but for scripting, the /proc file system is easier to work with. 10. Dropped support for the old 1.3.X kernels since the latest enhancements are not backwards compatible. 11. Changed version to 1.4.0 Speed Patch Note: Even in recent kernels (2.0.36 and 2.2.2), code in /usr/src/linux/kernel/sched.c (timer_bh() and do_timer()) currently limits input throughput to a theoretical maximum of 25600 bytes/second. The following patch (thanks to Rick Richardson and Ted T'so) bumps the theoretical ceiling to 51200 bytes/second: In sched.c, look at functions timer_bh() and do_timer(). The last statement in do_timer() is; if (tq_timer) mark_bh(TQUEUE_BH); Move these two lines to the very end of timer_bh(). Since for each poll, only TTY_FLIPBUF_SIZE (512) bytes can be read per channel, polling at the maximum rate of 100 times per second yields a maximum throughput of: 100 polls/second x 512 bytes/poll = 51200 bytes/second Without this patch, the flip buffer is scheduled on one clock tick, but not processed until the next so the throughput is actually limited to 51200/2 = 25600 bytes/second. digiDload ========= 1. Added Xr family support (use xrbios.bin and xrfep.bin instead of the sx*.bin files). 2. Add code to distinguish among the PCI/Xr family members. 3. Added messages to display the adapter type and number of ports as they are initialized. This is especially useful in the event that some adapters succeed while others fail to initialize. 4. Added support for PCI 2R-920, Xr-422, ISA C/X and PCI C/X. 5. Changed version to 1.3.13 ditty ===== 1. Added extended baud rate table including support for 460800 and 921600 rates. digiInstall/digiUpdate/digiConfig ================================= 1. Simplify the patchfiles by using "cp" rather than "patch" wherever possible. 2. If digiInstall detects a prior version of the driver it now immediately calls digiUpdate. 3. digiConfig now provides for configuration of PCI devices. It is no longer necessary to call buildPCI separately if the driver has been installed with digiConfig. 4. Dropped support for 1.2.X kernels. cxconf ====== 1. Added this new program to query the user about C/X concentrator topology and write the magic configuration string to /etc/digi/cxconf.dat. install.doc/Linstall.html ========================= 1. Updated installation texts (thanks to Ben Tucker and Chad Schwartz) Download files (/etc/digi/*.bin) ================================ 1. Updated to latest. 2. Bug fixes: epca.c ====== 1. Fixed broken "fastbaud" communication between ditty and driver (ditty.c and epca.c). 2. Fixed timer calls. 3. Fixed a problem in pc_flush_buffer (old version moved "tout" instead of "tin"). 4. Fixed bug in epcaparam() that caused lost characters by inappropriately calling the Baudrate 0 (line reset) code. 5. Fixed bug in break processing that caused the break condition to persist. 6. Fixed extended baud rate communication problem where baud rates were being remapped even if "fastbaud" was set. 7. Removed references to DIGI_TIMER2 and DIGI_BH2. 8. Fixed a problem with DCD handling where multiple CD line drops would crash 2.1.x kernels 9. Fixed init_PCI() so it will recognize multiple PCI boards of the same type. 10. Fixed a problem in pc_open() where the port was being reinitialized with every open. The problem with this is that data could be lost if one process had a port open for reading/writing and another process subsequently came along and opened the port, for example: to check its status. 11. Fixed a problem in post_fep_init() that caused subsequent accesses to the board (e.g: after enabling polling) to crash the driver if no ports were found at boot time. This situation could arise, for example: on a PCI Xem if the PORTS module is disconnected. Now we just mark the board as DISABLED and continue. 12. Added simple-minded card check code in post_fep_init(). Previously if an ISA card was specified (e.g: via digiConfig) but not installed, the driver would still try to initialize the card and typically generate errors with every call to fepcmd(). Now, if the simple card check fails, we mark the card the card as DISABLED and continue. 13. Removed call to console_print(). 14. It's possible for a process to abort without properly cleaning up after itself. When running the driver as a module, this may make it look like the driver is busy and prevent unloading. Setting the count to 0 on init allows digiDload (or similar) to clear this condition. 15. Patch from Dan Taylor to fix schedule_timeout for 2.2 kernels. 16. Removed fepcmd calls to PAUSERX/RESUMERX since they were redundant and under some circumstances the RESUMERX could cause the C/X concentrators to reboot. digiDload ========= 1. Remove references to include since this file is no longer included in recent distributions. 2. Added code (ifdef'd to PCIBUG) to circumvent a problem with some PCI chipsets. 3. Fixed a bug that kept multiple ISA cards from initializing. 4. Previous versions would quit on any error. In a multiple adapter setup a failure to initialize a prior board would also keep subsequent boards from being initialized. This version displays error messages as appropriate, but then continues trying to initialize any subsequent boards. 5. Changed Makefile to link digiDload using the static option so it will run even on platforms with incompatible libraries. 6. Fixed include file references that prevented compiling digiDload against newer Linux source trees. 7. Removed -D__KERNEL__ from Makefile -- unnecessary and it caused compile failures with 2.1.x kernels. 8. Added init() time call to memoff() to turn off card memory on non-PCI cards to avoid conflicts with shared memory addresses. 9. Add call to DIGI_DISABLE before initializing cards. (Otherwise, subsequent calls to digiDload fail with C/X cards since download requests from the card are misinterpreted.) 10. Add support for multiple C/X configurations via "cxconf" and "/etc/digi/cxconf.dat" 11. Added report_numports() and call to it following DIGI_INIT calls to report "numports" for each card. This is necessary because these values cannot be read from PCI cards until then. 12. Added code to grab /etc/cxcon.bin and pass it to the driver, if needed, via the new ioctls (DIGI_CXCON_INIT and DIGI_CXCON_NEXT). ditty ===== 1. Fixed broken "fastbaud" communication between ditty and driver (ditty.c and epca.c) digiInstall/digiUpdate/digiConfig ================================= 1. Patches from Chad Schwartz to: a. complain and exit if /usr/src/linux doesn't exist b. check for /usr/src/linux/.config c. remove redundant call to write "CONFIG_DIGIEPCA 1" d. complain and exit if /usr/bin/dialog doesn't exist 2. If digiConfig detects one or more C/X cards, it queries the user for concentrator topology and calls cxconf to write /etc/digi/cxconf.dat. 3. Removed obsolete references to DIGI_BH2 in digiUpdate. 4. Removed patchfile references to autoconf.h, .config defconfig, kconfig.tk since these are created on the fly. Instead we now call sed to add a single extra line to /usr/src/linux/.config to indicate that EPCA should be loaded as a module by default. 3. Technical support is available directly from Digi International: Tel, (612) 912-3456 E-mail: digiLnux@dgii.com. FTP: ftp://ftp.dgii.com WWW: http://www.dgii.com 4. Source code and executables are available through various Internet sites, as well as the Digi web page. Diskettes may be ordered by contacting the support number given above. ---------------------------------------------------------------------------- DigiWARE Release Notes for Digi Asynchronous Driver version 1.4.0 (Beta-3) March 10, 1999 Digi Xi, Xe, Xr, Xem, C/X, COM/Xi Linux operating systems 1.2.x, 2.0.x, 2.2.x Software Package P/N 75000250E5P Diskette (3.5") P/N 40001450E5P Release Notes P/N 93000239E5P 1. Enhancements: epca.c: 1. The C/X concentrator download file (/etc/digi/cxcon.bin) is now passed to the driver from digiDload at runtime (via new ioctls: DIGI_CXCON_INIT and DIGI_CXCON_NEXT). 2. Added PCIXR-422 support 3. Changed version to 1.4.0Beta3 digiDload: 1. Added code to grab /etc/cxcon.bin and pass it to the driver, if needed, via the new ioctls. 2. Added PCIXR-422 support 3. Changed version to 1.3.13 cxconf.c: 1. Now provides list of communication modes (from new file /etc/digi/cxconf.hlp") digiInstall/digiUpdate/digiConfig 1. Patches from Chad Schwartz to: a. complain and exit if /usr/src/linux doesn't exist b. check for /usr/src/linux/.config c. remove redundant call to write "CONFIG_DIGIEPCA 1" d. complain and exit if /usr/bin/dialog doesn't exist 2. If digiInstall detects a prior version of the driver it now immediately calls digiUpdate 3. digiConfig now provides for configuration of PCI devices. It is no longer necessary to call buildPCI separately if the driver has been installed with digiConfig. 4. If digiConfig detects one or more C/X cards, it queries the user for concentrator topology and calls cxconf to write /etc/digi/cxconf.dat. 5. Removed obsolete references to DIGI_BH2 in digiUpdate. Download files (/etc/digi): 1. Updated to latest. technotes.doc 1. Added discussion of setting non-standard baud rates via the "fastbaud" option of the "ditty" utility. 2. Bug fixes: epca.c: 1. Removed fepcmd calls to PAUSERX/RESUMERX since they were redundant and under some circumstances the RESUMERX could cause the C/X concentrators to reboot. 3. Technical support is available directly from Digi International: Tel, (612) 912-3456 E-mail: digiLnux@dgii.com. FTP: ftp://ftp.dgii.com WWW: http://www.dgii.com 4. Source code and executables are available through various Internet sites, as well as the Digi web page. Diskettes may be ordered by contacting the support number given above. ---------------------------------------------------------------------------- DigiWARE Release Notes for Digi Asynchronous Driver version 1.3.6 (Beta-6) February 5, 1999 Digi Xi, Xe, Xr, Xem, C/X, COM/Xi Linux operating systems 1.2.x, 2.0.x, 2.2.x Software Package P/N 75000250E4P Diskette (3.5") P/N 40001450E4P Release Notes P/N 93000239E4P 1. Enhancements: epca.c: 1. Implemented kernel module support. Now the driver can be run as a module and managed via modutils (e.g: modprobe, rmmod, lsmod). 2. Converted from old to new style (introduced in later 2.1 and 2.2 kernels) PCI recognition and configuration routines. Old PCI code is ifdef'd for pre-2.1 kernels. 3. Added PCI 2r-920 support. 4. Added support for the CX adapter series (ISA, EISA and PCI). Note, a separate program cxconf is provided to support user specification of the concentrator topology to /etc/digi/cxconf.dat. 5. Added a new ioctl: DIGI_DISABLE, to disable a given card, so digiDload can disable a card before trying to initialize it. Without this, a second call to digiDload could make the driver think that a previously initialized CX is calling for another download image. 6. Patches from Dan Taylor to: a. Fix schedule_timeout for 2.2 kernels b. Add "digiepca=Override" to allow boottime "digiepca=2" overriding of epcaconfig.h values 7. Changed epca.c version to 1.3.6(Beta-6) digiDload: 1. Added CX initialization. 2. Added PCI 2R-290 support. 3. Add support for multiple CX concentrator topologies via "cxconf" and "/etc/digi/cxconf.dat" 4. Added report_numports() and call to it following DIGI_INIT calls to report "numports" for each card. This is necessary because these values cannot be read from PCI cards until then. 5. Changed version to V1.3.11 cxconf.c: 1. New program to query the user about CX concentrator topology and write the magic configuration string to /etc/digi/cxconf.dat digiInstall, digiUpdate: updated NOTE: For this release, the concentrator download file, /etc/digi/cxcon.bin, is converted to C source (/etc/digi/cxcon.c) via bin2c.sh and compiled into epca.c as the cxconc[] array. A subsequent version will implement ioctls and modify digiDload so that the latter can pass this array to epca, if and only if needed, at runtime. 2. Bug fixes: epca.c 1. Added simple-minded card check code in post_fep_init(). Previously if an ISA card was specified (e.g: via digiConfig) but not installed, the driver would still try to initialize the card and typically generate errors with every call to fepcmd(). Now, if the simple card check fails, we mark the card the card as DISABLED and continue. 2. Removed unnecessary call to console_print(). 3. It's possible for a process to abort without properly cleaning up after itself. When running the driver as a module, this may make it look like the driver is busy and prevent unloading. Setting the count to 0 on init should allow digiDload (or similar) to clear this condition. digiDload: 1. Removed -D__KERNEL__ from Makefile -- unnecessary and it caused compile failures with 2.1.x kernels. 2. Added init() time call to memoff() to turn off card memory on non-PCI cards to avoid conflicts with shared memory addresses. Now multiple ISA adapters can share memory addresses. 3. Add call to DIGI_DISABLE before initializing cards. Otherwise, subsequent calls to digiDload fail with CX cards since download requests from the card are misinterpreted. 3. Technical support is available directly from Digi International: Tel, (612) 912-3456 E-mail: digiLnux@dgii.com. FTP: ftp://ftp.dgii.com WWW: http://www.dgii.com 4. Source code and executables are available through various Internet sites, as well as the Digi web page. Diskettes may be ordered by contacting the support number given above. ---------------------------------------------------------------------------- DigiWARE Release Notes for Digi Asynchronous Driver version 1.3.4 (Beta-2) December 12, 1998 Digi Xi, Xe, Xr, Xem, COM/Xi Linux operating systems 1.2.x, 2.0.x and 2.1.x Software Package P/N 75000250E3P Diskette (3.5") P/N 40001450E3P Release Notes P/N 93000239E3P 1. Enhancements: 2. Bug fixes: Installation/update instructions (doc/install.doc): Replaced outdated installation text with Ben Tucker's updated version. Driver (drv/epca.c): 1. Fixed a problem in post_fep_init() that caused subsequent accesses to the board (e.g: after enabling polling) to crash the driver if no ports were found at boot time. This situation could arise, for example: on a PCI Xem if the PORTS module is disconnected. Now we just mark the board as DISABLED and continue. 2. Changed epca.c version to 1.3.4(Beta-2) 3. Technical support is available directly from Digi International: Tel, (612) 912-3456 E-mail: digiLnux@dgii.com. FTP: ftp://ftp.dgii.com WWW: http://www.dgii.com 4. Source code and executables are available through various Internet sites, as well as the Digi web page. Diskettes may be ordered by contacting the support number given above. ---------------------------------------------------------------------------- DigiWARE Release Notes for Digi Asynchronous Driver version 1.3.4 (Beta) November 5, 1998 Digi Xi, Xe, Xr, Xem, COM/Xi Linux operating systems 1.2.x, 2.0.x and 2.1.x Software Package P/N 75000250E2P Diskette (3.5") P/N 40001450E2P Release Notes P/N 93000239E2P 1. Enhancements: 2. Bug fixes: Driver (drv/epca.c): -- Fixed a problem in pc_open() where the port was being reinitialized with every open. The problem with this is that data could be lost if one process had a port open for reading/writing and another process came along and opened the port, for example: to check its status. -- Changed version to 1.3.4(Beta) Card initialization (dl/digiDload.c): -- Added code (ifdef'd to PCIBUG) to circumvent a problem with some PCI chipsets. -- Fixed a bug that kept multiple ISA cards from initializing. -- Previous versions would quit on any error. In a multiple adapter setup a failure to initialize a prior board would also keep subsequent boards from being initialized. This version displays error messages as appropriate, but then continues trying to initialize any subsequent boards. -- Changed makefile to link digiDload using the static option so it will run even on platforms with incompatible libraries. -- Fixed include file references that prevented compiling digiDload against newer Linux source trees. -- Added messages to display the adapter type and number of ports as they are initialized. This is especially useful in the event that some adapters succeed while others fail to initialize. -- Changed version to 1.3.6 FEP and BIOS files: -- Updated the SX and XR FEP and BIN to the latest: v2.3.11. This fixes a number of initialization problems, especially with some variants of the ISA Xem. digiInstall, digiUpdate, digiConfig: -- Updated 3. Technical support is available directly from Digi International: Tel, (612) 912-3456 E-mail: digiLnux@dgii.com. FTP: ftp://ftp.dgii.com WWW: http://www.dgii.com 4. Source code and executables are available through various Internet sites, as well as the Digi web page. Diskettes may be ordered by contacting the support number given above. ---------------------------------------------------------------------------- DigiWARE Release Notes for Digi Asynchronous Driver version 1.3.3 (Beta) March 22, 1998 Digi Xi, Xe, Xr, Xem, COM/Xi Linux operating systems 1.2.x, 2.0.x and 2.1.x Software Package P/N 75000250E (Beta) Diskette (3.5") P/N 40001450E (Beta) Release Notes P/N 93000239E (Beta) 1. Enhancements: -- Simplified the digiInstall patchfiles by changing digiInstall to use "cp" for new files, reserving "patch" only for existing files that require modification. -- Added code to distinguish various members of the PCI/Xr family during digiDload notification. 2. Bug fixes: -- Fixed a problem in epcaparam() that caused characters to be lost under some conditions. -- Fixed problem with handling "break" on input. Previously, the break condition was inappropriately persistent. -- Fixed extended baud rate communication problem where baud rates were remapped even if "fastbaud" was set. -- Removed references to DIGI_TIMER2 and DIGI_BH2. -- Fixed a problem with DCD handling where multiple CD line drops would crash 2.1.x kernels -- Fixed init_PCI() so it will recognize multiple PCI boards of the same type. 3. Technical support may be obtained by contacting Digi Tech support at (612) 912-3456 or by emailing digiLnux@dgii.com. 4. Source code and executables are available through various internet sites, as well as the Digi web page. Diskettes may be ordered by contacting the support number given above. ---------------------------------------------------------------------------- DigiWARE Release Notes for Digi Asynchronous Driver version 1.3.2 February 2, 98 Digi Xi, Xe, Xr, Xem, COM/Xi Linux operating systems 1.2.x, 2.0.x and 2.1.x Software Package P/N 75000250D Diskette (3.5") P/N 40001450D Release Notes P/N 93000239D 1. Enhancements: -- Added support for the PC and PCI Xr920 cards including adding support for 460800 and 921600 baud rate settings. -- Updated on-board operating system files (*bios.bin, *fep.bin). NOTE ON HIGH BAUD RATE SETTINGS: Current Linux kernels (e.g: 2.0.33 and 2.1.79) limit the maximum theoretical input rate to 25600 bytes/second per port. See changes.doc for a patch to the kernel scheduler that raises this theoretical limit to 51200 bytes/second. Actual maximum driver throughput with this patch is currently around 41000 bytes/second. Output rates are independent of this limit. 2. Bug fixes: -- Fixed broken "fastbaud" communication between ditty and driver (ditty.c and epca.c). -- Fixed timer calls -- Fixed a problem in pc_flush_buffer 3. Technical support may be obtained by contacting Digi Tech support at (612) 912-3456 or by emailing digiLnux@dgii.com. 4. Source code and executables are available through various internet sites, as well as the Digi web page. Diskettes may be ordered by contacting the support number given above. ---------------------------------------------------------------------------- DigiWARE Release Notes for Digi Asynchronous Driver version 1.3.0 October 14, 97 Digi Xi, Xe, Xr, Xem, COM/Xi Linux operating systems 1.2.x, 2.0.x and 2.1.x Software Package P/N 75000250C Diskette (3.5") P/N 40001450C Release Notes P/N 93000239C 1. Enhancements: - Added digiUpdate, a companion program to digiInstall which knows how to update an existing epca installation. digiInstall depends on a more or less pristine Linux source tree and applies patchfiles as necessary, but it aborts if it finds that a version of the epca driver has already been installed. digiUpdate simply freshens epca files as needed to update from a previous version (e.g: from V1.1.0 to V1.3.0). 2. Bug fixes: - Fixed two problems associated with sensing DCD (carrier detect) modem signal drops: a. On receiving a loss of carrier detect on a modem signal enabled line (-clocal), the V1.1.0 driver schedules a later call to itself to invoke tty_hangup() -- the routine that logs out the user and cleans up. This is an elegant way to handle this situation. However, it appears that there's a problem with the event scheduler code, so we now just call tty_hangup() directly on sensing this condition. b. The V1.1.0 driver is set up to handle events from the Digiboard one at a time. Specifically, it expects modem signal events to always occur separately from data events. However, it is possible for data and modem events to occur together -- logically OR'd up as one single compound event. With the V1.1.0 driver, when this occurs, the modem change event is ignored. The V1.3.0 driver handles both events. 3. Technical support may be obtained by contacting Digi Tech support at (612) 912-3456 or by emailing digiLnux@dgii.com. 4. Source code and executables are available through various internet sites, as well as the Digi web page. Diskettes may be ordered by contacting the support number given above. ---------------------------------------------------------------------------- DigiWARE Release Notes for Digi Asynchronous Driver version 1.1.0 2/17/97 1. Enhancements: - The behavior of cud and ttyD devices has been changed (again). Now both cud and ttyD and default to CLOCAL. This may be easily changed via. the stty command. - digiConfig now checks major.h to determine the major numbers. This was done because of the recent switch in Digi major numbers seen in beta kernel 2.0.12. - The driver can now be configured via. LILO boot command. See the user.doc for details. - The driver now supports the older 64K PC/Xi and PC/Xe cards. - The driver now can be instructed to ignore cards declared in epcaconfig.h and still boot cards that are not declared (Such as PCI). - Improved the support of loadable modules. In particular made changes that allow the driver to better clean up after itself if it is removed. - Nodes corresponding to Digi devices now start at 0 not 1. 2. Bug fixes: - A bug in epca.c involving hard flow control and CRTSCTS was fixed. - Many bugs in ditty.c were fixed. - A bug that prevented some gettys programs from operating with ~CLOCAL devices was corrected. - A bug that caused the driver to 'forget' the status of CLOCAL. - A bug that caused parity to be enabled when high baud rates are in use. - A bug that sometimes caused memory overwrites on PC/Xe cards. - A bug in epca.c was fixed that sometimes caused an erroneous error message warning that PCI has returned an invalid number of ports. - A bug was fixed that prevented the new Saturn PCI cards (Xr, and Xem) from properly booting.