staging: comedi: addi-data: remove the boardinfo #ifdef'ery
authorH Hartley Sweeten <hartleys@visionengravers.com>
Mon, 29 Oct 2012 23:52:36 +0000 (16:52 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Oct 2012 17:47:33 +0000 (10:47 -0700)
Move the boardinfo for each addi-data driver from addi_common.c to
the individual driver files. This removes the need #ifdef'ery.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17 files changed:
drivers/staging/comedi/drivers/addi-data/addi_common.c
drivers/staging/comedi/drivers/addi_apci_035.c
drivers/staging/comedi/drivers/addi_apci_1032.c
drivers/staging/comedi/drivers/addi_apci_1500.c
drivers/staging/comedi/drivers/addi_apci_1516.c
drivers/staging/comedi/drivers/addi_apci_1564.c
drivers/staging/comedi/drivers/addi_apci_16xx.c
drivers/staging/comedi/drivers/addi_apci_1710.c
drivers/staging/comedi/drivers/addi_apci_2016.c
drivers/staging/comedi/drivers/addi_apci_2032.c
drivers/staging/comedi/drivers/addi_apci_2200.c
drivers/staging/comedi/drivers/addi_apci_3001.c
drivers/staging/comedi/drivers/addi_apci_3120.c
drivers/staging/comedi/drivers/addi_apci_3200.c
drivers/staging/comedi/drivers/addi_apci_3300.c
drivers/staging/comedi/drivers/addi_apci_3501.c
drivers/staging/comedi/drivers/addi_apci_3xxx.c

index 400acaf..c7ea4f8 100644 (file)
@@ -58,1186 +58,6 @@ You should also find the complete GPL in the COPYING file accompanying this sour
 #define COMEDI_SUBD_TTLIO   11 /* Digital Input Output But TTL */
 #endif
 
-static const struct addi_board boardtypes[] = {
-#ifdef CONFIG_APCI_3120
-       {
-               .pc_DriverName          = "apci3120",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA_OLD,
-               .i_DeviceId             = 0x818D,
-               .i_IorangeBase0         = AMCC_OP_REG_SIZE,
-               .i_IorangeBase1         = APCI3120_ADDRESS_RANGE,
-               .i_IorangeBase2         = 8,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_NbrAoChannel         = 8,
-               .i_AiMaxdata            = 0xffff,
-               .i_AoMaxdata            = 0x3fff,
-               .pr_AiRangelist         = &range_apci3120_ai,
-               .pr_AoRangelist         = &range_apci3120_ao,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 0x0f,
-               .i_Dma                  = 1,
-               .i_Timer                = 1,
-               .b_AvailableConvertUnit = 1,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .ui_MinDelaytimeNs      = 100000,
-               .interrupt              = v_APCI3120_Interrupt,
-               .reset                  = i_APCI3120_Reset,
-               .ai_config              = i_APCI3120_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3120_InsnReadAnalogInput,
-               .ai_cmdtest             = i_APCI3120_CommandTestAnalogInput,
-               .ai_cmd                 = i_APCI3120_CommandAnalogInput,
-               .ai_cancel              = i_APCI3120_StopCyclicAcquisition,
-               .ao_write               = i_APCI3120_InsnWriteAnalogOutput,
-               .di_read                = i_APCI3120_InsnReadDigitalInput,
-               .di_bits                = i_APCI3120_InsnBitsDigitalInput,
-               .do_config              = i_APCI3120_InsnConfigDigitalOutput,
-               .do_write               = i_APCI3120_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3120_InsnBitsDigitalOutput,
-               .timer_config           = i_APCI3120_InsnConfigTimer,
-               .timer_write            = i_APCI3120_InsnWriteTimer,
-               .timer_read             = i_APCI3120_InsnReadTimer,
-       },
-#endif
-#ifdef CONFIG_APCI_1032
-       {
-               .pc_DriverName          = "apci1032",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x1003,
-               .i_IorangeBase0         = 4,
-               .i_IorangeBase1         = APCI1032_ADDRESS_RANGE,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_93C76,
-               .i_NbrDiChannel         = 32,
-               .interrupt              = v_APCI1032_Interrupt,
-               .reset                  = i_APCI1032_Reset,
-               .di_config              = i_APCI1032_ConfigDigitalInput,
-               .di_read                = i_APCI1032_Read1DigitalInput,
-               .di_bits                = i_APCI1032_ReadMoreDigitalInput,
-       },
-#endif
-#ifdef CONFIG_APCI_1516
-       {
-               .pc_DriverName          = "apci1516",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x1001,
-               .i_IorangeBase0         = 128,
-               .i_IorangeBase1         = APCI1516_ADDRESS_RANGE,
-               .i_IorangeBase2         = 32,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_S5920,
-               .i_NbrDiChannel         = 8,
-               .i_NbrDoChannel         = 8,
-               .i_Timer                = 1,
-               .reset                  = i_APCI1516_Reset,
-               .di_read                = i_APCI1516_Read1DigitalInput,
-               .di_bits                = i_APCI1516_ReadMoreDigitalInput,
-               .do_config              = i_APCI1516_ConfigDigitalOutput,
-               .do_write               = i_APCI1516_WriteDigitalOutput,
-               .do_bits                = i_APCI1516_ReadDigitalOutput,
-               .timer_config           = i_APCI1516_ConfigWatchdog,
-               .timer_write            = i_APCI1516_StartStopWriteWatchdog,
-               .timer_read             = i_APCI1516_ReadWatchdog,
-       },
-#endif
-#ifdef CONFIG_APCI_2016
-       {
-               .pc_DriverName          = "apci2016",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x1002,
-               .i_IorangeBase0         = 128,
-               .i_IorangeBase1         = APCI2016_ADDRESS_RANGE,
-               .i_IorangeBase2         = 32,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_S5920,
-               .i_NbrDoChannel         = 16,
-               .i_Timer                = 1,
-               .reset                  = i_APCI2016_Reset,
-               .do_config              = i_APCI2016_ConfigDigitalOutput,
-               .do_write               = i_APCI2016_WriteDigitalOutput,
-               .do_bits                = i_APCI2016_BitsDigitalOutput,
-               .timer_config           = i_APCI2016_ConfigWatchdog,
-               .timer_write            = i_APCI2016_StartStopWriteWatchdog,
-               .timer_read             = i_APCI2016_ReadWatchdog,
-       },
-#endif
-#ifdef CONFIG_APCI_2032
-       {
-               .pc_DriverName          = "apci2032",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x1004,
-               .i_IorangeBase0         = 4,
-               .i_IorangeBase1         = APCI2032_ADDRESS_RANGE,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_93C76,
-               .i_NbrDoChannel         = 32,
-               .i_DoMaxdata            = 0xffffffff,
-               .i_Timer                = 1,
-               .interrupt              = v_APCI2032_Interrupt,
-               .reset                  = i_APCI2032_Reset,
-               .do_config              = i_APCI2032_ConfigDigitalOutput,
-               .do_write               = i_APCI2032_WriteDigitalOutput,
-               .do_bits                = i_APCI2032_ReadDigitalOutput,
-               .do_read                = i_APCI2032_ReadInterruptStatus,
-               .timer_config           = i_APCI2032_ConfigWatchdog,
-               .timer_write            = i_APCI2032_StartStopWriteWatchdog,
-               .timer_read             = i_APCI2032_ReadWatchdog,
-       },
-#endif
-#ifdef CONFIG_APCI_2200
-       {
-               .pc_DriverName          = "apci2200",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x1005,
-               .i_IorangeBase0         = 4,
-               .i_IorangeBase1         = APCI2200_ADDRESS_RANGE,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_93C76,
-               .i_NbrDiChannel         = 8,
-               .i_NbrDoChannel         = 16,
-               .i_Timer                = 1,
-               .reset                  = i_APCI2200_Reset,
-               .di_read                = i_APCI2200_Read1DigitalInput,
-               .di_bits                = i_APCI2200_ReadMoreDigitalInput,
-               .do_config              = i_APCI2200_ConfigDigitalOutput,
-               .do_write               = i_APCI2200_WriteDigitalOutput,
-               .do_bits                = i_APCI2200_ReadDigitalOutput,
-               .timer_config           = i_APCI2200_ConfigWatchdog,
-               .timer_write            = i_APCI2200_StartStopWriteWatchdog,
-               .timer_read             = i_APCI2200_ReadWatchdog,
-       },
-#endif
-#ifdef CONFIG_APCI_1564
-       {
-               .pc_DriverName          = "apci1564",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x1006,
-               .i_IorangeBase0         = 128,
-               .i_IorangeBase1         = APCI1564_ADDRESS_RANGE,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_93C76,
-               .i_NbrDiChannel         = 32,
-               .i_NbrDoChannel         = 32,
-               .i_DoMaxdata            = 0xffffffff,
-               .i_Timer                = 1,
-               .interrupt              = v_APCI1564_Interrupt,
-               .reset                  = i_APCI1564_Reset,
-               .di_config              = i_APCI1564_ConfigDigitalInput,
-               .di_read                = i_APCI1564_Read1DigitalInput,
-               .di_bits                = i_APCI1564_ReadMoreDigitalInput,
-               .do_config              = i_APCI1564_ConfigDigitalOutput,
-               .do_write               = i_APCI1564_WriteDigitalOutput,
-               .do_bits                = i_APCI1564_ReadDigitalOutput,
-               .do_read                = i_APCI1564_ReadInterruptStatus,
-               .timer_config           = i_APCI1564_ConfigTimerCounterWatchdog,
-               .timer_write            = i_APCI1564_StartStopWriteTimerCounterWatchdog,
-               .timer_read             = i_APCI1564_ReadTimerCounterWatchdog,
-       },
-#endif
-#ifdef CONFIG_APCI_1500
-       {
-               .pc_DriverName          = "apci1500",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA_OLD,
-               .i_DeviceId             = 0x80fc,
-               .i_IorangeBase0         = 128,
-               .i_IorangeBase1         = APCI1500_ADDRESS_RANGE,
-               .i_IorangeBase2         = 4,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .i_NbrDiChannel         = 16,
-               .i_NbrDoChannel         = 16,
-               .i_DoMaxdata            = 0xffff,
-               .i_Timer                = 1,
-               .interrupt              = v_APCI1500_Interrupt,
-               .reset                  = i_APCI1500_Reset,
-               .di_config              = i_APCI1500_ConfigDigitalInputEvent,
-               .di_read                = i_APCI1500_Initialisation,
-               .di_write               = i_APCI1500_StartStopInputEvent,
-               .di_bits                = i_APCI1500_ReadMoreDigitalInput,
-               .do_config              = i_APCI1500_ConfigDigitalOutputErrorInterrupt,
-               .do_write               = i_APCI1500_WriteDigitalOutput,
-               .do_bits                = i_APCI1500_ConfigureInterrupt,
-               .timer_config           = i_APCI1500_ConfigCounterTimerWatchdog,
-               .timer_write            = i_APCI1500_StartStopTriggerTimerCounterWatchdog,
-               .timer_read             = i_APCI1500_ReadInterruptMask,
-               .timer_bits             = i_APCI1500_ReadCounterTimerWatchdog,
-       },
-#endif
-#ifdef CONFIG_APCI_3001
-       {
-               .pc_DriverName          = "apci3001",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA_OLD,
-               .i_DeviceId             = 0x828D,
-               .i_IorangeBase0         = AMCC_OP_REG_SIZE,
-               .i_IorangeBase1         = APCI3120_ADDRESS_RANGE,
-               .i_IorangeBase2         = 8,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_AiMaxdata            = 0xfff,
-               .pr_AiRangelist         = &range_apci3120_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 0x0f,
-               .i_Dma                  = 1,
-               .i_Timer                = 1,
-               .b_AvailableConvertUnit = 1,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .ui_MinDelaytimeNs      = 100000,
-               .interrupt              = v_APCI3120_Interrupt,
-               .reset                  = i_APCI3120_Reset,
-               .ai_config              = i_APCI3120_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3120_InsnReadAnalogInput,
-               .ai_cmdtest             = i_APCI3120_CommandTestAnalogInput,
-               .ai_cmd                 = i_APCI3120_CommandAnalogInput,
-               .ai_cancel              = i_APCI3120_StopCyclicAcquisition,
-               .di_read                = i_APCI3120_InsnReadDigitalInput,
-               .di_bits                = i_APCI3120_InsnBitsDigitalInput,
-               .do_config              = i_APCI3120_InsnConfigDigitalOutput,
-               .do_write               = i_APCI3120_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3120_InsnBitsDigitalOutput,
-               .timer_config           = i_APCI3120_InsnConfigTimer,
-               .timer_write            = i_APCI3120_InsnWriteTimer,
-               .timer_read             = i_APCI3120_InsnReadTimer,
-       },
-#endif
-#ifdef CONFIG_APCI_3501
-       {
-               .pc_DriverName          = "apci3501",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3001,
-               .i_IorangeBase0         = 64,
-               .i_IorangeBase1         = APCI3501_ADDRESS_RANGE,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_S5933,
-               .i_AoMaxdata            = 16383,
-               .pr_AoRangelist         = &range_apci3501_ao,
-               .i_NbrDiChannel         = 2,
-               .i_NbrDoChannel         = 2,
-               .i_DoMaxdata            = 0x3,
-               .i_Timer                = 1,
-               .interrupt              = v_APCI3501_Interrupt,
-               .reset                  = i_APCI3501_Reset,
-               .ao_config              = i_APCI3501_ConfigAnalogOutput,
-               .ao_write               = i_APCI3501_WriteAnalogOutput,
-               .di_bits                = i_APCI3501_ReadDigitalInput,
-               .do_config              = i_APCI3501_ConfigDigitalOutput,
-               .do_write               = i_APCI3501_WriteDigitalOutput,
-               .do_bits                = i_APCI3501_ReadDigitalOutput,
-               .timer_config           = i_APCI3501_ConfigTimerCounterWatchdog,
-               .timer_write            = i_APCI3501_StartStopWriteTimerCounterWatchdog,
-               .timer_read             = i_APCI3501_ReadTimerCounterWatchdog,
-       },
-#endif
-#ifdef CONFIG_APCI_035
-       {
-               .pc_DriverName          = "apci035",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x0300,
-               .i_IorangeBase0         = 127,
-               .i_IorangeBase1         = APCI035_ADDRESS_RANGE,
-               .i_PCIEeprom            = 1,
-               .pc_EepromChip          = ADDIDATA_S5920,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_AiMaxdata            = 0xff,
-               .pr_AiRangelist         = &range_apci035_ai,
-               .i_Timer                = 1,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .ui_MinDelaytimeNs      = 100000,
-               .interrupt              = v_APCI035_Interrupt,
-               .reset                  = i_APCI035_Reset,
-               .ai_config              = i_APCI035_ConfigAnalogInput,
-               .ai_read                = i_APCI035_ReadAnalogInput,
-               .timer_config           = i_APCI035_ConfigTimerWatchdog,
-               .timer_write            = i_APCI035_StartStopWriteTimerWatchdog,
-               .timer_read             = i_APCI035_ReadTimerWatchdog,
-       },
-#endif
-#ifdef CONFIG_APCI_3200
-       {
-               .pc_DriverName          = "apci3200",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3000,
-               .i_IorangeBase0         = 128,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 4,
-               .i_IorangeBase3         = 4,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_S5920,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_AiMaxdata            = 0x3ffff,
-               .pr_AiRangelist         = &range_apci3200_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .ui_MinDelaytimeNs      = 100000,
-               .interrupt              = v_APCI3200_Interrupt,
-               .reset                  = i_APCI3200_Reset,
-               .ai_config              = i_APCI3200_ConfigAnalogInput,
-               .ai_read                = i_APCI3200_ReadAnalogInput,
-               .ai_write               = i_APCI3200_InsnWriteReleaseAnalogInput,
-               .ai_bits                = i_APCI3200_InsnBits_AnalogInput_Test,
-               .ai_cmdtest             = i_APCI3200_CommandTestAnalogInput,
-               .ai_cmd                 = i_APCI3200_CommandAnalogInput,
-               .ai_cancel              = i_APCI3200_StopCyclicAcquisition,
-               .di_bits                = i_APCI3200_ReadDigitalInput,
-               .do_config              = i_APCI3200_ConfigDigitalOutput,
-               .do_write               = i_APCI3200_WriteDigitalOutput,
-               .do_bits                = i_APCI3200_ReadDigitalOutput,
-       },
-#endif
-#ifdef CONFIG_APCI_3300
-       /* Begin JK     .20.10.2004 = APCI-3300 integration */
-       {
-               .pc_DriverName          = "apci3300",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3007,
-               .i_IorangeBase0         = 128,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 4,
-               .i_IorangeBase3         = 4,
-               .i_PCIEeprom            = ADDIDATA_EEPROM,
-               .pc_EepromChip          = ADDIDATA_S5920,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 8,
-               .i_AiMaxdata            = 0x3ffff,
-               .pr_AiRangelist         = &range_apci3300_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .ui_MinDelaytimeNs      = 100000,
-               .interrupt              = v_APCI3200_Interrupt,
-               .reset                  = i_APCI3200_Reset,
-               .ai_config              = i_APCI3200_ConfigAnalogInput,
-               .ai_read                = i_APCI3200_ReadAnalogInput,
-               .ai_write               = i_APCI3200_InsnWriteReleaseAnalogInput,
-               .ai_bits                = i_APCI3200_InsnBits_AnalogInput_Test,
-               .ai_cmdtest             = i_APCI3200_CommandTestAnalogInput,
-               .ai_cmd                 = i_APCI3200_CommandAnalogInput,
-               .ai_cancel              = i_APCI3200_StopCyclicAcquisition,
-               .di_bits                = i_APCI3200_ReadDigitalInput,
-               .do_config              = i_APCI3200_ConfigDigitalOutput,
-               .do_write               = i_APCI3200_WriteDigitalOutput,
-               .do_bits                = i_APCI3200_ReadDigitalOutput,
-       },
-#endif
-#ifdef CONFIG_APCI_1710
-       {
-               .pc_DriverName          = "apci1710",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA_OLD,
-               .i_DeviceId             = APCI1710_BOARD_DEVICE_ID,
-               .i_IorangeBase0         = 128,
-               .i_IorangeBase1         = 8,
-               .i_IorangeBase2         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .interrupt              = v_APCI1710_Interrupt,
-               .reset                  = i_APCI1710_Reset,
-       },
-#endif
-#ifdef CONFIG_APCI_16XX
-       {
-               .pc_DriverName          = "apci1648",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x1009,
-               .i_IorangeBase0         = 128,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .i_NbrTTLChannel        = 48,
-               .reset                  = i_APCI16XX_Reset,
-               .ttl_config             = i_APCI16XX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI16XX_InsnBitsReadTTLIO,
-               .ttl_read               = i_APCI16XX_InsnReadTTLIOAllPortValue,
-               .ttl_write              = i_APCI16XX_InsnBitsWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci1696",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x100A,
-               .i_IorangeBase0         = 128,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .i_NbrTTLChannel        = 96,
-               .reset                  = i_APCI16XX_Reset,
-               .ttl_config             = i_APCI16XX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI16XX_InsnBitsReadTTLIO,
-               .ttl_read               = i_APCI16XX_InsnReadTTLIOAllPortValue,
-               .ttl_write              = i_APCI16XX_InsnBitsWriteTTLIO,
-       },
-#endif
-#ifdef CONFIG_APCI_3XXX
-       {
-               .pc_DriverName          = "apci3000-16",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3010,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_AiMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3000-8",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x300F,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 8,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 8,
-               .i_AiMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3000-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x300E,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 4,
-               .i_NbrAiChannelDiff     = 2,
-               .i_AiChannelList        = 4,
-               .i_AiMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3006-16",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3013,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3006-8",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3014,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 8,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 8,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3006-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3015,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 4,
-               .i_NbrAiChannelDiff     = 2,
-               .i_AiChannelList        = 4,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3010-16",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3016,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_AiMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3010-8",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3017,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 8,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 8,
-               .i_AiMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3010-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3018,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 4,
-               .i_NbrAiChannelDiff     = 2,
-               .i_AiChannelList        = 4,
-               .i_AiMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3016-16",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3019,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3016-8",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x301A,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 8,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 8,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3016-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x301B,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 4,
-               .i_NbrAiChannelDiff     = 2,
-               .i_AiChannelList        = 4,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3100-16-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x301C,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_NbrAoChannel         = 4,
-               .i_AiMaxdata            = 4095,
-               .i_AoMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3100-8-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x301D,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 8,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 8,
-               .i_NbrAoChannel         = 4,
-               .i_AiMaxdata            = 4095,
-               .i_AoMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3106-16-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x301E,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_NbrAoChannel         = 4,
-               .i_AiMaxdata            = 65535,
-               .i_AoMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3106-8-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x301F,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 8,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 8,
-               .i_NbrAoChannel         = 4,
-               .i_AiMaxdata            = 65535,
-               .i_AoMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 10000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3110-16-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3020,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_NbrAoChannel         = 4,
-               .i_AiMaxdata            = 4095,
-               .i_AoMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3110-8-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3021,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 8,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 8,
-               .i_NbrAoChannel         = 4,
-               .i_AiMaxdata            = 4095,
-               .i_AoMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3116-16-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3022,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 16,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 16,
-               .i_NbrAoChannel         = 4,
-               .i_AiMaxdata            = 65535,
-               .i_AoMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3116-8-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3023,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannel         = 8,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 8,
-               .i_NbrAoChannel         = 4,
-               .i_AiMaxdata            = 65535,
-               .i_AoMaxdata            = 4095,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .i_NbrTTLChannel        = 24,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       }, {
-               .pc_DriverName          = "apci3003",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x300B,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 4,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .b_AvailableConvertUnit = 7,
-               .ui_MinAcquisitiontimeNs = 2500,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-       }, {
-               .pc_DriverName          = "apci3002-16",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3002,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannelDiff     = 16,
-               .i_AiChannelList        = 16,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-       }, {
-               .pc_DriverName          = "apci3002-8",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3003,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannelDiff     = 8,
-               .i_AiChannelList        = 8,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-       }, {
-               .pc_DriverName          = "apci3002-4",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3004,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAiChannelDiff     = 4,
-               .i_AiChannelList        = 4,
-               .i_AiMaxdata            = 65535,
-               .pr_AiRangelist         = &range_apci3XXX_ai,
-               .i_NbrDiChannel         = 4,
-               .i_NbrDoChannel         = 4,
-               .i_DoMaxdata            = 1,
-               .b_AvailableConvertUnit = 6,
-               .ui_MinAcquisitiontimeNs = 5000,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
-               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
-               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
-               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
-               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
-               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
-               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
-       }, {
-               .pc_DriverName          = "apci3500",
-               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
-               .i_DeviceId             = 0x3024,
-               .i_IorangeBase0         = 256,
-               .i_IorangeBase1         = 256,
-               .i_IorangeBase2         = 256,
-               .i_IorangeBase3         = 256,
-               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
-               .pc_EepromChip          = ADDIDATA_9054,
-               .i_NbrAoChannel         = 4,
-               .i_AoMaxdata            = 4095,
-               .pr_AoRangelist         = &range_apci3XXX_ao,
-               .i_NbrTTLChannel        = 24,
-               .interrupt              = v_APCI3XXX_Interrupt,
-               .reset                  = i_APCI3XXX_Reset,
-               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
-               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
-               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
-               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
-               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
-       },
-#endif
-};
-
 /*
 +----------------------------------------------------------------------------+
 | Function name     :static int i_ADDI_Attach(struct comedi_device *dev,            |
index 36eb6ec..2e3f685 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci035.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci035",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x0300,
+               .i_IorangeBase0         = 127,
+               .i_IorangeBase1         = APCI035_ADDRESS_RANGE,
+               .i_PCIEeprom            = 1,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 0xff,
+               .pr_AiRangelist         = &range_apci035_ai,
+               .i_Timer                = 1,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI035_Interrupt,
+               .reset                  = i_APCI035_Reset,
+               .ai_config              = i_APCI035_ConfigAnalogInput,
+               .ai_read                = i_APCI035_ReadAnalogInput,
+               .timer_config           = i_APCI035_ConfigTimerWatchdog,
+               .timer_write            = i_APCI035_StartStopWriteTimerWatchdog,
+               .timer_read             = i_APCI035_ReadTimerWatchdog,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA,  0x0300) },
        { 0 }
index 67fe895..cfcba6a 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci1032.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci1032",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x1003,
+               .i_IorangeBase0         = 4,
+               .i_IorangeBase1         = APCI1032_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_93C76,
+               .i_NbrDiChannel         = 32,
+               .interrupt              = v_APCI1032_Interrupt,
+               .reset                  = i_APCI1032_Reset,
+               .di_config              = i_APCI1032_ConfigDigitalInput,
+               .di_read                = i_APCI1032_Read1DigitalInput,
+               .di_bits                = i_APCI1032_ReadMoreDigitalInput,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1003) },
        { 0 }
index c60b18b..59d762f 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci1500.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci1500",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA_OLD,
+               .i_DeviceId             = 0x80fc,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = APCI1500_ADDRESS_RANGE,
+               .i_IorangeBase2         = 4,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrDiChannel         = 16,
+               .i_NbrDoChannel         = 16,
+               .i_DoMaxdata            = 0xffff,
+               .i_Timer                = 1,
+               .interrupt              = v_APCI1500_Interrupt,
+               .reset                  = i_APCI1500_Reset,
+               .di_config              = i_APCI1500_ConfigDigitalInputEvent,
+               .di_read                = i_APCI1500_Initialisation,
+               .di_write               = i_APCI1500_StartStopInputEvent,
+               .di_bits                = i_APCI1500_ReadMoreDigitalInput,
+               .do_config              = i_APCI1500_ConfigDigitalOutputErrorInterrupt,
+               .do_write               = i_APCI1500_WriteDigitalOutput,
+               .do_bits                = i_APCI1500_ConfigureInterrupt,
+               .timer_config           = i_APCI1500_ConfigCounterTimerWatchdog,
+               .timer_write            = i_APCI1500_StartStopTriggerTimerCounterWatchdog,
+               .timer_read             = i_APCI1500_ReadInterruptMask,
+               .timer_bits             = i_APCI1500_ReadCounterTimerWatchdog,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA_OLD, 0x80fc) },
        { 0 }
index 480f670..fdc4b66 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci1516.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci1516",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x1001,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = APCI1516_ADDRESS_RANGE,
+               .i_IorangeBase2         = 32,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrDiChannel         = 8,
+               .i_NbrDoChannel         = 8,
+               .i_Timer                = 1,
+               .reset                  = i_APCI1516_Reset,
+               .di_read                = i_APCI1516_Read1DigitalInput,
+               .di_bits                = i_APCI1516_ReadMoreDigitalInput,
+               .do_config              = i_APCI1516_ConfigDigitalOutput,
+               .do_write               = i_APCI1516_WriteDigitalOutput,
+               .do_bits                = i_APCI1516_ReadDigitalOutput,
+               .timer_config           = i_APCI1516_ConfigWatchdog,
+               .timer_write            = i_APCI1516_StartStopWriteWatchdog,
+               .timer_read             = i_APCI1516_ReadWatchdog,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1001) },
        { 0 }
index 811647b..6bdbf20 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci1564.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci1564",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x1006,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = APCI1564_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_93C76,
+               .i_NbrDiChannel         = 32,
+               .i_NbrDoChannel         = 32,
+               .i_DoMaxdata            = 0xffffffff,
+               .i_Timer                = 1,
+               .interrupt              = v_APCI1564_Interrupt,
+               .reset                  = i_APCI1564_Reset,
+               .di_config              = i_APCI1564_ConfigDigitalInput,
+               .di_read                = i_APCI1564_Read1DigitalInput,
+               .di_bits                = i_APCI1564_ReadMoreDigitalInput,
+               .do_config              = i_APCI1564_ConfigDigitalOutput,
+               .do_write               = i_APCI1564_WriteDigitalOutput,
+               .do_bits                = i_APCI1564_ReadDigitalOutput,
+               .do_read                = i_APCI1564_ReadInterruptStatus,
+               .timer_config           = i_APCI1564_ConfigTimerCounterWatchdog,
+               .timer_write            = i_APCI1564_StartStopWriteTimerCounterWatchdog,
+               .timer_read             = i_APCI1564_ReadTimerCounterWatchdog,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1006) },
        { 0 }
index 3673772..87009c8 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci16xx.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci1648",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x1009,
+               .i_IorangeBase0         = 128,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrTTLChannel        = 48,
+               .reset                  = i_APCI16XX_Reset,
+               .ttl_config             = i_APCI16XX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI16XX_InsnBitsReadTTLIO,
+               .ttl_read               = i_APCI16XX_InsnReadTTLIOAllPortValue,
+               .ttl_write              = i_APCI16XX_InsnBitsWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci1696",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x100A,
+               .i_IorangeBase0         = 128,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrTTLChannel        = 96,
+               .reset                  = i_APCI16XX_Reset,
+               .ttl_config             = i_APCI16XX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI16XX_InsnBitsReadTTLIO,
+               .ttl_read               = i_APCI16XX_InsnReadTTLIOAllPortValue,
+               .ttl_write              = i_APCI16XX_InsnBitsWriteTTLIO,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1009) },
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x100a) },
index 3402cf5..58c5121 100644 (file)
@@ -23,6 +23,20 @@ static void fpu_end(void)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_APCI1710.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci1710",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA_OLD,
+               .i_DeviceId             = APCI1710_BOARD_DEVICE_ID,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = 8,
+               .i_IorangeBase2         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .interrupt              = v_APCI1710_Interrupt,
+               .reset                  = i_APCI1710_Reset,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA_OLD, APCI1710_BOARD_DEVICE_ID) },
        { 0 }
index 58d900f..ece4b9d 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci2016.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci2016",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x1002,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = APCI2016_ADDRESS_RANGE,
+               .i_IorangeBase2         = 32,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrDoChannel         = 16,
+               .i_Timer                = 1,
+               .reset                  = i_APCI2016_Reset,
+               .do_config              = i_APCI2016_ConfigDigitalOutput,
+               .do_write               = i_APCI2016_WriteDigitalOutput,
+               .do_bits                = i_APCI2016_BitsDigitalOutput,
+               .timer_config           = i_APCI2016_ConfigWatchdog,
+               .timer_write            = i_APCI2016_StartStopWriteWatchdog,
+               .timer_read             = i_APCI2016_ReadWatchdog,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1002) },
        { 0 }
index bc86d66..8dddb65 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci2032.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci2032",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x1004,
+               .i_IorangeBase0         = 4,
+               .i_IorangeBase1         = APCI2032_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_93C76,
+               .i_NbrDoChannel         = 32,
+               .i_DoMaxdata            = 0xffffffff,
+               .i_Timer                = 1,
+               .interrupt              = v_APCI2032_Interrupt,
+               .reset                  = i_APCI2032_Reset,
+               .do_config              = i_APCI2032_ConfigDigitalOutput,
+               .do_write               = i_APCI2032_WriteDigitalOutput,
+               .do_bits                = i_APCI2032_ReadDigitalOutput,
+               .do_read                = i_APCI2032_ReadInterruptStatus,
+               .timer_config           = i_APCI2032_ConfigWatchdog,
+               .timer_write            = i_APCI2032_StartStopWriteWatchdog,
+               .timer_read             = i_APCI2032_ReadWatchdog,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1004) },
        { 0 }
index 1b06ba6..2c64648 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci2200.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci2200",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x1005,
+               .i_IorangeBase0         = 4,
+               .i_IorangeBase1         = APCI2200_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_93C76,
+               .i_NbrDiChannel         = 8,
+               .i_NbrDoChannel         = 16,
+               .i_Timer                = 1,
+               .reset                  = i_APCI2200_Reset,
+               .di_read                = i_APCI2200_Read1DigitalInput,
+               .di_bits                = i_APCI2200_ReadMoreDigitalInput,
+               .do_config              = i_APCI2200_ConfigDigitalOutput,
+               .do_write               = i_APCI2200_WriteDigitalOutput,
+               .do_bits                = i_APCI2200_ReadDigitalOutput,
+               .timer_config           = i_APCI2200_ConfigWatchdog,
+               .timer_write            = i_APCI2200_StartStopWriteWatchdog,
+               .timer_read             = i_APCI2200_ReadWatchdog,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x1005) },
        { 0 }
index ec1d83d..d5bc246 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci3120.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci3001",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA_OLD,
+               .i_DeviceId             = 0x828D,
+               .i_IorangeBase0         = AMCC_OP_REG_SIZE,
+               .i_IorangeBase1         = APCI3120_ADDRESS_RANGE,
+               .i_IorangeBase2         = 8,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 0xfff,
+               .pr_AiRangelist         = &range_apci3120_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 0x0f,
+               .i_Dma                  = 1,
+               .i_Timer                = 1,
+               .b_AvailableConvertUnit = 1,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI3120_Interrupt,
+               .reset                  = i_APCI3120_Reset,
+               .ai_config              = i_APCI3120_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3120_InsnReadAnalogInput,
+               .ai_cmdtest             = i_APCI3120_CommandTestAnalogInput,
+               .ai_cmd                 = i_APCI3120_CommandAnalogInput,
+               .ai_cancel              = i_APCI3120_StopCyclicAcquisition,
+               .di_read                = i_APCI3120_InsnReadDigitalInput,
+               .di_bits                = i_APCI3120_InsnBitsDigitalInput,
+               .do_config              = i_APCI3120_InsnConfigDigitalOutput,
+               .do_write               = i_APCI3120_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3120_InsnBitsDigitalOutput,
+               .timer_config           = i_APCI3120_InsnConfigTimer,
+               .timer_write            = i_APCI3120_InsnWriteTimer,
+               .timer_read             = i_APCI3120_InsnReadTimer,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA_OLD, 0x828d) },
        { 0 }
index d109306..bd2a654 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci3120.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci3120",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA_OLD,
+               .i_DeviceId             = 0x818D,
+               .i_IorangeBase0         = AMCC_OP_REG_SIZE,
+               .i_IorangeBase1         = APCI3120_ADDRESS_RANGE,
+               .i_IorangeBase2         = 8,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 8,
+               .i_AiMaxdata            = 0xffff,
+               .i_AoMaxdata            = 0x3fff,
+               .pr_AiRangelist         = &range_apci3120_ai,
+               .pr_AoRangelist         = &range_apci3120_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 0x0f,
+               .i_Dma                  = 1,
+               .i_Timer                = 1,
+               .b_AvailableConvertUnit = 1,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI3120_Interrupt,
+               .reset                  = i_APCI3120_Reset,
+               .ai_config              = i_APCI3120_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3120_InsnReadAnalogInput,
+               .ai_cmdtest             = i_APCI3120_CommandTestAnalogInput,
+               .ai_cmd                 = i_APCI3120_CommandAnalogInput,
+               .ai_cancel              = i_APCI3120_StopCyclicAcquisition,
+               .ao_write               = i_APCI3120_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3120_InsnReadDigitalInput,
+               .di_bits                = i_APCI3120_InsnBitsDigitalInput,
+               .do_config              = i_APCI3120_InsnConfigDigitalOutput,
+               .do_write               = i_APCI3120_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3120_InsnBitsDigitalOutput,
+               .timer_config           = i_APCI3120_InsnConfigTimer,
+               .timer_write            = i_APCI3120_InsnWriteTimer,
+               .timer_read             = i_APCI3120_InsnReadTimer,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA_OLD, 0x818d) },
        { 0 }
index d89453b..e3db75c 100644 (file)
@@ -23,6 +23,42 @@ static void fpu_end(void)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci3200.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci3200",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3000,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 4,
+               .i_IorangeBase3         = 4,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 0x3ffff,
+               .pr_AiRangelist         = &range_apci3200_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI3200_Interrupt,
+               .reset                  = i_APCI3200_Reset,
+               .ai_config              = i_APCI3200_ConfigAnalogInput,
+               .ai_read                = i_APCI3200_ReadAnalogInput,
+               .ai_write               = i_APCI3200_InsnWriteReleaseAnalogInput,
+               .ai_bits                = i_APCI3200_InsnBits_AnalogInput_Test,
+               .ai_cmdtest             = i_APCI3200_CommandTestAnalogInput,
+               .ai_cmd                 = i_APCI3200_CommandAnalogInput,
+               .ai_cancel              = i_APCI3200_StopCyclicAcquisition,
+               .di_bits                = i_APCI3200_ReadDigitalInput,
+               .do_config              = i_APCI3200_ConfigDigitalOutput,
+               .do_write               = i_APCI3200_WriteDigitalOutput,
+               .do_bits                = i_APCI3200_ReadDigitalOutput,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3000) },
        { 0 }
index b821573..81f0549 100644 (file)
@@ -23,6 +23,41 @@ static void fpu_end(void)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci3200.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci3300",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3007,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 4,
+               .i_IorangeBase3         = 4,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 0x3ffff,
+               .pr_AiRangelist         = &range_apci3300_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI3200_Interrupt,
+               .reset                  = i_APCI3200_Reset,
+               .ai_config              = i_APCI3200_ConfigAnalogInput,
+               .ai_read                = i_APCI3200_ReadAnalogInput,
+               .ai_write               = i_APCI3200_InsnWriteReleaseAnalogInput,
+               .ai_bits                = i_APCI3200_InsnBits_AnalogInput_Test,
+               .ai_cmdtest             = i_APCI3200_CommandTestAnalogInput,
+               .ai_cmd                 = i_APCI3200_CommandAnalogInput,
+               .ai_cancel              = i_APCI3200_StopCyclicAcquisition,
+               .di_bits                = i_APCI3200_ReadDigitalInput,
+               .do_config              = i_APCI3200_ConfigDigitalOutput,
+               .do_write               = i_APCI3200_WriteDigitalOutput,
+               .do_bits                = i_APCI3200_ReadDigitalOutput,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3007) },
        { 0 }
index a1c6f01..5c95c7d 100644 (file)
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci3501.c"
 
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci3501",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3001,
+               .i_IorangeBase0         = 64,
+               .i_IorangeBase1         = APCI3501_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5933,
+               .i_AoMaxdata            = 16383,
+               .pr_AoRangelist         = &range_apci3501_ao,
+               .i_NbrDiChannel         = 2,
+               .i_NbrDoChannel         = 2,
+               .i_DoMaxdata            = 0x3,
+               .i_Timer                = 1,
+               .interrupt              = v_APCI3501_Interrupt,
+               .reset                  = i_APCI3501_Reset,
+               .ao_config              = i_APCI3501_ConfigAnalogOutput,
+               .ao_write               = i_APCI3501_WriteAnalogOutput,
+               .di_bits                = i_APCI3501_ReadDigitalInput,
+               .do_config              = i_APCI3501_ConfigDigitalOutput,
+               .do_write               = i_APCI3501_WriteDigitalOutput,
+               .do_bits                = i_APCI3501_ReadDigitalOutput,
+               .timer_config           = i_APCI3501_ConfigTimerCounterWatchdog,
+               .timer_write            = i_APCI3501_StartStopWriteTimerCounterWatchdog,
+               .timer_read             = i_APCI3501_ReadTimerCounterWatchdog,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3001) },
        { 0 }
index 9739b67..d269823 100644 (file)
 
 #include "addi-data/addi_eeprom.c"
 #include "addi-data/hwdrv_apci3xxx.c"
+
+static const struct addi_board boardtypes[] = {
+       {
+               .pc_DriverName          = "apci3000-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3010,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3000-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x300F,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3000-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x300E,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 4,
+               .i_NbrAiChannelDiff     = 2,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3006-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3013,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3006-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3014,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3006-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3015,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 4,
+               .i_NbrAiChannelDiff     = 2,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3010-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3016,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3010-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3017,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3010-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3018,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 4,
+               .i_NbrAiChannelDiff     = 2,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3016-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3019,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3016-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301A,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3016-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301B,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 4,
+               .i_NbrAiChannelDiff     = 2,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3100-16-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301C,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 4095,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3100-8-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301D,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 4095,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3106-16-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301E,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 65535,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3106-8-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301F,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 65535,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3110-16-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3020,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 4095,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3110-8-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3021,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 4095,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3116-16-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3022,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 65535,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3116-8-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3023,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 65535,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3003",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x300B,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .b_AvailableConvertUnit = 7,
+               .ui_MinAcquisitiontimeNs = 2500,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+       }, {
+               .pc_DriverName          = "apci3002-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3002,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannelDiff     = 16,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+       }, {
+               .pc_DriverName          = "apci3002-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3003,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+       }, {
+               .pc_DriverName          = "apci3002-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3004,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+       }, {
+               .pc_DriverName          = "apci3500",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3024,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAoChannel         = 4,
+               .i_AoMaxdata            = 4095,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       },
+};
+
 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3010) },
        { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300f) },