# ADDI-DATA XPCI-3XXX Linux Driver

**Copyright 2007 - ADDI-DATA**

See the main [README.md](../../../README.md) for general information about:
- User rights management for driver usage
- Driver build and installation process
- Troubleshooting (udev, kernel bumps, permission errors, Comedi conflicts)
- Loading drivers automatically at boot time

## Important Notice

**WARNING**: IF YOU WANT TO USE DMA, PLEASE PATCH YOUR KERNEL WITH THE BIG PHYSICAL AREA PATCH!

Note: The driver supports the use of the bigphysarea patch to allow allocating big amounts of memory continuously. If this patch is not applied to the kernel, you may not be able to use DMA in all cases of acquisition.

See: [bigphysarea-patches](../bigphysarea-patches/README.TXT)

## API and Kernel Interface

### Header Files

See the ADDI-DATA header files in `include/linux/addidata/`:
- See `xpci3xxx.h` for description of the IOCTL commands provided
- See `xpci3xxx-kapi.h` for description of the kernel functions provided

### Deprecated Commands

The following commands are deprecated as the same information can be retrieved from OS facilities:
- `CMD_XPCI3XXX_CheckAndGetPCISlotNumber`
- `CMD_XPCI3XXX_GetHardwareInformation`

## Device Files

For each board detected, the driver dynamically creates a special character device file:

- **Kernel 2.4**: File created in `/proc/sys/xpci3xxx`
  - Major device number: provided by the operating system
  - Minor device number: ordinal in the PCI device list (order of detection)
  - File name: PCI slot identification (BUS/SLOT/FUNCTION in hexadecimal)

- **Kernel >= 2.6**: Node created under `/dev/xpci3xxx`

**WARNING**: This driver has not been tested with a true PCI hotplug system.

## Support

For any request or remark, please contact: info@addi-data.com
