/**
@verbatim

Copyright (C) 2004,2005  ADDI-DATA GmbH for the source code of this module.

	ADDI-DATA GmbH
	Dieselstrasse 3
	D-77833 Ottersweier
	Tel: +19(0)7223/9493-0
	Fax: +49(0)7223/9493-92
	http://www.addi-data.com
	info@addi-data.com

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

You should also find the complete GPL in the COPYING file accompanying this source code.

@endverbatim
*/
/*

  +-----------------------------------------------------------------------+
  | (C) ADDI-DATA GmbH          Dieselstrasse 3      D-77833 Ottersweier  |
  +-----------------------------------------------------------------------+
  | Tel : +49 (0) 7223/9493-0     | email    : info@addi-data.com         |
  | Fax : +49 (0) 7223/9493-92    | Internet : http://www.addi-data.com   |
  +-----------------------------------------------------------------------+
  | Project   : ADDI DATA         | Compiler : GCC 		          |
  | Modulname : addi_common.c     | Version  : 2.96                       |
  +-------------------------------+---------------------------------------+
  | Author    :           | Date     :                    		  |
  +-----------------------------------------------------------------------+
  | Description : ADDI COMMON Main Module                                 |
  +-----------------------------------------------------------------------+
  | CONFIG OPTIONS                                                        |
  |	option[0] - PCI bus number - if bus number and slot number are 0, |
  |			         then driver search for first unused card |
  |	option[1] - PCI slot number                                       |
  |							                  |
  |	option[2] = 0  - DMA ENABLE                                       |
  |               = 1  - DMA DISABLE                                      |
  +----------+-----------+------------------------------------------------+
*/

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/errno.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
#include <linux/timer.h>
#include <linux/pci.h>
#include <linux/gfp.h>
#include "../../comedidev.h"
#include <asm/io.h>
#if defined(CONFIG_APCI_1710) || defined(CONFIG_APCI_3200) || defined(CONFIG_APCI_3300)
#include <asm/i387.h>
#endif
#include "../comedi_fc.h"

#include "addi_common.h"
#include "addi_amcc_s5933.h"

#ifndef ADDIDATA_DRIVER_NAME
#define ADDIDATA_DRIVER_NAME	"addi_common"
#endif

/* Update-0.7.57->0.7.68MODULE_AUTHOR("ADDI-DATA GmbH <info@addi-data.com>"); */
/* Update-0.7.57->0.7.68MODULE_DESCRIPTION("Comedi ADDI-DATA module"); */
/* Update-0.7.57->0.7.68MODULE_LICENSE("GPL"); */

#define devpriv ((struct addi_private *)dev->private)
#define this_board ((struct addi_board *)dev->board_ptr)

#if defined(CONFIG_APCI_1710) || defined(CONFIG_APCI_3200) || defined(CONFIG_APCI_3300)
/* BYTE b_SaveFPUReg [94]; */

void fpu_begin(void)
{
	/* asm ("fstenv b_SaveFPUReg"); */
	kernel_fpu_begin();
}

void fpu_end(void)
{
	/*  asm ("frstor b_SaveFPUReg"); */
	kernel_fpu_end();
}
#endif

#include "addi_eeprom.c"
#if (defined (CONFIG_APCI_3120) || defined (CONFIG_APCI_3001))
#include "hwdrv_apci3120.c"
#endif
#ifdef CONFIG_APCI_1032
#include "hwdrv_apci1032.c"
#endif
#ifdef CONFIG_APCI_1516
#include "hwdrv_apci1516.c"
#endif
#ifdef CONFIG_APCI_2016
#include "hwdrv_apci2016.c"
#endif
#ifdef CONFIG_APCI_2032
#include "hwdrv_apci2032.c"
#endif
#ifdef CONFIG_APCI_2200
#include "hwdrv_apci2200.c"
#endif
#ifdef CONFIG_APCI_1564
#include "hwdrv_apci1564.c"
#endif
#ifdef CONFIG_APCI_1500
#include "hwdrv_apci1500.c"
#endif
#ifdef CONFIG_APCI_3501
#include "hwdrv_apci3501.c"
#endif
#ifdef CONFIG_APCI_035
#include "hwdrv_apci035.c"
#endif
#if (defined (CONFIG_APCI_3200) || defined (CONFIG_APCI_3300))
#include "hwdrv_apci3200.c"
#endif
#ifdef CONFIG_APCI_1710
#include "hwdrv_APCI1710.c"
#endif
#ifdef CONFIG_APCI_16XX
#include "hwdrv_apci16xx.c"
#endif
#ifdef CONFIG_APCI_3XXX
#include "hwdrv_apci3xxx.c"
#endif

#ifndef COMEDI_SUBD_TTLIO
#define COMEDI_SUBD_TTLIO   11	/* Digital Input Output But TTL */
#endif

