                           RELEASENOTES.TXT

                     Enhanced DMA Driver for Linux 
                            Version 1.0.0 
=======================================================================
License Information
=======================================================================
See License.txt

-----------------------------------------------------------------------
System Requirements - Linux 2.4.21
-----------------------------------------------------------------------            

The Enhanced DMA driver is intended as a reference vehicle to  
enable customer driver development.

All EDMA driver source code development and testing was performed
using the Red Hat Enterprise Linux AS operating system.  While the
code is portable to other Linux versions, no testing has been 
performed on other kernel versions or with other versions of 
the GNU C Compiler.  Any specific kernel version porting is left to
the user. It is not necessary to build the kernel, but the kernel 
source must be installed to build the driver. The list below 
describes the necessary system requirements.

-Red Hat Enterprise Linux AS (or WS) Version 3, Update 6 
-Linux Kernel Source Code (AS Version 2.4.21-37.El,
 WS Version 2.4.21-4.EL)
-GNU C Compiler Version 3.2.3 

=======================================================================
EDMA General Driver Features
=======================================================================
*Implemented in C language and intended for use as an Open Source 
module.

*Compliant with the GNU Public License (GPL).

*Tested and written for Linux kernel versions
2.4.21-4.EL and 2.4.21-37.EL.versions as a point release.

*Implemented as a driver-to-driver model with a client 
driver API. (See User Guide for details)

*Thread-safe/Re-entrant.

*Supports the following features of the Intel(R) 3100 chipset's
enhanced Direct Memory Access (EDMA) Controller: 

1. Memory to memory (MM) and memory to memory mapped IO (MMIO)
transfers between two physical addresses with a 36 bit
address range for both MM and MMIO transfers.

2. Maximum transfer size of 16 Mbytes per block.

3. Chain mode enhanced DMA transfer with four independent 
channels.

4. Programmable independent alignment between source
and destination addresses.

5. Increment of the source and destination address.

6. Increment of the destination address and decrement of the
 source address to enable byte stream reversal.

7. Constant address mode for the destination address based on the 
transfer granularity to enable targeting of memory mapped 
I/O FIFO devices.

8. Buffer/memory initialization mode.

-----------------------------------------------------------------------
Build and Installation - Linux 2.4.21
-----------------------------------------------------------------------
The EDMA driver is available as a gzipped tarball 
(edma_driver-1.0.tar.gz) for the Linux environment.  The EDMA driver
source code may be extracted to any directory of preference. 

Example code extraction on a Linux machine:

[user@machine] mkdir /mydir/edma; cd /mydir/edma
[user@machine] cp edma_driver-1.0.tar.gz /mydir/edma/
[user@machine] tar -zxf edma_driver-1.0.tar.gz

After code extraction, the following files will be in the working 
directory:

dma.c
dma.h
dma_internals.h
dma_list.h
dma_api.h
Makefile
ReleaseNotes.txt
ProgrammersReferenceGuide.pdf

See the User Guide for details about the function of each file.

The EDMA driver is designed to be built for the Intel(R) 
3100 chipset (EDMA_W), as well as two different 
kernel versions, for a total of two build permutations.  
The Makefile contains a 2.4 section with comments lines,
beginning with the '#' character. The comment lines contain
directions about how to build driver for the 
various platforms and kernel versions.

The build and installation instructions assume that the Linux
kernel source code is stored in the /usr/src directory for
2.4.21 builds. The soft links, /usr/src/linux and /usr/src/linux-2.4,
should be pointing to the kernel source code directory.

Example:
[user@machine] ls -l /usr/src

linux--> /usr/src/linux-2.4.21-4.EL
linux-2.4--> linux-2.4.21-4.EL

If the kernel source was installed in a different location modify
the INCLUDE variable in the Makefile or soft links to point to
the appropriate location.

Example INCLUDE variable in the Makefile:
INCLUDE = -I. -I/usr/src/linux-2.4/include

The EDMA driver is designed to be built for a specific hardware
platform*, the Intel(R) 3100 chipset, indicated by the variable
EDMA_W in the Makefile. The Makefile also contains a variable
near the top of the file called KERNEL_VERSION. The variable
will be prefixed by the '#' or comment character. To uncomment the
line for building, remove the '#' character in front of KERNEL_VERSION.
Use the all_2_4 target to build the driver.

Example Makefile contents:
#Choose a Kernel Version by 'uncommenting' the appropriate kernel 
#version line below.
#KERNEL_VERSION = -DDMA_2_4

Example build for kernel 2.4.21 and the EDMA_W chipset:
[user@machine] cd /mydir/edma
[user@machine] make all_2_4
After the build has completed install the resulting object file, dma.o,
with the insmod program.

[user@machine] insmod dma.o

*NOTE: Installations of other drivers may affect the state of the 
kernel. If the EDMA driver is installed after the installation of
other drivers follow these instructions to return the kernel
back to its previous state. After executing these instructions
follow the EDMA driver installation as outlined above.

[user@machine] cd /usr/src/linux
[user@machine] make mrproper
[user@machine] make oldconfig
[user@machine] make dep
[user@machine] make clean

-----------------------------------------------------------------------
System Requirements - Linux 2.6.9
-----------------------------------------------------------------------
-Red Hat Enterprise Linux AS (or WS) Version 4 
-Linux Kernel Source Code (AS and WS Version 2.6.9-5.EL)
-GNU C Compiler Version 3.4.3
-----------------------------------------------------------------------
Installation - Linux 2.6.9
-----------------------------------------------------------------------
The instructions for building the driver for kernel version 2.6.9 are
the same as those described in the preceding section. Use the
all_2_6 target to the build the driver.

Example Makefile contents:
#Choose a Kernel Version by 'uncommenting' the appropriate kernel 
#version line below.

#KERNEL_VERSION = -DDMA_2_6

Example build for kernel 2.6.9 and the EDMA_W chipset:
[user@machine] cd /mydir/edma
[user@machine] make all_2_6

After the build has completed install the resulting object file, dma.ko, 
with the insmod program.

[user@machine] insmod dma.ko

-----------------------------------------------------------------------
Features Available Only in Linux Kernel version 2.6.9
-----------------------------------------------------------------------
*SupportsMessage Signaled Interrupts (MSI).

-----------------------------------------------------------------------
Errata
-----------------------------------------------------------------------
1.  EDMA transfer (> 15 links) fails with large buffer chains.
2.  The EDMA transfer function, edma_memcpy does not check that the  
source and destination addresses are valid before executing a 
memory transfer operation.
3.  After several ivocations of edma_memcpy function, "cookie" 
values returned from the function may expire, indicating that the 
record of a transaction is no longer available . 
-----------------------------------------------------------------------
Copyright © 2005-2006, Intel Corporation

