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

Linux driver for General Standards Corp. 16AO12 Analog output board family.


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

Version 1.9.3 (Released 4/18/2006)

-  Added ioctl to set the endian handling for PowerPC and other 
   big endian systems.

Version 1.9.2 (Released 2/24/2006)

-  Reordered some events to reduce chance of a race condition.
 
Version 1.9.1 (Released 2/24/2006)

- Code cleanup.

Version 1.9.0 (Released 2/2/2006)

- Updated support for 2.6 kernel.
- Standardized some calls to futher reduce race conditions.

Version 1.8 (Released 3/23/2005)

- Fixed return from write operation to bytes written instead of zero.
- Rearranged write code to minimize chance of race condition.

Version 1.7 (Released 1/26/2005)

- Fixed a bug where the first autocalibration after power-up would fail.
- Added support for buffer size of 131072.
- Fixed defines for virtual buffer sizes.
- Added wait for the hardware buffer to be less than 1/4 full before writing 
  data. The application is still responsible for making sure the entire passed
  program buffer will fit in the hardware buffer.

Version 1.6 (Released 1/2/2005)

- Fixed a problem with DMA where a null pointer was causing a segmentation fault.
- Changed the test application to loop until a key is pressed on the keyboard.
- Changed the test application to explicitly set DMA disabled before a 
  PIO transfer.

Version 1.5 (released 1/19/2005)

- Changed order of setup for autocalibration call to 
  minimize the chance of the autocal interrupt being missed.
- Added message for debug log indicating if an interrupt
  is not handled.
- Rearranged the interrupt acknowledgement logic to avoid
  leaving a local interrupt active at the end of the
  interrupt handler.

Version 1.4 (Released 12/3/2004)

- Added user manual.
- Added support for Linux kernel 2.6, including the FC2 kernel.
- Modified some IOCTL calls to be consistent with other drivers
  in the GSC family.
- Updated timeout handling.

Version 1.3
- Fixed a bug causing autocal to timeout.

Version 1.2
- Fixed compiler warnings on newer kernels.
- Removed "abort" from unexpected DMA clear routine

Version 1.1
- Fixed DMA data copy.

Version 1.0
- Initial release.

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

Makefile      	    -- driver and test program make file
app.mak             -- makefile for test apps
gsc_start     	    -- script to install driver
README.TXT    	    -- this file
internal.h    	    -- driver local include file
gsc16ao_ioctl.h     -- driver ioctl definitions
*.c                 -- driver source code
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

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

Consult the source of the test programs for examples on how to open, close,
control and read the A/D board. 