static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
#ifdef CONFIG_APCI_3120
	{APCI3120_BOARD_VENDOR_ID, 0x818D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_1032
	{APCI1032_BOARD_VENDOR_ID, 0x1003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_1516
	{APCI1516_BOARD_VENDOR_ID, 0x1001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_2016
	{APCI2016_BOARD_VENDOR_ID, 0x1002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_2032
	{APCI2032_BOARD_VENDOR_ID, 0x1004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_2200
	{APCI2200_BOARD_VENDOR_ID, 0x1005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_1564
	{APCI1564_BOARD_VENDOR_ID, 0x1006, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_1500
	{APCI1500_BOARD_VENDOR_ID, 0x80fc, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_3001
	{APCI3120_BOARD_VENDOR_ID, 0x828D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_3501
	{APCI3501_BOARD_VENDOR_ID, 0x3001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_035
	{APCI035_BOARD_VENDOR_ID, 0x0300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_3200
	{APCI3200_BOARD_VENDOR_ID, 0x3000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_3300
	{APCI3200_BOARD_VENDOR_ID, 0x3007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_1710
	{APCI1710_BOARD_VENDOR_ID, APCI1710_BOARD_DEVICE_ID,
		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_16XX
	{0x15B8, 0x1009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x100A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
#ifdef CONFIG_APCI_3XXX
	{0x15B8, 0x3010, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x300F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x300E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3013, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3014, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3015, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3016, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3017, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3018, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3019, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x301A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x301B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x301C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x301D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x301E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x301F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3020, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3021, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3022, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3023, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x300B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
	{0x15B8, 0x3024, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
#endif
	{0}
};

MODULE_DEVICE_TABLE(pci, addi_apci_tbl);

static const struct addi_board boardtypes[] = {
#ifdef CONFIG_APCI_3120
	{"apci3120",
			APCI3120_BOARD_VENDOR_ID,
			0x818D,
			AMCC_OP_REG_SIZE,
			APCI3120_ADDRESS_RANGE,
			8,
			0,
			ADDIDATA_NO_EEPROM,
			NULL,
			16,
			8,
			16,
			8,
			0xffff,
			0x3fff,
			&range_apci3120_ai,
			&range_apci3120_ao,
			4,
			4,
			0x0f,
			0,
			NULL,
			1,
			1,
			1,
			10000,
			100000,
			v_APCI3120_Interrupt,
			i_APCI3120_Reset,
			i_APCI3120_InsnConfigAnalogInput,
			i_APCI3120_InsnReadAnalogInput,
			NULL,
			NULL,
			i_APCI3120_CommandTestAnalogInput,
			i_APCI3120_CommandAnalogInput,
			i_APCI3120_StopCyclicAcquisition,
			NULL,
			i_APCI3120_InsnWriteAnalogOutput,
			NULL,
			NULL,
			i_APCI3120_InsnReadDigitalInput,
			NULL,
			i_APCI3120_InsnBitsDigitalInput,
			i_APCI3120_InsnConfigDigitalOutput,
			i_APCI3120_InsnWriteDigitalOutput,
			i_APCI3120_InsnBitsDigitalOutput,
			NULL,
			i_APCI3120_InsnConfigTimer,
			i_APCI3120_InsnWriteTimer,
			i_APCI3120_InsnReadTimer,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_1032
	{"apci1032",
			APCI1032_BOARD_VENDOR_ID,
			0x1003,
			4,
			APCI1032_ADDRESS_RANGE,
			0,
			0,
			ADDIDATA_EEPROM,
			ADDIDATA_93C76,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			32,
			0,
			0,
			0,
			NULL,
			0,
			0,
			0,
			0,
			0,
			v_APCI1032_Interrupt,
			i_APCI1032_Reset,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI1032_ConfigDigitalInput,
			i_APCI1032_Read1DigitalInput,
			NULL,
			i_APCI1032_ReadMoreDigitalInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_1516
	{"apci1516",
			APCI1516_BOARD_VENDOR_ID,
			0x1001,
			128,
			APCI1516_ADDRESS_RANGE,
			32,
			0,
			ADDIDATA_EEPROM,
			ADDIDATA_S5920,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			8,
			8,
			0,
			0,
			NULL,
			0,
			1,
			0,
			0,
			0,
			NULL,
			i_APCI1516_Reset,
			NULL, NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI1516_Read1DigitalInput,
			NULL,
			i_APCI1516_ReadMoreDigitalInput,
			i_APCI1516_ConfigDigitalOutput,
			i_APCI1516_WriteDigitalOutput,
			i_APCI1516_ReadDigitalOutput,
			NULL,
			i_APCI1516_ConfigWatchdog,
			i_APCI1516_StartStopWriteWatchdog,
			i_APCI1516_ReadWatchdog,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_2016
	{"apci2016",
			APCI2016_BOARD_VENDOR_ID,
			0x1002,
			128,
			APCI2016_ADDRESS_RANGE,
			32,
			0,
			ADDIDATA_EEPROM,
			ADDIDATA_S5920,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			0,
			16,
			0,
			0,
			NULL,
			0,
			1,
			0,
			0,
			0,
			NULL,
			i_APCI2016_Reset,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI2016_ConfigDigitalOutput,
			i_APCI2016_WriteDigitalOutput,
			i_APCI2016_BitsDigitalOutput,
			NULL,
			i_APCI2016_ConfigWatchdog,
			i_APCI2016_StartStopWriteWatchdog,
			i_APCI2016_ReadWatchdog,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_2032
	{"apci2032",
			APCI2032_BOARD_VENDOR_ID,
			0x1004,
			4,
			APCI2032_ADDRESS_RANGE,
			0,
			0,
			ADDIDATA_EEPROM,
			ADDIDATA_93C76,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			0,
			32,
			0xffffffff,
			0,
			NULL,
			0,
			1,
			0,
			0,
			0,
			v_APCI2032_Interrupt,
			i_APCI2032_Reset,
			NULL, NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI2032_ConfigDigitalOutput,
			i_APCI2032_WriteDigitalOutput,
			i_APCI2032_ReadDigitalOutput,
			i_APCI2032_ReadInterruptStatus,
			i_APCI2032_ConfigWatchdog,
			i_APCI2032_StartStopWriteWatchdog,
			i_APCI2032_ReadWatchdog,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_2200
	{"apci2200",
			APCI2200_BOARD_VENDOR_ID,
			0x1005,
			4,
			APCI2200_ADDRESS_RANGE,
			0,
			0,
			ADDIDATA_EEPROM,
			ADDIDATA_93C76,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			8,
			16,
			0,
			0,
			NULL,
			0,
			1,
			0,
			0,
			0,
			NULL,
			i_APCI2200_Reset,
			NULL, NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI2200_Read1DigitalInput,
			NULL,
			i_APCI2200_ReadMoreDigitalInput,
			i_APCI2200_ConfigDigitalOutput,
			i_APCI2200_WriteDigitalOutput,
			i_APCI2200_ReadDigitalOutput,
			NULL,
			i_APCI2200_ConfigWatchdog,
			i_APCI2200_StartStopWriteWatchdog,
			i_APCI2200_ReadWatchdog,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_1564
	{"apci1564",
			APCI1564_BOARD_VENDOR_ID,
			0x1006,
			128,
			APCI1564_ADDRESS_RANGE,
			0,
			0,
			ADDIDATA_EEPROM,
			ADDIDATA_93C76,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			32,
			32,
			0xffffffff,
			0,
			NULL,
			0,
			1,
			0,
			0,
			0,
			v_APCI1564_Interrupt,
			i_APCI1564_Reset,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI1564_ConfigDigitalInput,
			i_APCI1564_Read1DigitalInput,
			NULL,
			i_APCI1564_ReadMoreDigitalInput,
			i_APCI1564_ConfigDigitalOutput,
			i_APCI1564_WriteDigitalOutput,
			i_APCI1564_ReadDigitalOutput,
			i_APCI1564_ReadInterruptStatus,
			i_APCI1564_ConfigTimerCounterWatchdog,
			i_APCI1564_StartStopWriteTimerCounterWatchdog,
			i_APCI1564_ReadTimerCounterWatchdog,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_1500
	{"apci1500",
			APCI1500_BOARD_VENDOR_ID,
			0x80fc,
			128,
			APCI1500_ADDRESS_RANGE,
			4,
			0,
			ADDIDATA_NO_EEPROM,
			NULL,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			16,
			16,
			0xffff,
			0,
			NULL,
			0,
			1,
			0,
			0,
			0,
			v_APCI1500_Interrupt,
			i_APCI1500_Reset,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI1500_ConfigDigitalInputEvent,
			i_APCI1500_Initialisation,
			i_APCI1500_StartStopInputEvent,
			i_APCI1500_ReadMoreDigitalInput,
			i_APCI1500_ConfigDigitalOutputErrorInterrupt,
			i_APCI1500_WriteDigitalOutput,
			i_APCI1500_ConfigureInterrupt,
			NULL,
			i_APCI1500_ConfigCounterTimerWatchdog,
			i_APCI1500_StartStopTriggerTimerCounterWatchdog,
			i_APCI1500_ReadInterruptMask,
			i_APCI1500_ReadCounterTimerWatchdog,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_3001
	{"apci3001",
			APCI3120_BOARD_VENDOR_ID,
			0x828D,
			AMCC_OP_REG_SIZE,
			APCI3120_ADDRESS_RANGE,
			8,
			0,
			ADDIDATA_NO_EEPROM,
			NULL,
			16,
			8,
			16,
			0,
			0xfff,
			0,
			&range_apci3120_ai,
			NULL,
			4,
			4,
			0x0f,
			0,
			NULL,
			1,
			1,
			1,
			10000,
			100000,
			v_APCI3120_Interrupt,
			i_APCI3120_Reset,
			i_APCI3120_InsnConfigAnalogInput,
			i_APCI3120_InsnReadAnalogInput,
			NULL,
			NULL,
			i_APCI3120_CommandTestAnalogInput,
			i_APCI3120_CommandAnalogInput,
			i_APCI3120_StopCyclicAcquisition,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3120_InsnReadDigitalInput,
			NULL,
			i_APCI3120_InsnBitsDigitalInput,
			i_APCI3120_InsnConfigDigitalOutput,
			i_APCI3120_InsnWriteDigitalOutput,
			i_APCI3120_InsnBitsDigitalOutput,
			NULL,
			i_APCI3120_InsnConfigTimer,
			i_APCI3120_InsnWriteTimer,
			i_APCI3120_InsnReadTimer,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_3501
	{"apci3501",
			APCI3501_BOARD_VENDOR_ID,
			0x3001,
			64,
			APCI3501_ADDRESS_RANGE,
			0,
			0,
			ADDIDATA_EEPROM,
			ADDIDATA_S5933,
			0,
			0,
			0,
			8,
			0,
			16383,
			NULL,
			&range_apci3501_ao,
			2,
			2,
			0x3,
			0,
			NULL,
			0,
			1,
			0,
			0,
			0,
			v_APCI3501_Interrupt,
			i_APCI3501_Reset,
			NULL, NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3501_ConfigAnalogOutput,
			i_APCI3501_WriteAnalogOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3501_ReadDigitalInput,
			i_APCI3501_ConfigDigitalOutput,
			i_APCI3501_WriteDigitalOutput,
			i_APCI3501_ReadDigitalOutput,
			NULL,
			i_APCI3501_ConfigTimerCounterWatchdog,
			i_APCI3501_StartStopWriteTimerCounterWatchdog,
			i_APCI3501_ReadTimerCounterWatchdog,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_035
	{"apci035",
			APCI035_BOARD_VENDOR_ID,
			0x0300,
			127,
			APCI035_ADDRESS_RANGE,
			0,
			0,
			1,
			ADDIDATA_S5920,
			16,
			8,
			16,
			0,
			0xff,
			0,
			&range_apci035_ai,
			NULL,
			0,
			0,
			0,
			0,
			NULL,
			0,
			1,
			0,
			10000,
			100000,
			v_APCI035_Interrupt,
			i_APCI035_Reset,
			i_APCI035_ConfigAnalogInput,
			i_APCI035_ReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI035_ConfigTimerWatchdog,
			i_APCI035_StartStopWriteTimerWatchdog,
			i_APCI035_ReadTimerWatchdog,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_3200
	{"apci3200",
			APCI3200_BOARD_VENDOR_ID,
			0x3000,
			128,
			256,
			4,
			4,
			ADDIDATA_EEPROM,
			ADDIDATA_S5920,
			16,
			8,
			16,
			0,
			0x3ffff,
			0,
			&range_apci3200_ai,
			NULL,
			4,
			4,
			0,
			0,
			NULL,
			0,
			0,
			0,
			10000,
			100000,
			v_APCI3200_Interrupt,
			i_APCI3200_Reset,
			i_APCI3200_ConfigAnalogInput,
			i_APCI3200_ReadAnalogInput,
			i_APCI3200_InsnWriteReleaseAnalogInput,
			i_APCI3200_InsnBits_AnalogInput_Test,
			i_APCI3200_CommandTestAnalogInput,
			i_APCI3200_CommandAnalogInput,
			i_APCI3200_StopCyclicAcquisition,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3200_ReadDigitalInput,
			i_APCI3200_ConfigDigitalOutput,
			i_APCI3200_WriteDigitalOutput,
			i_APCI3200_ReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_3300
	/* Begin JK	.20.10.2004 = APCI-3300 integration */
	{"apci3300",
			APCI3200_BOARD_VENDOR_ID,
			0x3007,
			128,
			256,
			4,
			4,
			ADDIDATA_EEPROM,
			ADDIDATA_S5920,
			0,
			8,
			8,
			0,
			0x3ffff,
			0,
			&range_apci3300_ai,
			NULL,
			4,
			4,
			0,
			0,
			NULL,
			0,
			0,
			0,
			10000,
			100000,
			v_APCI3200_Interrupt,
			i_APCI3200_Reset,
			i_APCI3200_ConfigAnalogInput,
			i_APCI3200_ReadAnalogInput,
			i_APCI3200_InsnWriteReleaseAnalogInput,
			i_APCI3200_InsnBits_AnalogInput_Test,
			i_APCI3200_CommandTestAnalogInput,
			i_APCI3200_CommandAnalogInput,
			i_APCI3200_StopCyclicAcquisition,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3200_ReadDigitalInput,
			i_APCI3200_ConfigDigitalOutput,
			i_APCI3200_WriteDigitalOutput,
			i_APCI3200_ReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_1710
	{"apci1710", APCI1710_BOARD_VENDOR_ID, APCI1710_BOARD_DEVICE_ID,
			128,
			8,
			256,
			0,
			ADDIDATA_NO_EEPROM,
			NULL,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			0,
			0,
			0,
			0,
			NULL,
			0,
			0,
			0,
			0,
			0,
			v_APCI1710_Interrupt,
			i_APCI1710_Reset,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},
#endif
#ifdef CONFIG_APCI_16XX
	{"apci1648",
			0x15B8,
			0x1009,
			128,
			0,
			0,
			0,
			ADDIDATA_NO_EEPROM,
			NULL,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			0,
			0,
			0,
			48,
			&range_apci16xx_ttl,
			0,
			0,
			0,
			0,
			0,
			NULL,
			i_APCI16XX_Reset,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI16XX_InsnConfigInitTTLIO,
			i_APCI16XX_InsnBitsReadTTLIO,
			i_APCI16XX_InsnReadTTLIOAllPortValue,
		i_APCI16XX_InsnBitsWriteTTLIO},

	{"apci1696",
			0x15B8,
			0x100A,
			128,
			0,
			0,
			0,
			ADDIDATA_NO_EEPROM,
			NULL,
			0,
			0,
			0,
			0,
			0,
			0,
			NULL,
			NULL,
			0,
			0,
			0,
			96,
			&range_apci16xx_ttl,
			0,
			0,
			0,
			0,
			0,
			NULL,
			i_APCI16XX_Reset,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI16XX_InsnConfigInitTTLIO,
			i_APCI16XX_InsnBitsReadTTLIO,
			i_APCI16XX_InsnReadTTLIOAllPortValue,
		i_APCI16XX_InsnBitsWriteTTLIO},
#endif
#ifdef CONFIG_APCI_3XXX
	{"apci3000-16",
			0x15B8,
			0x3010,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			16,
			8,
			16,
			0,
			4095,
			0,
			&range_apci3XXX_ai,
			NULL,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3000-8",
			0x15B8,
			0x300F,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			8,
			4,
			8,
			0,
			4095,
			0,
			&range_apci3XXX_ai,
			NULL,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3000-4",
			0x15B8,
			0x300E,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			4,
			2,
			4,
			0,
			4095,
			0,
			&range_apci3XXX_ai,
			NULL,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3006-16",
			0x15B8,
			0x3013,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			16,
			8,
			16,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3006-8",
			0x15B8,
			0x3014,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			8,
			4,
			8,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3006-4",
			0x15B8,
			0x3015,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			4,
			2,
			4,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3010-16",
			0x15B8,
			0x3016,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			16,
			8,
			16,
			0,
			4095,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3010-8",
			0x15B8,
			0x3017,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			8,
			4,
			8,
			0,
			4095,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3010-4",
			0x15B8,
			0x3018,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			4,
			2,
			4,
			0,
			4095,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3016-16",
			0x15B8,
			0x3019,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			16,
			8,
			16,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3016-8",
			0x15B8,
			0x301A,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			8,
			4,
			8,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3016-4",
			0x15B8,
			0x301B,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			4,
			2,
			4,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3100-16-4",
			0x15B8,
			0x301C,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			16,
			8,
			16,
			4,
			4095,
			4095,
			&range_apci3XXX_ai,
			&range_apci3XXX_ao,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3100-8-4",
			0x15B8,
			0x301D,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			8,
			4,
			8,
			4,
			4095,
			4095,
			&range_apci3XXX_ai,
			&range_apci3XXX_ao,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3106-16-4",
			0x15B8,
			0x301E,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			16,
			8,
			16,
			4,
			65535,
			4095,
			&range_apci3XXX_ai,
			&range_apci3XXX_ao,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3106-8-4",
			0x15B8,
			0x301F,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			8,
			4,
			8,
			4,
			65535,
			4095,
			&range_apci3XXX_ai,
			&range_apci3XXX_ao,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			10000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3110-16-4",
			0x15B8,
			0x3020,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			16,
			8,
			16,
			4,
			4095,
			4095,
			&range_apci3XXX_ai,
			&range_apci3XXX_ao,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3110-8-4",
			0x15B8,
			0x3021,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			8,
			4,
			8,
			4,
			4095,
			4095,
			&range_apci3XXX_ai,
			&range_apci3XXX_ao,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3116-16-4",
			0x15B8,
			0x3022,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			16,
			8,
			16,
			4,
			65535,
			4095,
			&range_apci3XXX_ai,
			&range_apci3XXX_ao,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3116-8-4",
			0x15B8,
			0x3023,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			8,
			4,
			8,
			4,
			65535,
			4095,
			&range_apci3XXX_ai,
			&range_apci3XXX_ao,
			4,
			4,
			1,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},

	{"apci3003",
			0x15B8,
			0x300B,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			0,
			4,
			4,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			0,
			NULL,
			0,
			0,
			7,
			2500,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},

	{"apci3002-16",
			0x15B8,
			0x3002,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			0,
			16,
			16,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			0,
			NULL,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},

	{"apci3002-8",
			0x15B8,
			0x3003,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			0,
			8,
			8,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			0,
			NULL,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},

	{"apci3002-4",
			0x15B8,
			0x3004,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			0,
			4,
			4,
			0,
			65535,
			0,
			&range_apci3XXX_ai,
			NULL,
			4,
			4,
			1,
			0,
			NULL,
			0,
			0,
			6,
			5000,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			i_APCI3XXX_InsnConfigAnalogInput,
			i_APCI3XXX_InsnReadAnalogInput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnReadDigitalInput,
			NULL,
			i_APCI3XXX_InsnBitsDigitalInput,
			NULL,
			i_APCI3XXX_InsnWriteDigitalOutput,
			i_APCI3XXX_InsnBitsDigitalOutput,
			i_APCI3XXX_InsnReadDigitalOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
		NULL},

	{"apci3500",
			0x15B8,
			0x3024,
			256,
			256,
			256,
			256,
			ADDIDATA_NO_EEPROM,
			ADDIDATA_9054,
			0,
			0,
			0,
			4,
			0,
			4095,
			NULL,
			&range_apci3XXX_ao,
			0,
			0,
			0,
			24,
			&range_apci3XXX_ttl,
			0,
			0,
			0,
			0,
			0,
			v_APCI3XXX_Interrupt,
			i_APCI3XXX_Reset,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnWriteAnalogOutput,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			NULL,
			i_APCI3XXX_InsnConfigInitTTLIO,
			i_APCI3XXX_InsnBitsTTLIO,
			i_APCI3XXX_InsnReadTTLIO,
		i_APCI3XXX_InsnWriteTTLIO},
#endif
};

#define n_boardtypes (sizeof(boardtypes)/sizeof(struct addi_board))

static struct comedi_driver driver_addi = {
	.driver_name = ADDIDATA_DRIVER_NAME,
	.module = THIS_MODULE,
	.attach = i_ADDI_Attach,
	.detach = i_ADDI_Detach,
	.num_names = n_boardtypes,
	.board_name = &boardtypes[0].pc_DriverName,
	.offset = sizeof(struct addi_board),
};

static int __devinit driver_addi_pci_probe(struct pci_dev *dev,
					   const struct pci_device_id *ent)
{
	return comedi_pci_auto_config(dev, driver_addi.driver_name);
}

static void __devexit driver_addi_pci_remove(struct pci_dev *dev)
{
	comedi_pci_auto_unconfig(dev);
}

static struct pci_driver driver_addi_pci_driver = {
	.id_table = addi_apci_tbl,
	.probe = &driver_addi_pci_probe,
	.remove = __devexit_p(&driver_addi_pci_remove)
};

static int __init driver_addi_init_module(void)
{
	int retval;

	retval = comedi_driver_register(&driver_addi);
	if (retval < 0)
		return retval;

	driver_addi_pci_driver.name = (char *)driver_addi.driver_name;
	return pci_register_driver(&driver_addi_pci_driver);
}

static void __exit driver_addi_cleanup_module(void)
{
	pci_unregister_driver(&driver_addi_pci_driver);
	comedi_driver_unregister(&driver_addi);
}

module_init(driver_addi_init_module);
module_exit(driver_addi_cleanup_module);

/*
+----------------------------------------------------------------------------+
| Function name     :static int i_ADDI_Attach(struct comedi_device *dev,            |
|										struct comedi_devconfig *it)        |
|                                        									 |
+----------------------------------------------------------------------------+
| Task              :Detects the card.                                       |
|  			 Configure the driver for a particular board.            |
|  			 This function does all the initializations and memory   |
|			 allocation of data structures for the driver.	         |
+----------------------------------------------------------------------------+
| Input Parameters  :struct comedi_device *dev										 |
|                    struct comedi_devconfig *it									 |
|                                                 					         |
+----------------------------------------------------------------------------+
| Return Value      :  0            					                     |
|                    													     |
+----------------------------------------------------------------------------+
*/

static int i_ADDI_Attach(struct comedi_device *dev, struct comedi_devconfig *it)
{
	struct comedi_subdevice *s;
	int ret, pages, i, n_subdevices;
	unsigned int dw_Dummy;
	resource_size_t io_addr[5];
	unsigned int irq;
	resource_size_t iobase_a, iobase_main, iobase_addon, iobase_reserved;
	struct pcilst_struct *card = NULL;
	unsigned char pci_bus, pci_slot, pci_func;
	int i_Dma = 0;

	ret = alloc_private(dev, sizeof(struct addi_private));
	if (ret < 0)
		return -ENOMEM;

	if (!pci_list_builded) {
		v_pci_card_list_init(this_board->i_VendorId, 1);	/* 1 for displaying the list.. */
		pci_list_builded = 1;
	}
	/* printk("comedi%d: "ADDIDATA_DRIVER_NAME": board=%s",dev->minor,this_board->pc_DriverName); */

	if ((this_board->i_Dma) && (it->options[2] == 0)) {
		i_Dma = 1;
	}

	card = ptr_select_and_alloc_pci_card(this_board->i_VendorId,
					     this_board->i_DeviceId,
					     it->options[0],
					     it->options[1], i_Dma);

	if (card == NULL)
		return -EIO;

	devpriv->allocated = 1;

	if ((i_pci_card_data(card, &pci_bus, &pci_slot, &pci_func, &io_addr[0],
				&irq)) < 0) {
		i_pci_card_free(card);
		printk(" - Can't get AMCC data!\n");
		return -EIO;
	}

	iobase_a = io_addr[0];
	iobase_main = io_addr[1];
	iobase_addon = io_addr[2];
	iobase_reserved = io_addr[3];
	printk("\nBus %d: Slot %d: Funct%d\nBase0: 0x%8llx\nBase1: 0x%8llx\nBase2: 0x%8llx\nBase3: 0x%8llx\n", pci_bus, pci_slot, pci_func, (unsigned long long)io_addr[0], (unsigned long long)io_addr[1], (unsigned long long)io_addr[2], (unsigned long long)io_addr[3]);

	if ((this_board->pc_EepromChip == NULL)
		|| (strcmp(this_board->pc_EepromChip, ADDIDATA_9054) != 0)) {
	   /************************************/
		/* Test if more that 1 address used */
	   /************************************/

		if (this_board->i_IorangeBase1 != 0) {
			dev->iobase = (unsigned long)iobase_main;	/*  DAQ base address... */
		} else {
			dev->iobase = (unsigned long)iobase_a;	/*  DAQ base address... */
		}

		dev->board_name = this_board->pc_DriverName;
		devpriv->amcc = card;
		devpriv->iobase = (int) dev->iobase;
		devpriv->i_IobaseAmcc = (int) iobase_a;	/* AMCC base address... */
		devpriv->i_IobaseAddon = (int) iobase_addon;	/* ADD ON base address.... */
		devpriv->i_IobaseReserved = (int) iobase_reserved;
		devpriv->ps_BoardInfo = this_board;
	} else {
		dev->board_name = this_board->pc_DriverName;
		dev->iobase = (unsigned long)io_addr[2];
		devpriv->amcc = card;
		devpriv->iobase = (int) io_addr[2];
		devpriv->ps_BoardInfo = this_board;
		devpriv->i_IobaseReserved = (int) io_addr[3];
		printk("\nioremap begin");
		devpriv->dw_AiBase = ioremap(io_addr[3],
					     this_board->i_IorangeBase3);
		printk("\nioremap end");
	}

	/* ## */

	if (irq > 0) {
		if (request_irq(irq, v_ADDI_Interrupt, IRQF_SHARED,
				this_board->pc_DriverName, dev) < 0) {
			printk(", unable to allocate IRQ %u, DISABLING IT",
				irq);
			irq = 0;	/* Can't use IRQ */
		} else {
			printk("\nirq=%u", irq);
		}
	} else {
		printk(", IRQ disabled");
	}

	printk("\nOption %d %d %d\n", it->options[0], it->options[1],
		it->options[2]);
	dev->irq = irq;

	/*  Read eepeom and fill addi_board Structure */

	if (this_board->i_PCIEeprom) {
		printk("\nPCI Eeprom used");
		if (!(strcmp(this_board->pc_EepromChip, "S5920"))) {
			/*  Set 3 wait stait */
			if (!(strcmp(this_board->pc_DriverName, "apci035"))) {
				outl(0x80808082, devpriv->i_IobaseAmcc + 0x60);
			} else {
				outl(0x83838383, devpriv->i_IobaseAmcc + 0x60);
			}
			/*  Enable the interrupt for the controler */
			dw_Dummy = inl(devpriv->i_IobaseAmcc + 0x38);
			outl(dw_Dummy | 0x2000, devpriv->i_IobaseAmcc + 0x38);
			printk("\nEnable the interrupt for the controler");
		}
		printk("\nRead Eeprom");
		i_EepromReadMainHeader(io_addr[0], this_board->pc_EepromChip,
			dev);
	} else {
		printk("\nPCI Eeprom unused");
	}

	if (it->options[2] > 0) {
		devpriv->us_UseDma = ADDI_DISABLE;
	} else {
		devpriv->us_UseDma = ADDI_ENABLE;
	}

	if (this_board->i_Dma) {
		printk("\nDMA used");
		if (devpriv->us_UseDma == ADDI_ENABLE) {
			/*  alloc DMA buffers */
			devpriv->b_DmaDoubleBuffer = 0;
			for (i = 0; i < 2; i++) {
				for (pages = 4; pages >= 0; pages--) {
					devpriv->ul_DmaBufferVirtual[i] =
						(void *) __get_free_pages(GFP_KERNEL, pages);

					if (devpriv->ul_DmaBufferVirtual[i])
						break;
				}
				if (devpriv->ul_DmaBufferVirtual[i]) {
					devpriv->ui_DmaBufferPages[i] = pages;
					devpriv->ui_DmaBufferSize[i] =
						PAGE_SIZE * pages;
					devpriv->ui_DmaBufferSamples[i] =
						devpriv->
						ui_DmaBufferSize[i] >> 1;
					devpriv->ul_DmaBufferHw[i] =
						virt_to_bus((void *)devpriv->
						ul_DmaBufferVirtual[i]);
				}
			}
			if (!devpriv->ul_DmaBufferVirtual[0]) {
				printk
					(", Can't allocate DMA buffer, DMA disabled!");
				devpriv->us_UseDma = ADDI_DISABLE;
			}

			if (devpriv->ul_DmaBufferVirtual[1]) {
				devpriv->b_DmaDoubleBuffer = 1;
			}
		}

		if ((devpriv->us_UseDma == ADDI_ENABLE)) {
			printk("\nDMA ENABLED\n");
		} else {
			printk("\nDMA DISABLED\n");
		}
	}

	if (!strcmp(this_board->pc_DriverName, "apci1710")) {
#ifdef CONFIG_APCI_1710
		i_ADDI_AttachPCI1710(dev);

		/*  save base address */
		devpriv->s_BoardInfos.ui_Address = io_addr[2];
#endif
	} else {
		/* Update-0.7.57->0.7.68dev->n_subdevices = 7; */
		n_subdevices = 7;
		ret = alloc_subdevices(dev, n_subdevices);
		if (ret < 0)
			return ret;

		/*  Allocate and Initialise AI Subdevice Structures */
		s = dev->subdevices + 0;
		if ((this_board->i_NbrAiChannel)
			|| (this_board->i_NbrAiChannelDiff)) {
			dev->read_subdev = s;
			s->type = COMEDI_SUBD_AI;
			s->subdev_flags =
				SDF_READABLE | SDF_COMMON | SDF_GROUND
				| SDF_DIFF;
			if (this_board->i_NbrAiChannel) {
				s->n_chan = this_board->i_NbrAiChannel;
				devpriv->b_SingelDiff = 0;
			} else {
				s->n_chan = this_board->i_NbrAiChannelDiff;
				devpriv->b_SingelDiff = 1;
			}
			s->maxdata = this_board->i_AiMaxdata;
			s->len_chanlist = this_board->i_AiChannelList;
			s->range_table = this_board->pr_AiRangelist;

			/* Set the initialisation flag */
			devpriv->b_AiInitialisation = 1;

			s->insn_config =
				this_board->i_hwdrv_InsnConfigAnalogInput;
			s->insn_read = this_board->i_hwdrv_InsnReadAnalogInput;
			s->insn_write =
				this_board->i_hwdrv_InsnWriteAnalogInput;
			s->insn_bits = this_board->i_hwdrv_InsnBitsAnalogInput;
			s->do_cmdtest =
				this_board->i_hwdrv_CommandTestAnalogInput;
			s->do_cmd = this_board->i_hwdrv_CommandAnalogInput;
			s->cancel = this_board->i_hwdrv_CancelAnalogInput;

		} else {
			s->type = COMEDI_SUBD_UNUSED;
		}

		/*  Allocate and Initialise AO Subdevice Structures */
		s = dev->subdevices + 1;
		if (this_board->i_NbrAoChannel) {
			s->type = COMEDI_SUBD_AO;
			s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON;
			s->n_chan = this_board->i_NbrAoChannel;
			s->maxdata = this_board->i_AoMaxdata;
			s->len_chanlist = this_board->i_NbrAoChannel;
			s->range_table = this_board->pr_AoRangelist;
			s->insn_config =
				this_board->i_hwdrv_InsnConfigAnalogOutput;
			s->insn_write =
				this_board->i_hwdrv_InsnWriteAnalogOutput;
		} else {
			s->type = COMEDI_SUBD_UNUSED;
		}
		/*  Allocate and Initialise DI Subdevice Structures */
		s = dev->subdevices + 2;
		if (this_board->i_NbrDiChannel) {
			s->type = COMEDI_SUBD_DI;
			s->subdev_flags = SDF_READABLE | SDF_GROUND | SDF_COMMON;
			s->n_chan = this_board->i_NbrDiChannel;
			s->maxdata = 1;
			s->len_chanlist = this_board->i_NbrDiChannel;
			s->range_table = &range_digital;
			s->io_bits = 0;	/* all bits input */
			s->insn_config =
				this_board->i_hwdrv_InsnConfigDigitalInput;
			s->insn_read = this_board->i_hwdrv_InsnReadDigitalInput;
			s->insn_write =
				this_board->i_hwdrv_InsnWriteDigitalInput;
			s->insn_bits = this_board->i_hwdrv_InsnBitsDigitalInput;
		} else {
			s->type = COMEDI_SUBD_UNUSED;
		}
		/*  Allocate and Initialise DO Subdevice Structures */
		s = dev->subdevices + 3;
		if (this_board->i_NbrDoChannel) {
			s->type = COMEDI_SUBD_DO;
			s->subdev_flags =
				SDF_READABLE | SDF_WRITEABLE | SDF_GROUND | SDF_COMMON;
			s->n_chan = this_board->i_NbrDoChannel;
			s->maxdata = this_board->i_DoMaxdata;
			s->len_chanlist = this_board->i_NbrDoChannel;
			s->range_table = &range_digital;
			s->io_bits = 0xf;	/* all bits output */

			s->insn_config = this_board->i_hwdrv_InsnConfigDigitalOutput;	/* for digital output memory.. */
			s->insn_write =
				this_board->i_hwdrv_InsnWriteDigitalOutput;
			s->insn_bits =
				this_board->i_hwdrv_InsnBitsDigitalOutput;
			s->insn_read =
				this_board->i_hwdrv_InsnReadDigitalOutput;
		} else {
			s->type = COMEDI_SUBD_UNUSED;
		}

		/*  Allocate and Initialise Timer Subdevice Structures */
		s = dev->subdevices + 4;
		if (this_board->i_Timer) {
			s->type = COMEDI_SUBD_TIMER;
			s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON;
			s->n_chan = 1;
			s->maxdata = 0;
			s->len_chanlist = 1;
			s->range_table = &range_digital;

			s->insn_write = this_board->i_hwdrv_InsnWriteTimer;
			s->insn_read = this_board->i_hwdrv_InsnReadTimer;
			s->insn_config = this_board->i_hwdrv_InsnConfigTimer;
			s->insn_bits = this_board->i_hwdrv_InsnBitsTimer;
		} else {
			s->type = COMEDI_SUBD_UNUSED;
		}

		/*  Allocate and Initialise TTL */
		s = dev->subdevices + 5;
		if (this_board->i_NbrTTLChannel) {
			s->type = COMEDI_SUBD_TTLIO;
			s->subdev_flags =
				SDF_WRITEABLE | SDF_READABLE | SDF_GROUND | SDF_COMMON;
			s->n_chan = this_board->i_NbrTTLChannel;
			s->maxdata = 1;
			s->io_bits = 0;	/* all bits input */
			s->len_chanlist = this_board->i_NbrTTLChannel;
			s->range_table = &range_digital;
			s->insn_config = this_board->i_hwdr_ConfigInitTTLIO;
			s->insn_bits = this_board->i_hwdr_ReadTTLIOBits;
			s->insn_read = this_board->i_hwdr_ReadTTLIOAllPortValue;
			s->insn_write = this_board->i_hwdr_WriteTTLIOChlOnOff;
		} else {
			s->type = COMEDI_SUBD_UNUSED;
		}

		/* EEPROM */
		s = dev->subdevices + 6;
		if (this_board->i_PCIEeprom) {
			s->type = COMEDI_SUBD_MEMORY;
			s->subdev_flags = SDF_READABLE | SDF_INTERNAL;
			s->n_chan = 256;
			s->maxdata = 0xffff;
			s->insn_read = i_ADDIDATA_InsnReadEeprom;
		} else {
			s->type = COMEDI_SUBD_UNUSED;
		}
	}

	printk("\ni_ADDI_Attach end\n");
	i_ADDI_Reset(dev);
	devpriv->b_ValidDriver = 1;
	return 0;
}

/*
+----------------------------------------------------------------------------+
| Function name     : static int i_ADDI_Detach(struct comedi_device *dev)           |
|                                        									 |
|                                            						         |
+----------------------------------------------------------------------------+
| Task              : Deallocates resources of the addi_common driver        |
|			  Free the DMA buffers, unregister irq.				     |
|                     										                 |
+----------------------------------------------------------------------------+
| Input Parameters  : struct comedi_device *dev									 |
|                     														 |
|                                                 					         |
+----------------------------------------------------------------------------+
| Return Value      : 0             					                     |
|                    													     |
+----------------------------------------------------------------------------+
*/

static int i_ADDI_Detach(struct comedi_device *dev)
{

	if (dev->private) {
		if (devpriv->b_ValidDriver) {
			i_ADDI_Reset(dev);
		}

		if (dev->irq) {
			free_irq(dev->irq, dev);
		}

		if ((devpriv->ps_BoardInfo->pc_EepromChip == NULL)
			|| (strcmp(devpriv->ps_BoardInfo->pc_EepromChip,
					ADDIDATA_9054) != 0)) {
			if (devpriv->allocated) {
				i_pci_card_free(devpriv->amcc);
			}

			if (devpriv->ul_DmaBufferVirtual[0]) {
				free_pages((unsigned long)devpriv->
					ul_DmaBufferVirtual[0],
					devpriv->ui_DmaBufferPages[0]);
			}

			if (devpriv->ul_DmaBufferVirtual[1]) {
				free_pages((unsigned long)devpriv->
					ul_DmaBufferVirtual[1],
					devpriv->ui_DmaBufferPages[1]);
			}
		} else {
			iounmap(devpriv->dw_AiBase);

			if (devpriv->allocated) {
				i_pci_card_free(devpriv->amcc);
			}
		}

		if (pci_list_builded) {
			/* v_pci_card_list_cleanup(PCI_VENDOR_ID_AMCC); */
			v_pci_card_list_cleanup(this_board->i_VendorId);
			pci_list_builded = 0;
		}
	}

	return 0;
}

/*
+----------------------------------------------------------------------------+
| Function name     : static int i_ADDI_Reset(struct comedi_device *dev)			 |
|                                        									 |
+----------------------------------------------------------------------------+
| Task              : Disables all interrupts, Resets digital output to low, |
|				Set all analog output to low						 |
|                     										                 |
+----------------------------------------------------------------------------+
| Input Parameters  : struct comedi_device *dev									 |
|                     														 |
|                                                 					         |
+----------------------------------------------------------------------------+
| Return Value      : 0           					                         |
|                    													     |
+----------------------------------------------------------------------------+
*/

static int i_ADDI_Reset(struct comedi_device *dev)
{

	this_board->i_hwdrv_Reset(dev);
	return 0;
}

/* Interrupt function */
/*
+----------------------------------------------------------------------------+
| Function name     :                                                        |
|static void v_ADDI_Interrupt(int irq, void *d)                 |
|                                        									 |
+----------------------------------------------------------------------------+
| Task              : Registerd interrupt routine						     |
|                     										                 |
+----------------------------------------------------------------------------+
| Input Parameters  : 	int irq												 |
|                     														 |
|                                                 					         |
+----------------------------------------------------------------------------+
| Return Value      :              					                         |
|                    													     |
+----------------------------------------------------------------------------+
*/

static irqreturn_t v_ADDI_Interrupt(int irq, void *d)
{
	struct comedi_device *dev = d;
	this_board->v_hwdrv_Interrupt(irq, d);
	return IRQ_RETVAL(1);
}

/* EEPROM Read Function */
/*
+----------------------------------------------------------------------------+
| Function name     :                                                        |
|INT i_ADDIDATA_InsnReadEeprom(struct comedi_device *dev,struct comedi_subdevice *s,
							struct comedi_insn *insn,unsigned int *data)
|                                        									 |
+----------------------------------------------------------------------------+
| Task              : Read 256 words from EEPROM          				     |
|                     										                 |
+----------------------------------------------------------------------------+
| Input Parameters  :(struct comedi_device *dev,struct comedi_subdevice *s,
			struct comedi_insn *insn,unsigned int *data) 						 |
|                     														 |
|                                                 					         |
+----------------------------------------------------------------------------+
| Return Value      :              					                         |
|                    													     |
+----------------------------------------------------------------------------+
*/

static int i_ADDIDATA_InsnReadEeprom(struct comedi_device *dev, struct comedi_subdevice *s,
	struct comedi_insn *insn, unsigned int *data)
{
	unsigned short w_Data;
	unsigned short w_Address;
	w_Address = CR_CHAN(insn->chanspec);	/*  address to be read as 0,1,2,3...255 */

	w_Data = w_EepromReadWord(devpriv->i_IobaseAmcc,
		this_board->pc_EepromChip, 0x100 + (2 * w_Address));
	data[0] = w_Data;
	/* multiplied by 2 bcozinput will be like 0,1,2...255 */
	return insn->n;

}
