1) What is this
===============

Linux driver for General Standards Corp. PCI-16AI64 A/D board family.


2) Revision History
===================

Version 2.8 (released 8/30/2005)

- Added fixes for 2.6 interrupt and DMA handling.
- Added ioctl to allow app to set hardware buffer size
  in the driver.  Used for detecting overflow.

Version 2.7 (released 5/3/2005)

- Added support for the SSA board.
- Added proper handling for requesting hardware interrupts.

Version 2.6 (10/7/2004)

- Cleaned up logic for driver exit during CTRL-C

Version 2.5 (9/13/2004)

- Added support for kernel version 2.6

Version 2.4 (1/21/2004)

- Added IOCTLs IOCTL_DEVICE_FILL_BUFFER, IOCTL_DEVICE_DETECT_OVERFLOW

Version 2.3 

- Fixed a pointer arithmetic error that cause data loss under some conditions.

Version 2.2

- Fixed a bug where non-DMA transfers were not waiting properly for buffer full.
- Fixed a bug where non-DMA transfers were copying too much data.

Version 2.1

- Added code to abort DMA transfer in event of timeout.
- Added SS specific register definitions.
- Fixed a couple of SS bit definitions.

Version 2.0

- Added support for the SS family members.

Version 1.2

- Fixed errors where some setup fields were being written to the wrong register.
- Removed debugging statements.
- Increased default timeout for autocalibration and initialization.

Version 1.1

- Updates to compile without errors under Red Hat 8.0.

Version 1.0
- Initial release.

3) Files included
=================

Makefile      	    -- driver and test program make file
app.mak             -- makefile for test application
gsc_start     	    -- script to install driver
README.TXT    	    -- this file
pci16AI64.h    	    -- driver local include file
pci16AI64.o    	    -- installable driver module
pci16AI64_ioctl.c    -- driver ioctl routine source
pci16AI64_ioctl.h    -- driver ioctl definitions
pci16AI64_main.c     -- driver source code except for ioctl routine
testapp       	    -- test application #1 (performace test)
testapp.c     	    -- source for test application #1
plx_regs.h    	    -- PLX register defs
sysdep.h      	    -- 2.2/2.x compatibility file

4) Building the driver
======================

The driver in the distribution may not be built for the version of Linux
you are running. To build for your version, the steps are:

- Ensure that the proper kernel sources are installed on your system.
- Edit Makefile and modify the KERNEL_DIR line to point to the top
  of the kernel source tree.
- Type 'make clean'
- Type 'make'  This will build the driver.

For the test applications,

- Type 'make -f app.mak clean'
- Type 'make -f app.mak'

5) Driver installation
======================

Become super user. Change to the directory containing the distribution files. Type

  ./gsc_start

6) Using the driver
===================

Run the attached test programs. They both take "index" of the board to use
as the command line argument.


Examples:

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

> testapp 0
> testapp2 0

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

Consult the source of the test programs for examples on how to open, close,
control and read the A/D board. The 'ioctl()' calls, which implement most
of the functionality of the driver have the same parameters as in the
Windows NT driver. Download the NT driver manual from the General Standards
web site to get started.  The IOCTL interface is also described in the
pci16sdi_ioctl.h file.
