# ADDI-DATA APCI-1500 Linux Driver

**Copyright 2014-2021 - ADDI-DATA GmbH**

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

## Card-Specific Information

### Universal Watchdog (UW) Product

The board **APCI-1500-UW** differs from APCI-1500 by using an Universal Watchdog (UW) instead of the Zilog watchdog.

To compile the driver for APCI-1500-UW, use the extra configuration option:

```bash
# For kernel 2.4
make -f _makefile 2.4 CONFIG_APCI1500_UNIVERSAL_WATCHDOG=y

# For kernel 2.6 and upper
make -f _makefile 2.6 CONFIG_APCI1500_UNIVERSAL_WATCHDOG=y
```

## API and Kernel Interface

### Header Files

See the ADDI-DATA header files in `include/linux/addidata/`:
- `apci1500.h` for description of the IOCTL commands provided
- `apci1500-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_APCI1500_CheckAndGetPCISlotNumber`
- `CMD_APCI1500_GetHardwareInformation`

## Device Files

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

- **Kernel 2.4**: File created in `/proc/sys/apci1500`
  - 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/apci1500`

**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
