struct comedi_insn *insn,
                                                     unsigned int *data)
 {
-       const struct addi_board *this_board = comedi_board(dev);
+       const struct apci3xxx_boardinfo *this_board = comedi_board(dev);
        struct addi_private *devpriv = dev->private;
        int i_ReturnValue = insn->n;
        unsigned char b_TimeBase = 0;
                                          struct comedi_insn *insn,
                                          unsigned int *data)
 {
-       const struct addi_board *this_board = comedi_board(dev);
+       const struct apci3xxx_boardinfo *this_board = comedi_board(dev);
        struct addi_private *devpriv = dev->private;
        int i_ReturnValue = insn->n;
        unsigned char b_Configuration = (unsigned char) CR_RANGE(insn->chanspec);
                                            struct comedi_insn *insn,
                                            unsigned int *data)
 {
-       const struct addi_board *board = comedi_board(dev);
+       const struct apci3xxx_boardinfo *board = comedi_board(dev);
        struct addi_private *devpriv = dev->private;
        unsigned char b_Range = (unsigned char) CR_RANGE(insn->chanspec);
        unsigned char b_Channel = (unsigned char) CR_CHAN(insn->chanspec);
 
 
 #include "addi-data/addi_common.h"
 
-#include "addi-data/hwdrv_apci3xxx.c"
-
 #ifndef COMEDI_SUBD_TTLIO
 #define COMEDI_SUBD_TTLIO   11 /* Digital Input Output But TTL */
 #endif
        BOARD_APCI3500,
 };
 
-static const struct addi_board apci3xxx_boardtypes[] = {
+struct apci3xxx_boardinfo {
+       const char *pc_DriverName;
+       int i_IorangeBase1;
+       int i_NbrAiChannel;
+       int i_NbrAiChannelDiff;
+       int i_AiChannelList;
+       int i_NbrAoChannel;
+       int i_AiMaxdata;
+       int i_AoMaxdata;
+       int i_NbrDiChannel;
+       int i_NbrDoChannel;
+       int i_NbrTTLChannel;
+       unsigned char b_AvailableConvertUnit;
+       unsigned int ui_MinAcquisitiontimeNs;
+};
+
+static const struct apci3xxx_boardinfo apci3xxx_boardtypes[] = {
        [BOARD_APCI3000_16] = {
                .pc_DriverName          = "apci3000-16",
                .i_IorangeBase1         = 256,
        },
 };
 
+#include "addi-data/hwdrv_apci3xxx.c"
+
 static irqreturn_t apci3xxx_irq_handler(int irq, void *d)
 {
        struct comedi_device *dev = d;
                                unsigned long context)
 {
        struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-       const struct addi_board *board = NULL;
+       const struct apci3xxx_boardinfo *board = NULL;
        struct addi_private *devpriv;
        struct comedi_subdevice *s;
        int ret, n_subdevices;