RTXI 1.3
comedi/comedi/drivers/addi-data/addi_common.c
Go to the documentation of this file.
00001 
00024 /*
00025 
00026   +-----------------------------------------------------------------------+
00027   | (C) ADDI-DATA GmbH          Dieselstrasse 3      D-77833 Ottersweier  |
00028   +-----------------------------------------------------------------------+
00029   | Tel : +49 (0) 7223/9493-0     | email    : info@addi-data.com         |
00030   | Fax : +49 (0) 7223/9493-92    | Internet : http://www.addi-data.com   |
00031   +-----------------------------------------------------------------------+
00032   | Project   : ADDI DATA         | Compiler : GCC                        |
00033   | Modulname : addi_common.c     | Version  : 2.96                       |
00034   +-------------------------------+---------------------------------------+
00035   | Author    :           | Date     :                                    |
00036   +-----------------------------------------------------------------------+
00037   | Description : ADDI COMMON Main Module                                 |
00038   +-----------------------------------------------------------------------+
00039   | CONFIG OPTIONS                                                        |
00040   |     option[0] - PCI bus number - if bus number and slot number are 0, |
00041   |                              then driver search for first unused card |
00042   |     option[1] - PCI slot number                                       |
00043   |                                                                       |
00044   |     option[2] = 0  - DMA ENABLE                                       |
00045   |               = 1  - DMA DISABLE                                      |
00046   +----------+-----------+------------------------------------------------+
00047 */
00048 
00049 #include<linux/kernel.h>
00050 #include<linux/module.h>
00051 #include<linux/sched.h>
00052 #include<linux/mm.h>
00053 #include<linux/slab.h>
00054 #include<linux/errno.h>
00055 #include<linux/ioport.h>
00056 #include<linux/delay.h>
00057 #include<linux/interrupt.h>
00058 #include<linux/timex.h>
00059 #include<linux/timer.h>
00060 #include<linux/pci.h>
00061 #include<linux/comedidev.h>
00062 #include<asm/io.h>
00063 #if defined(CONFIG_APCI_1710) || defined(CONFIG_APCI_3200) || defined(CONFIG_APCI_3300)
00064 #include<asm/i387.h>
00065 #endif
00066 #include "../comedi_fc.h"
00067 
00068 #include "addi_common.h"
00069 #include "addi_amcc_s5933.h"
00070 
00071 //Update-0.7.57->0.7.68MODULE_AUTHOR("ADDI-DATA GmbH <info@addi-data.com>");
00072 //Update-0.7.57->0.7.68MODULE_DESCRIPTION("Comedi ADDI-DATA module");
00073 //Update-0.7.57->0.7.68MODULE_LICENSE("GPL");
00074 
00075 #define devpriv ((addi_private *)dev->private)
00076 #define this_board ((boardtype *)dev->board_ptr)
00077 
00078 #if defined(CONFIG_APCI_1710) || defined(CONFIG_APCI_3200) || defined(CONFIG_APCI_3300)
00079 //BYTE b_SaveFPUReg [94];
00080 
00081 void fpu_begin(void)
00082 {
00083         //asm ("fstenv b_SaveFPUReg");
00084         kernel_fpu_begin();
00085 }
00086 
00087 void fpu_end(void)
00088 {
00089         // asm ("frstor b_SaveFPUReg");
00090         kernel_fpu_end();
00091 }
00092 #endif
00093 
00094 #include "addi_eeprom.c"
00095 #if (defined (CONFIG_APCI_3120) || defined (CONFIG_APCI_3001))
00096 #include "hwdrv_apci3120.c"
00097 #endif
00098 #ifdef CONFIG_APCI_1032
00099 #include "hwdrv_apci1032.c"
00100 #endif
00101 #ifdef CONFIG_APCI_1516
00102 #include "hwdrv_apci1516.c"
00103 #endif
00104 #ifdef CONFIG_APCI_2016
00105 #include "hwdrv_apci2016.c"
00106 #endif
00107 #ifdef CONFIG_APCI_2032
00108 #include "hwdrv_apci2032.c"
00109 #endif
00110 #ifdef CONFIG_APCI_2200
00111 #include "hwdrv_apci2200.c"
00112 #endif
00113 #ifdef CONFIG_APCI_1564
00114 #include "hwdrv_apci1564.c"
00115 #endif
00116 #ifdef CONFIG_APCI_1500
00117 #include "hwdrv_apci1500.c"
00118 #endif
00119 #ifdef CONFIG_APCI_3501
00120 #include "hwdrv_apci3501.c"
00121 #endif
00122 #ifdef CONFIG_APCI_035
00123 #include "hwdrv_apci035.c"
00124 #endif
00125 #if (defined (CONFIG_APCI_3200) || defined (CONFIG_APCI_3300))
00126 #include "hwdrv_apci3200.c"
00127 #endif
00128 #ifdef CONFIG_APCI_1710
00129 #include "hwdrv_APCI1710.c"
00130 #endif
00131 #ifdef CONFIG_APCI_16XX
00132 #include "hwdrv_apci16xx.c"
00133 #endif
00134 #ifdef CONFIG_APCI_3XXX
00135 #include "hwdrv_apci3xxx.c"
00136 #endif
00137 
00138 #ifndef COMEDI_SUBD_TTLIO
00139 #define COMEDI_SUBD_TTLIO   11  /* Digital Input Output But TTL */
00140 #endif
00141 
00142 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
00143 #ifdef CONFIG_APCI_3120
00144         {APCI3120_BOARD_VENDOR_ID, 0x818D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00145 #endif
00146 #ifdef CONFIG_APCI_1032
00147         {APCI1032_BOARD_VENDOR_ID, 0x1003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00148 #endif
00149 #ifdef CONFIG_APCI_1516
00150         {APCI1516_BOARD_VENDOR_ID, 0x1001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00151 #endif
00152 #ifdef CONFIG_APCI_2016
00153         {APCI2016_BOARD_VENDOR_ID, 0x1002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00154 #endif
00155 #ifdef CONFIG_APCI_2032
00156         {APCI2032_BOARD_VENDOR_ID, 0x1004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00157 #endif
00158 #ifdef CONFIG_APCI_2200
00159         {APCI2200_BOARD_VENDOR_ID, 0x1005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00160 #endif
00161 #ifdef CONFIG_APCI_1564
00162         {APCI1564_BOARD_VENDOR_ID, 0x1006, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00163 #endif
00164 #ifdef CONFIG_APCI_1500
00165         {APCI1500_BOARD_VENDOR_ID, 0x80fc, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00166 #endif
00167 #ifdef CONFIG_APCI_3001
00168         {APCI3120_BOARD_VENDOR_ID, 0x828D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00169 #endif
00170 #ifdef CONFIG_APCI_3501
00171         {APCI3501_BOARD_VENDOR_ID, 0x3001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00172 #endif
00173 #ifdef CONFIG_APCI_035
00174         {APCI035_BOARD_VENDOR_ID, 0x0300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00175 #endif
00176 #ifdef CONFIG_APCI_3200
00177         {APCI3200_BOARD_VENDOR_ID, 0x3000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00178 #endif
00179 #ifdef CONFIG_APCI_3300
00180         {APCI3200_BOARD_VENDOR_ID, 0x3007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00181 #endif
00182 #ifdef CONFIG_APCI_1710
00183         {APCI1710_BOARD_VENDOR_ID, APCI1710_BOARD_DEVICE_ID,
00184                 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00185 #endif
00186 #ifdef CONFIG_APCI_16XX
00187         {0x15B8, 0x1009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00188         {0x15B8, 0x100A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00189 #endif
00190 #ifdef CONFIG_APCI_3XXX
00191         {0x15B8, 0x3010, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00192         {0x15B8, 0x300F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00193         {0x15B8, 0x300E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00194         {0x15B8, 0x3013, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00195         {0x15B8, 0x3014, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00196         {0x15B8, 0x3015, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00197         {0x15B8, 0x3016, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00198         {0x15B8, 0x3017, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00199         {0x15B8, 0x3018, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00200         {0x15B8, 0x3019, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00201         {0x15B8, 0x301A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00202         {0x15B8, 0x301B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00203         {0x15B8, 0x301C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00204         {0x15B8, 0x301D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00205         {0x15B8, 0x301E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00206         {0x15B8, 0x301F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00207         {0x15B8, 0x3020, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00208         {0x15B8, 0x3021, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00209         {0x15B8, 0x3022, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00210         {0x15B8, 0x3023, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00211         {0x15B8, 0x300B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00212         {0x15B8, 0x3002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00213         {0x15B8, 0x3003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00214         {0x15B8, 0x3004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00215         {0x15B8, 0x3024, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
00216 #endif
00217         {0}
00218 };
00219 
00220 MODULE_DEVICE_TABLE(pci, addi_apci_tbl);
00221 
00222 static const boardtype boardtypes[] = {
00223 #ifdef CONFIG_APCI_3120
00224         {"apci3120",
00225                         APCI3120_BOARD_VENDOR_ID,
00226                         0x818D,
00227                         AMCC_OP_REG_SIZE,
00228                         APCI3120_ADDRESS_RANGE,
00229                         8,
00230                         0,
00231                         ADDIDATA_NO_EEPROM,
00232                         NULL,
00233                         16,
00234                         8,
00235                         16,
00236                         8,
00237                         0xffff,
00238                         0x3fff,
00239                         &range_apci3120_ai,
00240                         &range_apci3120_ao,
00241                         4,
00242                         4,
00243                         0x0f,
00244                         0,
00245                         NULL,
00246                         1,
00247                         1,
00248                         1,
00249                         10000,
00250                         100000,
00251                         v_APCI3120_Interrupt,
00252                         i_APCI3120_Reset,
00253                         i_APCI3120_InsnConfigAnalogInput,
00254                         i_APCI3120_InsnReadAnalogInput,
00255                         NULL,
00256                         NULL,
00257                         i_APCI3120_CommandTestAnalogInput,
00258                         i_APCI3120_CommandAnalogInput,
00259                         i_APCI3120_StopCyclicAcquisition,
00260                         NULL,
00261                         i_APCI3120_InsnWriteAnalogOutput,
00262                         NULL,
00263                         NULL,
00264                         i_APCI3120_InsnReadDigitalInput,
00265                         NULL,
00266                         i_APCI3120_InsnBitsDigitalInput,
00267                         i_APCI3120_InsnConfigDigitalOutput,
00268                         i_APCI3120_InsnWriteDigitalOutput,
00269                         i_APCI3120_InsnBitsDigitalOutput,
00270                         NULL,
00271                         i_APCI3120_InsnConfigTimer,
00272                         i_APCI3120_InsnWriteTimer,
00273                         i_APCI3120_InsnReadTimer,
00274                         NULL,
00275                         NULL,
00276                         NULL,
00277                         NULL,
00278                 NULL},
00279 #endif
00280 #ifdef CONFIG_APCI_1032
00281         {"apci1032",
00282                         APCI1032_BOARD_VENDOR_ID,
00283                         0x1003,
00284                         4,
00285                         APCI1032_ADDRESS_RANGE,
00286                         0,
00287                         0,
00288                         ADDIDATA_EEPROM,
00289                         ADDIDATA_93C76,
00290                         0,
00291                         0,
00292                         0,
00293                         0,
00294                         0,
00295                         0,
00296                         0,
00297                         0,
00298                         32,
00299                         0,
00300                         0,
00301                         0,
00302                         NULL,
00303                         0,
00304                         0,
00305                         0,
00306                         0,
00307                         0,
00308                         v_APCI1032_Interrupt,
00309                         i_APCI1032_Reset,
00310                         NULL,
00311                         NULL,
00312                         NULL,
00313                         NULL,
00314                         NULL,
00315                         NULL,
00316                         NULL,
00317                         NULL,
00318                         NULL,
00319                         NULL,
00320                         i_APCI1032_ConfigDigitalInput,
00321                         i_APCI1032_Read1DigitalInput,
00322                         NULL,
00323                         i_APCI1032_ReadMoreDigitalInput,
00324                         NULL,
00325                         NULL,
00326                         NULL,
00327                         NULL,
00328                         NULL,
00329                         NULL,
00330                         NULL,
00331                         NULL,
00332                         NULL,
00333                         NULL,
00334                         NULL,
00335                 NULL},
00336 #endif
00337 #ifdef CONFIG_APCI_1516
00338         {"apci1516",
00339                         APCI1516_BOARD_VENDOR_ID,
00340                         0x1001,
00341                         128,
00342                         APCI1516_ADDRESS_RANGE,
00343                         32,
00344                         0,
00345                         ADDIDATA_EEPROM,
00346                         ADDIDATA_S5920,
00347                         0,
00348                         0,
00349                         0,
00350                         0,
00351                         0,
00352                         0,
00353                         NULL,
00354                         NULL,
00355                         8,
00356                         8,
00357                         0,
00358                         0,
00359                         NULL,
00360                         0,
00361                         1,
00362                         0,
00363                         0,
00364                         0,
00365                         NULL,
00366                         i_APCI1516_Reset,
00367                         NULL, NULL,
00368                         NULL,
00369                         NULL,
00370                         NULL,
00371                         NULL,
00372                         NULL,
00373                         NULL,
00374                         NULL,
00375                         NULL,
00376                         NULL,
00377                         i_APCI1516_Read1DigitalInput,
00378                         NULL,
00379                         i_APCI1516_ReadMoreDigitalInput,
00380                         i_APCI1516_ConfigDigitalOutput,
00381                         i_APCI1516_WriteDigitalOutput,
00382                         i_APCI1516_ReadDigitalOutput,
00383                         NULL,
00384                         i_APCI1516_ConfigWatchdog,
00385                         i_APCI1516_StartStopWriteWatchdog,
00386                         i_APCI1516_ReadWatchdog,
00387                         NULL,
00388                         NULL,
00389                         NULL,
00390                         NULL,
00391                 NULL},
00392 #endif
00393 #ifdef CONFIG_APCI_2016
00394         {"apci2016",
00395                         APCI2016_BOARD_VENDOR_ID,
00396                         0x1002,
00397                         128,
00398                         APCI2016_ADDRESS_RANGE,
00399                         32,
00400                         0,
00401                         ADDIDATA_EEPROM,
00402                         ADDIDATA_S5920,
00403                         0,
00404                         0,
00405                         0,
00406                         0,
00407                         0,
00408                         0,
00409                         NULL,
00410                         NULL,
00411                         0,
00412                         16,
00413                         0,
00414                         0,
00415                         NULL,
00416                         0,
00417                         1,
00418                         0,
00419                         0,
00420                         0,
00421                         NULL,
00422                         i_APCI2016_Reset,
00423                         NULL,
00424                         NULL,
00425                         NULL,
00426                         NULL,
00427                         NULL,
00428                         NULL,
00429                         NULL,
00430                         NULL,
00431                         NULL,
00432                         NULL,
00433                         NULL,
00434                         NULL,
00435                         NULL,
00436                         NULL,
00437                         i_APCI2016_ConfigDigitalOutput,
00438                         i_APCI2016_WriteDigitalOutput,
00439                         i_APCI2016_BitsDigitalOutput,
00440                         NULL,
00441                         i_APCI2016_ConfigWatchdog,
00442                         i_APCI2016_StartStopWriteWatchdog,
00443                         i_APCI2016_ReadWatchdog,
00444                         NULL,
00445                         NULL,
00446                         NULL,
00447                         NULL,
00448                 NULL},
00449 #endif
00450 #ifdef CONFIG_APCI_2032
00451         {"apci2032",
00452                         APCI2032_BOARD_VENDOR_ID,
00453                         0x1004,
00454                         4,
00455                         APCI2032_ADDRESS_RANGE,
00456                         0,
00457                         0,
00458                         ADDIDATA_EEPROM,
00459                         ADDIDATA_93C76,
00460                         0,
00461                         0,
00462                         0,
00463                         0,
00464                         0,
00465                         0,
00466                         NULL,
00467                         NULL,
00468                         0,
00469                         32,
00470                         0xffffffff,
00471                         0,
00472                         NULL,
00473                         0,
00474                         1,
00475                         0,
00476                         0,
00477                         0,
00478                         v_APCI2032_Interrupt,
00479                         i_APCI2032_Reset,
00480                         NULL, NULL,
00481                         NULL,
00482                         NULL,
00483                         NULL,
00484                         NULL,
00485                         NULL,
00486                         NULL,
00487                         NULL,
00488                         NULL,
00489                         NULL,
00490                         NULL,
00491                         NULL,
00492                         NULL,
00493                         i_APCI2032_ConfigDigitalOutput,
00494                         i_APCI2032_WriteDigitalOutput,
00495                         i_APCI2032_ReadDigitalOutput,
00496                         i_APCI2032_ReadInterruptStatus,
00497                         i_APCI2032_ConfigWatchdog,
00498                         i_APCI2032_StartStopWriteWatchdog,
00499                         i_APCI2032_ReadWatchdog,
00500                         NULL,
00501                         NULL,
00502                         NULL,
00503                         NULL,
00504                 NULL},
00505 #endif
00506 #ifdef CONFIG_APCI_2200
00507         {"apci2200",
00508                         APCI2200_BOARD_VENDOR_ID,
00509                         0x1005,
00510                         4,
00511                         APCI2200_ADDRESS_RANGE,
00512                         0,
00513                         0,
00514                         ADDIDATA_EEPROM,
00515                         ADDIDATA_93C76,
00516                         0,
00517                         0,
00518                         0,
00519                         0,
00520                         0,
00521                         0,
00522                         NULL,
00523                         NULL,
00524                         8,
00525                         16,
00526                         0,
00527                         0,
00528                         NULL,
00529                         0,
00530                         1,
00531                         0,
00532                         0,
00533                         0,
00534                         NULL,
00535                         i_APCI2200_Reset,
00536                         NULL, NULL,
00537                         NULL,
00538                         NULL,
00539                         NULL,
00540                         NULL,
00541                         NULL,
00542                         NULL,
00543                         NULL,
00544                         NULL,
00545                         NULL,
00546                         i_APCI2200_Read1DigitalInput,
00547                         NULL,
00548                         i_APCI2200_ReadMoreDigitalInput,
00549                         i_APCI2200_ConfigDigitalOutput,
00550                         i_APCI2200_WriteDigitalOutput,
00551                         i_APCI2200_ReadDigitalOutput,
00552                         NULL,
00553                         i_APCI2200_ConfigWatchdog,
00554                         i_APCI2200_StartStopWriteWatchdog,
00555                         i_APCI2200_ReadWatchdog,
00556                         NULL,
00557                         NULL,
00558                         NULL,
00559                         NULL,
00560                 NULL},
00561 #endif
00562 #ifdef CONFIG_APCI_1564
00563         {"apci1564",
00564                         APCI1564_BOARD_VENDOR_ID,
00565                         0x1006,
00566                         128,
00567                         APCI1564_ADDRESS_RANGE,
00568                         0,
00569                         0,
00570                         ADDIDATA_EEPROM,
00571                         ADDIDATA_93C76,
00572                         0,
00573                         0,
00574                         0,
00575                         0,
00576                         0,
00577                         0,
00578                         NULL,
00579                         NULL,
00580                         32,
00581                         32,
00582                         0xffffffff,
00583                         0,
00584                         NULL,
00585                         0,
00586                         1,
00587                         0,
00588                         0,
00589                         0,
00590                         v_APCI1564_Interrupt,
00591                         i_APCI1564_Reset,
00592                         NULL,
00593                         NULL,
00594                         NULL,
00595                         NULL,
00596                         NULL,
00597                         NULL,
00598                         NULL,
00599                         NULL,
00600                         NULL,
00601                         NULL,
00602                         i_APCI1564_ConfigDigitalInput,
00603                         i_APCI1564_Read1DigitalInput,
00604                         NULL,
00605                         i_APCI1564_ReadMoreDigitalInput,
00606                         i_APCI1564_ConfigDigitalOutput,
00607                         i_APCI1564_WriteDigitalOutput,
00608                         i_APCI1564_ReadDigitalOutput,
00609                         i_APCI1564_ReadInterruptStatus,
00610                         i_APCI1564_ConfigTimerCounterWatchdog,
00611                         i_APCI1564_StartStopWriteTimerCounterWatchdog,
00612                         i_APCI1564_ReadTimerCounterWatchdog,
00613                         NULL,
00614                         NULL,
00615                         NULL,
00616                         NULL,
00617                 NULL},
00618 #endif
00619 #ifdef CONFIG_APCI_1500
00620         {"apci1500",
00621                         APCI1500_BOARD_VENDOR_ID,
00622                         0x80fc,
00623                         128,
00624                         APCI1500_ADDRESS_RANGE,
00625                         4,
00626                         0,
00627                         ADDIDATA_NO_EEPROM,
00628                         NULL,
00629                         0,
00630                         0,
00631                         0,
00632                         0,
00633                         0,
00634                         0,
00635                         NULL,
00636                         NULL,
00637                         16,
00638                         16,
00639                         0xffff,
00640                         0,
00641                         NULL,
00642                         0,
00643                         1,
00644                         0,
00645                         0,
00646                         0,
00647                         v_APCI1500_Interrupt,
00648                         i_APCI1500_Reset,
00649                         NULL,
00650                         NULL,
00651                         NULL,
00652                         NULL,
00653                         NULL,
00654                         NULL,
00655                         NULL,
00656                         NULL,
00657                         NULL,
00658                         NULL,
00659                         i_APCI1500_ConfigDigitalInputEvent,
00660                         i_APCI1500_Initialisation,
00661                         i_APCI1500_StartStopInputEvent,
00662                         i_APCI1500_ReadMoreDigitalInput,
00663                         i_APCI1500_ConfigDigitalOutputErrorInterrupt,
00664                         i_APCI1500_WriteDigitalOutput,
00665                         i_APCI1500_ConfigureInterrupt,
00666                         NULL,
00667                         i_APCI1500_ConfigCounterTimerWatchdog,
00668                         i_APCI1500_StartStopTriggerTimerCounterWatchdog,
00669                         i_APCI1500_ReadInterruptMask,
00670                         i_APCI1500_ReadCounterTimerWatchdog,
00671                         NULL,
00672                         NULL,
00673                         NULL,
00674                 NULL},
00675 #endif
00676 #ifdef CONFIG_APCI_3001
00677         {"apci3001",
00678                         APCI3120_BOARD_VENDOR_ID,
00679                         0x828D,
00680                         AMCC_OP_REG_SIZE,
00681                         APCI3120_ADDRESS_RANGE,
00682                         8,
00683                         0,
00684                         ADDIDATA_NO_EEPROM,
00685                         NULL,
00686                         16,
00687                         8,
00688                         16,
00689                         0,
00690                         0xfff,
00691                         0,
00692                         &range_apci3120_ai,
00693                         NULL,
00694                         4,
00695                         4,
00696                         0x0f,
00697                         0,
00698                         NULL,
00699                         1,
00700                         1,
00701                         1,
00702                         10000,
00703                         100000,
00704                         v_APCI3120_Interrupt,
00705                         i_APCI3120_Reset,
00706                         i_APCI3120_InsnConfigAnalogInput,
00707                         i_APCI3120_InsnReadAnalogInput,
00708                         NULL,
00709                         NULL,
00710                         i_APCI3120_CommandTestAnalogInput,
00711                         i_APCI3120_CommandAnalogInput,
00712                         i_APCI3120_StopCyclicAcquisition,
00713                         NULL,
00714                         NULL,
00715                         NULL,
00716                         NULL,
00717                         i_APCI3120_InsnReadDigitalInput,
00718                         NULL,
00719                         i_APCI3120_InsnBitsDigitalInput,
00720                         i_APCI3120_InsnConfigDigitalOutput,
00721                         i_APCI3120_InsnWriteDigitalOutput,
00722                         i_APCI3120_InsnBitsDigitalOutput,
00723                         NULL,
00724                         i_APCI3120_InsnConfigTimer,
00725                         i_APCI3120_InsnWriteTimer,
00726                         i_APCI3120_InsnReadTimer,
00727                         NULL,
00728                         NULL,
00729                         NULL,
00730                         NULL,
00731                 NULL},
00732 #endif
00733 #ifdef CONFIG_APCI_3501
00734         {"apci3501",
00735                         APCI3501_BOARD_VENDOR_ID,
00736                         0x3001,
00737                         64,
00738                         APCI3501_ADDRESS_RANGE,
00739                         0,
00740                         0,
00741                         ADDIDATA_EEPROM,
00742                         ADDIDATA_S5933,
00743                         0,
00744                         0,
00745                         0,
00746                         8,
00747                         0,
00748                         16383,
00749                         NULL,
00750                         &range_apci3501_ao,
00751                         2,
00752                         2,
00753                         0x3,
00754                         0,
00755                         NULL,
00756                         0,
00757                         1,
00758                         0,
00759                         0,
00760                         0,
00761                         v_APCI3501_Interrupt,
00762                         i_APCI3501_Reset,
00763                         NULL, NULL,
00764                         NULL,
00765                         NULL,
00766                         NULL,
00767                         NULL,
00768                         NULL,
00769                         i_APCI3501_ConfigAnalogOutput,
00770                         i_APCI3501_WriteAnalogOutput,
00771                         NULL,
00772                         NULL,
00773                         NULL,
00774                         NULL,
00775                         i_APCI3501_ReadDigitalInput,
00776                         i_APCI3501_ConfigDigitalOutput,
00777                         i_APCI3501_WriteDigitalOutput,
00778                         i_APCI3501_ReadDigitalOutput,
00779                         NULL,
00780                         i_APCI3501_ConfigTimerCounterWatchdog,
00781                         i_APCI3501_StartStopWriteTimerCounterWatchdog,
00782                         i_APCI3501_ReadTimerCounterWatchdog,
00783                         NULL,
00784                         NULL,
00785                         NULL,
00786                         NULL,
00787                 NULL},
00788 #endif
00789 #ifdef CONFIG_APCI_035
00790         {"apci035",
00791                         APCI035_BOARD_VENDOR_ID,
00792                         0x0300,
00793                         127,
00794                         APCI035_ADDRESS_RANGE,
00795                         0,
00796                         0,
00797                         1,
00798                         ADDIDATA_S5920,
00799                         16,
00800                         8,
00801                         16,
00802                         0,
00803                         0xff,
00804                         0,
00805                         &range_apci035_ai,
00806                         NULL,
00807                         0,
00808                         0,
00809                         0,
00810                         0,
00811                         NULL,
00812                         0,
00813                         1,
00814                         0,
00815                         10000,
00816                         100000,
00817                         v_APCI035_Interrupt,
00818                         i_APCI035_Reset,
00819                         i_APCI035_ConfigAnalogInput,
00820                         i_APCI035_ReadAnalogInput,
00821                         NULL,
00822                         NULL,
00823                         NULL,
00824                         NULL,
00825                         NULL,
00826                         NULL,
00827                         NULL,
00828                         NULL,
00829                         NULL,
00830                         NULL,
00831                         NULL,
00832                         NULL,
00833                         NULL,
00834                         NULL,
00835                         NULL,
00836                         NULL,
00837                         i_APCI035_ConfigTimerWatchdog,
00838                         i_APCI035_StartStopWriteTimerWatchdog,
00839                         i_APCI035_ReadTimerWatchdog,
00840                         NULL,
00841                         NULL,
00842                         NULL,
00843                         NULL,
00844                 NULL},
00845 #endif
00846 #ifdef CONFIG_APCI_3200
00847         {"apci3200",
00848                         APCI3200_BOARD_VENDOR_ID,
00849                         0x3000,
00850                         128,
00851                         256,
00852                         4,
00853                         4,
00854                         ADDIDATA_EEPROM,
00855                         ADDIDATA_S5920,
00856                         16,
00857                         8,
00858                         16,
00859                         0,
00860                         0x3ffff,
00861                         0,
00862                         &range_apci3200_ai,
00863                         NULL,
00864                         4,
00865                         4,
00866                         0,
00867                         0,
00868                         NULL,
00869                         0,
00870                         0,
00871                         0,
00872                         10000,
00873                         100000,
00874                         v_APCI3200_Interrupt,
00875                         i_APCI3200_Reset,
00876                         i_APCI3200_ConfigAnalogInput,
00877                         i_APCI3200_ReadAnalogInput,
00878                         i_APCI3200_InsnWriteReleaseAnalogInput,
00879                         i_APCI3200_InsnBits_AnalogInput_Test,
00880                         i_APCI3200_CommandTestAnalogInput,
00881                         i_APCI3200_CommandAnalogInput,
00882                         i_APCI3200_StopCyclicAcquisition,
00883                         NULL,
00884                         NULL,
00885                         NULL,
00886                         NULL,
00887                         NULL,
00888                         NULL,
00889                         i_APCI3200_ReadDigitalInput,
00890                         i_APCI3200_ConfigDigitalOutput,
00891                         i_APCI3200_WriteDigitalOutput,
00892                         i_APCI3200_ReadDigitalOutput,
00893                         NULL,
00894                         NULL,
00895                         NULL,
00896                         NULL,
00897                         NULL,
00898                         NULL,
00899                         NULL,
00900                         NULL,
00901                 NULL},
00902 #endif
00903 #ifdef CONFIG_APCI_3300
00904         //Begin JK 20.10.2004: APCI-3300 integration
00905         {"apci3300",
00906                         APCI3200_BOARD_VENDOR_ID,
00907                         0x3007,
00908                         128,
00909                         256,
00910                         4,
00911                         4,
00912                         ADDIDATA_EEPROM,
00913                         ADDIDATA_S5920,
00914                         0,
00915                         8,
00916                         8,
00917                         0,
00918                         0x3ffff,
00919                         0,
00920                         &range_apci3300_ai,
00921                         NULL,
00922                         4,
00923                         4,
00924                         0,
00925                         0,
00926                         NULL,
00927                         0,
00928                         0,
00929                         0,
00930                         10000,
00931                         100000,
00932                         v_APCI3200_Interrupt,
00933                         i_APCI3200_Reset,
00934                         i_APCI3200_ConfigAnalogInput,
00935                         i_APCI3200_ReadAnalogInput,
00936                         i_APCI3200_InsnWriteReleaseAnalogInput,
00937                         i_APCI3200_InsnBits_AnalogInput_Test,
00938                         i_APCI3200_CommandTestAnalogInput,
00939                         i_APCI3200_CommandAnalogInput,
00940                         i_APCI3200_StopCyclicAcquisition,
00941                         NULL,
00942                         NULL,
00943                         NULL,
00944                         NULL,
00945                         NULL,
00946                         NULL,
00947                         i_APCI3200_ReadDigitalInput,
00948                         i_APCI3200_ConfigDigitalOutput,
00949                         i_APCI3200_WriteDigitalOutput,
00950                         i_APCI3200_ReadDigitalOutput,
00951                         NULL,
00952                         NULL,
00953                         NULL,
00954                         NULL,
00955                         NULL,
00956                         NULL,
00957                         NULL,
00958                         NULL,
00959                 NULL},
00960 #endif
00961 #ifdef CONFIG_APCI_1710
00962         {"apci1710", APCI1710_BOARD_VENDOR_ID, APCI1710_BOARD_DEVICE_ID,
00963                         128,
00964                         8,
00965                         256,
00966                         0,
00967                         ADDIDATA_NO_EEPROM,
00968                         NULL,
00969                         0,
00970                         0,
00971                         0,
00972                         0,
00973                         0,
00974                         0,
00975                         NULL,
00976                         NULL,
00977                         0,
00978                         0,
00979                         0,
00980                         0,
00981                         NULL,
00982                         0,
00983                         0,
00984                         0,
00985                         0,
00986                         0,
00987                         v_APCI1710_Interrupt,
00988                         i_APCI1710_Reset,
00989                         NULL,
00990                         NULL,
00991                         NULL,
00992                         NULL,
00993                         NULL,
00994                         NULL,
00995                         NULL,
00996                         NULL,
00997                         NULL,
00998                         NULL,
00999                         NULL,
01000                         NULL,
01001                         NULL,
01002                         NULL,
01003                         NULL,
01004                         NULL,
01005                         NULL,
01006                         NULL,
01007                         NULL,
01008                         NULL,
01009                         NULL,
01010                         NULL,
01011                         NULL,
01012                         NULL,
01013                         NULL,
01014                 NULL},
01015 #endif
01016 #ifdef CONFIG_APCI_16XX
01017         {"apci1648",
01018                         0x15B8,
01019                         0x1009,
01020                         128,
01021                         0,
01022                         0,
01023                         0,
01024                         ADDIDATA_NO_EEPROM,
01025                         NULL,
01026                         0,
01027                         0,
01028                         0,
01029                         0,
01030                         0,
01031                         0,
01032                         NULL,
01033                         NULL,
01034                         0,
01035                         0,
01036                         0,
01037                         48,
01038                         &range_apci16xx_ttl,
01039                         0,
01040                         0,
01041                         0,
01042                         0,
01043                         0,
01044                         NULL,
01045                         i_APCI16XX_Reset,
01046                         NULL,
01047                         NULL,
01048                         NULL,
01049                         NULL,
01050                         NULL,
01051                         NULL,
01052                         NULL,
01053                         NULL,
01054                         NULL,
01055                         NULL,
01056                         NULL,
01057                         NULL,
01058                         NULL,
01059                         NULL,
01060                         NULL,
01061                         NULL,
01062                         NULL,
01063                         NULL,
01064                         NULL,
01065                         NULL,
01066                         NULL,
01067                         NULL,
01068                         i_APCI16XX_InsnConfigInitTTLIO,
01069                         i_APCI16XX_InsnBitsReadTTLIO,
01070                         i_APCI16XX_InsnReadTTLIOAllPortValue,
01071                 i_APCI16XX_InsnBitsWriteTTLIO},
01072 
01073         {"apci1696",
01074                         0x15B8,
01075                         0x100A,
01076                         128,
01077                         0,
01078                         0,
01079                         0,
01080                         ADDIDATA_NO_EEPROM,
01081                         NULL,
01082                         0,
01083                         0,
01084                         0,
01085                         0,
01086                         0,
01087                         0,
01088                         NULL,
01089                         NULL,
01090                         0,
01091                         0,
01092                         0,
01093                         96,
01094                         &range_apci16xx_ttl,
01095                         0,
01096                         0,
01097                         0,
01098                         0,
01099                         0,
01100                         NULL,
01101                         i_APCI16XX_Reset,
01102                         NULL,
01103                         NULL,
01104                         NULL,
01105                         NULL,
01106                         NULL,
01107                         NULL,
01108                         NULL,
01109                         NULL,
01110                         NULL,
01111                         NULL,
01112                         NULL,
01113                         NULL,
01114                         NULL,
01115                         NULL,
01116                         NULL,
01117                         NULL,
01118                         NULL,
01119                         NULL,
01120                         NULL,
01121                         NULL,
01122                         NULL,
01123                         NULL,
01124                         i_APCI16XX_InsnConfigInitTTLIO,
01125                         i_APCI16XX_InsnBitsReadTTLIO,
01126                         i_APCI16XX_InsnReadTTLIOAllPortValue,
01127                 i_APCI16XX_InsnBitsWriteTTLIO},
01128 #endif
01129 #ifdef CONFIG_APCI_3XXX
01130         {"apci3000-16",
01131                         0x15B8,
01132                         0x3010,
01133                         256,
01134                         256,
01135                         256,
01136                         256,
01137                         ADDIDATA_NO_EEPROM,
01138                         ADDIDATA_9054,
01139                         16,
01140                         8,
01141                         16,
01142                         0,
01143                         4095,
01144                         0,
01145                         &range_apci3XXX_ai,
01146                         NULL,
01147                         0,
01148                         0,
01149                         0,
01150                         24,
01151                         &range_apci3XXX_ttl,
01152                         0,
01153                         0,
01154                         6,
01155                         10000,
01156                         0,
01157                         v_APCI3XXX_Interrupt,
01158                         i_APCI3XXX_Reset,
01159                         i_APCI3XXX_InsnConfigAnalogInput,
01160                         i_APCI3XXX_InsnReadAnalogInput,
01161                         NULL,
01162                         NULL,
01163                         NULL,
01164                         NULL,
01165                         NULL,
01166                         NULL,
01167                         NULL,
01168                         NULL,
01169                         NULL,
01170                         NULL,
01171                         NULL,
01172                         NULL,
01173                         NULL,
01174                         NULL,
01175                         NULL,
01176                         NULL,
01177                         NULL,
01178                         NULL,
01179                         NULL,
01180                         NULL,
01181                         i_APCI3XXX_InsnConfigInitTTLIO,
01182                         i_APCI3XXX_InsnBitsTTLIO,
01183                         i_APCI3XXX_InsnReadTTLIO,
01184                 i_APCI3XXX_InsnWriteTTLIO},
01185 
01186         {"apci3000-8",
01187                         0x15B8,
01188                         0x300F,
01189                         256,
01190                         256,
01191                         256,
01192                         256,
01193                         ADDIDATA_NO_EEPROM,
01194                         ADDIDATA_9054,
01195                         8,
01196                         4,
01197                         8,
01198                         0,
01199                         4095,
01200                         0,
01201                         &range_apci3XXX_ai,
01202                         NULL,
01203                         0,
01204                         0,
01205                         0,
01206                         24,
01207                         &range_apci3XXX_ttl,
01208                         0,
01209                         0,
01210                         6,
01211                         10000,
01212                         0,
01213                         v_APCI3XXX_Interrupt,
01214                         i_APCI3XXX_Reset,
01215                         i_APCI3XXX_InsnConfigAnalogInput,
01216                         i_APCI3XXX_InsnReadAnalogInput,
01217                         NULL,
01218                         NULL,
01219                         NULL,
01220                         NULL,
01221                         NULL,
01222                         NULL,
01223                         NULL,
01224                         NULL,
01225                         NULL,
01226                         NULL,
01227                         NULL,
01228                         NULL,
01229                         NULL,
01230                         NULL,
01231                         NULL,
01232                         NULL,
01233                         NULL,
01234                         NULL,
01235                         NULL,
01236                         NULL,
01237                         i_APCI3XXX_InsnConfigInitTTLIO,
01238                         i_APCI3XXX_InsnBitsTTLIO,
01239                         i_APCI3XXX_InsnReadTTLIO,
01240                 i_APCI3XXX_InsnWriteTTLIO},
01241 
01242         {"apci3000-4",
01243                         0x15B8,
01244                         0x300E,
01245                         256,
01246                         256,
01247                         256,
01248                         256,
01249                         ADDIDATA_NO_EEPROM,
01250                         ADDIDATA_9054,
01251                         4,
01252                         2,
01253                         4,
01254                         0,
01255                         4095,
01256                         0,
01257                         &range_apci3XXX_ai,
01258                         NULL,
01259                         0,
01260                         0,
01261                         0,
01262                         24,
01263                         &range_apci3XXX_ttl,
01264                         0,
01265                         0,
01266                         6,
01267                         10000,
01268                         0,
01269                         v_APCI3XXX_Interrupt,
01270                         i_APCI3XXX_Reset,
01271                         i_APCI3XXX_InsnConfigAnalogInput,
01272                         i_APCI3XXX_InsnReadAnalogInput,
01273                         NULL,
01274                         NULL,
01275                         NULL,
01276                         NULL,
01277                         NULL,
01278                         NULL,
01279                         NULL,
01280                         NULL,
01281                         NULL,
01282                         NULL,
01283                         NULL,
01284                         NULL,
01285                         NULL,
01286                         NULL,
01287                         NULL,
01288                         NULL,
01289                         NULL,
01290                         NULL,
01291                         NULL,
01292                         NULL,
01293                         i_APCI3XXX_InsnConfigInitTTLIO,
01294                         i_APCI3XXX_InsnBitsTTLIO,
01295                         i_APCI3XXX_InsnReadTTLIO,
01296                 i_APCI3XXX_InsnWriteTTLIO},
01297 
01298         {"apci3006-16",
01299                         0x15B8,
01300                         0x3013,
01301                         256,
01302                         256,
01303                         256,
01304                         256,
01305                         ADDIDATA_NO_EEPROM,
01306                         ADDIDATA_9054,
01307                         16,
01308                         8,
01309                         16,
01310                         0,
01311                         65535,
01312                         0,
01313                         &range_apci3XXX_ai,
01314                         NULL,
01315                         0,
01316                         0,
01317                         0,
01318                         24,
01319                         &range_apci3XXX_ttl,
01320                         0,
01321                         0,
01322                         6,
01323                         10000,
01324                         0,
01325                         v_APCI3XXX_Interrupt,
01326                         i_APCI3XXX_Reset,
01327                         i_APCI3XXX_InsnConfigAnalogInput,
01328                         i_APCI3XXX_InsnReadAnalogInput,
01329                         NULL,
01330                         NULL,
01331                         NULL,
01332                         NULL,
01333                         NULL,
01334                         NULL,
01335                         NULL,
01336                         NULL,
01337                         NULL,
01338                         NULL,
01339                         NULL,
01340                         NULL,
01341                         NULL,
01342                         NULL,
01343                         NULL,
01344                         NULL,
01345                         NULL,
01346                         NULL,
01347                         NULL,
01348                         NULL,
01349                         i_APCI3XXX_InsnConfigInitTTLIO,
01350                         i_APCI3XXX_InsnBitsTTLIO,
01351                         i_APCI3XXX_InsnReadTTLIO,
01352                 i_APCI3XXX_InsnWriteTTLIO},
01353 
01354         {"apci3006-8",
01355                         0x15B8,
01356                         0x3014,
01357                         256,
01358                         256,
01359                         256,
01360                         256,
01361                         ADDIDATA_NO_EEPROM,
01362                         ADDIDATA_9054,
01363                         8,
01364                         4,
01365                         8,
01366                         0,
01367                         65535,
01368                         0,
01369                         &range_apci3XXX_ai,
01370                         NULL,
01371                         0,
01372                         0,
01373                         0,
01374                         24,
01375                         &range_apci3XXX_ttl,
01376                         0,
01377                         0,
01378                         6,
01379                         10000,
01380                         0,
01381                         v_APCI3XXX_Interrupt,
01382                         i_APCI3XXX_Reset,
01383                         i_APCI3XXX_InsnConfigAnalogInput,
01384                         i_APCI3XXX_InsnReadAnalogInput,
01385                         NULL,
01386                         NULL,
01387                         NULL,
01388                         NULL,
01389                         NULL,
01390                         NULL,
01391                         NULL,
01392                         NULL,
01393                         NULL,
01394                         NULL,
01395                         NULL,
01396                         NULL,
01397                         NULL,
01398                         NULL,
01399                         NULL,
01400                         NULL,
01401                         NULL,
01402                         NULL,
01403                         NULL,
01404                         NULL,
01405                         i_APCI3XXX_InsnConfigInitTTLIO,
01406                         i_APCI3XXX_InsnBitsTTLIO,
01407                         i_APCI3XXX_InsnReadTTLIO,
01408                 i_APCI3XXX_InsnWriteTTLIO},
01409 
01410         {"apci3006-4",
01411                         0x15B8,
01412                         0x3015,
01413                         256,
01414                         256,
01415                         256,
01416                         256,
01417                         ADDIDATA_NO_EEPROM,
01418                         ADDIDATA_9054,
01419                         4,
01420                         2,
01421                         4,
01422                         0,
01423                         65535,
01424                         0,
01425                         &range_apci3XXX_ai,
01426                         NULL,
01427                         0,
01428                         0,
01429                         0,
01430                         24,
01431                         &range_apci3XXX_ttl,
01432                         0,
01433                         0,
01434                         6,
01435                         10000,
01436                         0,
01437                         v_APCI3XXX_Interrupt,
01438                         i_APCI3XXX_Reset,
01439                         i_APCI3XXX_InsnConfigAnalogInput,
01440                         i_APCI3XXX_InsnReadAnalogInput,
01441                         NULL,
01442                         NULL,
01443                         NULL,
01444                         NULL,
01445                         NULL,
01446                         NULL,
01447                         NULL,
01448                         NULL,
01449                         NULL,
01450                         NULL,
01451                         NULL,
01452                         NULL,
01453                         NULL,
01454                         NULL,
01455                         NULL,
01456                         NULL,
01457                         NULL,
01458                         NULL,
01459                         NULL,
01460                         NULL,
01461                         i_APCI3XXX_InsnConfigInitTTLIO,
01462                         i_APCI3XXX_InsnBitsTTLIO,
01463                         i_APCI3XXX_InsnReadTTLIO,
01464                 i_APCI3XXX_InsnWriteTTLIO},
01465 
01466         {"apci3010-16",
01467                         0x15B8,
01468                         0x3016,
01469                         256,
01470                         256,
01471                         256,
01472                         256,
01473                         ADDIDATA_NO_EEPROM,
01474                         ADDIDATA_9054,
01475                         16,
01476                         8,
01477                         16,
01478                         0,
01479                         4095,
01480                         0,
01481                         &range_apci3XXX_ai,
01482                         NULL,
01483                         4,
01484                         4,
01485                         1,
01486                         24,
01487                         &range_apci3XXX_ttl,
01488                         0,
01489                         0,
01490                         6,
01491                         5000,
01492                         0,
01493                         v_APCI3XXX_Interrupt,
01494                         i_APCI3XXX_Reset,
01495                         i_APCI3XXX_InsnConfigAnalogInput,
01496                         i_APCI3XXX_InsnReadAnalogInput,
01497                         NULL,
01498                         NULL,
01499                         NULL,
01500                         NULL,
01501                         NULL,
01502                         NULL,
01503                         NULL,
01504                         NULL,
01505                         NULL,
01506                         i_APCI3XXX_InsnReadDigitalInput,
01507                         NULL,
01508                         i_APCI3XXX_InsnBitsDigitalInput,
01509                         NULL,
01510                         i_APCI3XXX_InsnWriteDigitalOutput,
01511                         i_APCI3XXX_InsnBitsDigitalOutput,
01512                         i_APCI3XXX_InsnReadDigitalOutput,
01513                         NULL,
01514                         NULL,
01515                         NULL,
01516                         NULL,
01517                         i_APCI3XXX_InsnConfigInitTTLIO,
01518                         i_APCI3XXX_InsnBitsTTLIO,
01519                         i_APCI3XXX_InsnReadTTLIO,
01520                 i_APCI3XXX_InsnWriteTTLIO},
01521 
01522         {"apci3010-8",
01523                         0x15B8,
01524                         0x3017,
01525                         256,
01526                         256,
01527                         256,
01528                         256,
01529                         ADDIDATA_NO_EEPROM,
01530                         ADDIDATA_9054,
01531                         8,
01532                         4,
01533                         8,
01534                         0,
01535                         4095,
01536                         0,
01537                         &range_apci3XXX_ai,
01538                         NULL,
01539                         4,
01540                         4,
01541                         1,
01542                         24,
01543                         &range_apci3XXX_ttl,
01544                         0,
01545                         0,
01546                         6,
01547                         5000,
01548                         0,
01549                         v_APCI3XXX_Interrupt,
01550                         i_APCI3XXX_Reset,
01551                         i_APCI3XXX_InsnConfigAnalogInput,
01552                         i_APCI3XXX_InsnReadAnalogInput,
01553                         NULL,
01554                         NULL,
01555                         NULL,
01556                         NULL,
01557                         NULL,
01558                         NULL,
01559                         NULL,
01560                         NULL,
01561                         NULL,
01562                         i_APCI3XXX_InsnReadDigitalInput,
01563                         NULL,
01564                         i_APCI3XXX_InsnBitsDigitalInput,
01565                         NULL,
01566                         i_APCI3XXX_InsnWriteDigitalOutput,
01567                         i_APCI3XXX_InsnBitsDigitalOutput,
01568                         i_APCI3XXX_InsnReadDigitalOutput,
01569                         NULL,
01570                         NULL,
01571                         NULL,
01572                         NULL,
01573                         i_APCI3XXX_InsnConfigInitTTLIO,
01574                         i_APCI3XXX_InsnBitsTTLIO,
01575                         i_APCI3XXX_InsnReadTTLIO,
01576                 i_APCI3XXX_InsnWriteTTLIO},
01577 
01578         {"apci3010-4",
01579                         0x15B8,
01580                         0x3018,
01581                         256,
01582                         256,
01583                         256,
01584                         256,
01585                         ADDIDATA_NO_EEPROM,
01586                         ADDIDATA_9054,
01587                         4,
01588                         2,
01589                         4,
01590                         0,
01591                         4095,
01592                         0,
01593                         &range_apci3XXX_ai,
01594                         NULL,
01595                         4,
01596                         4,
01597                         1,
01598                         24,
01599                         &range_apci3XXX_ttl,
01600                         0,
01601                         0,
01602                         6,
01603                         5000,
01604                         0,
01605                         v_APCI3XXX_Interrupt,
01606                         i_APCI3XXX_Reset,
01607                         i_APCI3XXX_InsnConfigAnalogInput,
01608                         i_APCI3XXX_InsnReadAnalogInput,
01609                         NULL,
01610                         NULL,
01611                         NULL,
01612                         NULL,
01613                         NULL,
01614                         NULL,
01615                         NULL,
01616                         NULL,
01617                         NULL,
01618                         i_APCI3XXX_InsnReadDigitalInput,
01619                         NULL,
01620                         i_APCI3XXX_InsnBitsDigitalInput,
01621                         NULL,
01622                         i_APCI3XXX_InsnWriteDigitalOutput,
01623                         i_APCI3XXX_InsnBitsDigitalOutput,
01624                         i_APCI3XXX_InsnReadDigitalOutput,
01625                         NULL,
01626                         NULL,
01627                         NULL,
01628                         NULL,
01629                         i_APCI3XXX_InsnConfigInitTTLIO,
01630                         i_APCI3XXX_InsnBitsTTLIO,
01631                         i_APCI3XXX_InsnReadTTLIO,
01632                 i_APCI3XXX_InsnWriteTTLIO},
01633 
01634         {"apci3016-16",
01635                         0x15B8,
01636                         0x3019,
01637                         256,
01638                         256,
01639                         256,
01640                         256,
01641                         ADDIDATA_NO_EEPROM,
01642                         ADDIDATA_9054,
01643                         16,
01644                         8,
01645                         16,
01646                         0,
01647                         65535,
01648                         0,
01649                         &range_apci3XXX_ai,
01650                         NULL,
01651                         4,
01652                         4,
01653                         1,
01654                         24,
01655                         &range_apci3XXX_ttl,
01656                         0,
01657                         0,
01658                         6,
01659                         5000,
01660                         0,
01661                         v_APCI3XXX_Interrupt,
01662                         i_APCI3XXX_Reset,
01663                         i_APCI3XXX_InsnConfigAnalogInput,
01664                         i_APCI3XXX_InsnReadAnalogInput,
01665                         NULL,
01666                         NULL,
01667                         NULL,
01668                         NULL,
01669                         NULL,
01670                         NULL,
01671                         NULL,
01672                         NULL,
01673                         NULL,
01674                         i_APCI3XXX_InsnReadDigitalInput,
01675                         NULL,
01676                         i_APCI3XXX_InsnBitsDigitalInput,
01677                         NULL,
01678                         i_APCI3XXX_InsnWriteDigitalOutput,
01679                         i_APCI3XXX_InsnBitsDigitalOutput,
01680                         i_APCI3XXX_InsnReadDigitalOutput,
01681                         NULL,
01682                         NULL,
01683                         NULL,
01684                         NULL,
01685                         i_APCI3XXX_InsnConfigInitTTLIO,
01686                         i_APCI3XXX_InsnBitsTTLIO,
01687                         i_APCI3XXX_InsnReadTTLIO,
01688                 i_APCI3XXX_InsnWriteTTLIO},
01689 
01690         {"apci3016-8",
01691                         0x15B8,
01692                         0x301A,
01693                         256,
01694                         256,
01695                         256,
01696                         256,
01697                         ADDIDATA_NO_EEPROM,
01698                         ADDIDATA_9054,
01699                         8,
01700                         4,
01701                         8,
01702                         0,
01703                         65535,
01704                         0,
01705                         &range_apci3XXX_ai,
01706                         NULL,
01707                         4,
01708                         4,
01709                         1,
01710                         24,
01711                         &range_apci3XXX_ttl,
01712                         0,
01713                         0,
01714                         6,
01715                         5000,
01716                         0,
01717                         v_APCI3XXX_Interrupt,
01718                         i_APCI3XXX_Reset,
01719                         i_APCI3XXX_InsnConfigAnalogInput,
01720                         i_APCI3XXX_InsnReadAnalogInput,
01721                         NULL,
01722                         NULL,
01723                         NULL,
01724                         NULL,
01725                         NULL,
01726                         NULL,
01727                         NULL,
01728                         NULL,
01729                         NULL,
01730                         i_APCI3XXX_InsnReadDigitalInput,
01731                         NULL,
01732                         i_APCI3XXX_InsnBitsDigitalInput,
01733                         NULL,
01734                         i_APCI3XXX_InsnWriteDigitalOutput,
01735                         i_APCI3XXX_InsnBitsDigitalOutput,
01736                         i_APCI3XXX_InsnReadDigitalOutput,
01737                         NULL,
01738                         NULL,
01739                         NULL,
01740                         NULL,
01741                         i_APCI3XXX_InsnConfigInitTTLIO,
01742                         i_APCI3XXX_InsnBitsTTLIO,
01743                         i_APCI3XXX_InsnReadTTLIO,
01744                 i_APCI3XXX_InsnWriteTTLIO},
01745 
01746         {"apci3016-4",
01747                         0x15B8,
01748                         0x301B,
01749                         256,
01750                         256,
01751                         256,
01752                         256,
01753                         ADDIDATA_NO_EEPROM,
01754                         ADDIDATA_9054,
01755                         4,
01756                         2,
01757                         4,
01758                         0,
01759                         65535,
01760                         0,
01761                         &range_apci3XXX_ai,
01762                         NULL,
01763                         4,
01764                         4,
01765                         1,
01766                         24,
01767                         &range_apci3XXX_ttl,
01768                         0,
01769                         0,
01770                         6,
01771                         5000,
01772                         0,
01773                         v_APCI3XXX_Interrupt,
01774                         i_APCI3XXX_Reset,
01775                         i_APCI3XXX_InsnConfigAnalogInput,
01776                         i_APCI3XXX_InsnReadAnalogInput,
01777                         NULL,
01778                         NULL,
01779                         NULL,
01780                         NULL,
01781                         NULL,
01782                         NULL,
01783                         NULL,
01784                         NULL,
01785                         NULL,
01786                         i_APCI3XXX_InsnReadDigitalInput,
01787                         NULL,
01788                         i_APCI3XXX_InsnBitsDigitalInput,
01789                         NULL,
01790                         i_APCI3XXX_InsnWriteDigitalOutput,
01791                         i_APCI3XXX_InsnBitsDigitalOutput,
01792                         i_APCI3XXX_InsnReadDigitalOutput,
01793                         NULL,
01794                         NULL,
01795                         NULL,
01796                         NULL,
01797                         i_APCI3XXX_InsnConfigInitTTLIO,
01798                         i_APCI3XXX_InsnBitsTTLIO,
01799                         i_APCI3XXX_InsnReadTTLIO,
01800                 i_APCI3XXX_InsnWriteTTLIO},
01801 
01802         {"apci3100-16-4",
01803                         0x15B8,
01804                         0x301C,
01805                         256,
01806                         256,
01807                         256,
01808                         256,
01809                         ADDIDATA_NO_EEPROM,
01810                         ADDIDATA_9054,
01811                         16,
01812                         8,
01813                         16,
01814                         4,
01815                         4095,
01816                         4095,
01817                         &range_apci3XXX_ai,
01818                         &range_apci3XXX_ao,
01819                         0,
01820                         0,
01821                         0,
01822                         24,
01823                         &range_apci3XXX_ttl,
01824                         0,
01825                         0,
01826                         6,
01827                         10000,
01828                         0,
01829                         v_APCI3XXX_Interrupt,
01830                         i_APCI3XXX_Reset,
01831                         i_APCI3XXX_InsnConfigAnalogInput,
01832                         i_APCI3XXX_InsnReadAnalogInput,
01833                         NULL,
01834                         NULL,
01835                         NULL,
01836                         NULL,
01837                         NULL,
01838                         NULL,
01839                         i_APCI3XXX_InsnWriteAnalogOutput,
01840                         NULL,
01841                         NULL,
01842                         NULL,
01843                         NULL,
01844                         NULL,
01845                         NULL,
01846                         NULL,
01847                         NULL,
01848                         NULL,
01849                         NULL,
01850                         NULL,
01851                         NULL,
01852                         NULL,
01853                         i_APCI3XXX_InsnConfigInitTTLIO,
01854                         i_APCI3XXX_InsnBitsTTLIO,
01855                         i_APCI3XXX_InsnReadTTLIO,
01856                 i_APCI3XXX_InsnWriteTTLIO},
01857 
01858         {"apci3100-8-4",
01859                         0x15B8,
01860                         0x301D,
01861                         256,
01862                         256,
01863                         256,
01864                         256,
01865                         ADDIDATA_NO_EEPROM,
01866                         ADDIDATA_9054,
01867                         8,
01868                         4,
01869                         8,
01870                         4,
01871                         4095,
01872                         4095,
01873                         &range_apci3XXX_ai,
01874                         &range_apci3XXX_ao,
01875                         0,
01876                         0,
01877                         0,
01878                         24,
01879                         &range_apci3XXX_ttl,
01880                         0,
01881                         0,
01882                         6,
01883                         10000,
01884                         0,
01885                         v_APCI3XXX_Interrupt,
01886                         i_APCI3XXX_Reset,
01887                         i_APCI3XXX_InsnConfigAnalogInput,
01888                         i_APCI3XXX_InsnReadAnalogInput,
01889                         NULL,
01890                         NULL,
01891                         NULL,
01892                         NULL,
01893                         NULL,
01894                         NULL,
01895                         i_APCI3XXX_InsnWriteAnalogOutput,
01896                         NULL,
01897                         NULL,
01898                         NULL,
01899                         NULL,
01900                         NULL,
01901                         NULL,
01902                         NULL,
01903                         NULL,
01904                         NULL,
01905                         NULL,
01906                         NULL,
01907                         NULL,
01908                         NULL,
01909                         i_APCI3XXX_InsnConfigInitTTLIO,
01910                         i_APCI3XXX_InsnBitsTTLIO,
01911                         i_APCI3XXX_InsnReadTTLIO,
01912                 i_APCI3XXX_InsnWriteTTLIO},
01913 
01914         {"apci3106-16-4",
01915                         0x15B8,
01916                         0x301E,
01917                         256,
01918                         256,
01919                         256,
01920                         256,
01921                         ADDIDATA_NO_EEPROM,
01922                         ADDIDATA_9054,
01923                         16,
01924                         8,
01925                         16,
01926                         4,
01927                         65535,
01928                         4095,
01929                         &range_apci3XXX_ai,
01930                         &range_apci3XXX_ao,
01931                         0,
01932                         0,
01933                         0,
01934                         24,
01935                         &range_apci3XXX_ttl,
01936                         0,
01937                         0,
01938                         6,
01939                         10000,
01940                         0,
01941                         v_APCI3XXX_Interrupt,
01942                         i_APCI3XXX_Reset,
01943                         i_APCI3XXX_InsnConfigAnalogInput,
01944                         i_APCI3XXX_InsnReadAnalogInput,
01945                         NULL,
01946                         NULL,
01947                         NULL,
01948                         NULL,
01949                         NULL,
01950                         NULL,
01951                         i_APCI3XXX_InsnWriteAnalogOutput,
01952                         NULL,
01953                         NULL,
01954                         NULL,
01955                         NULL,
01956                         NULL,
01957                         NULL,
01958                         NULL,
01959                         NULL,
01960                         NULL,
01961                         NULL,
01962                         NULL,
01963                         NULL,
01964                         NULL,
01965                         i_APCI3XXX_InsnConfigInitTTLIO,
01966                         i_APCI3XXX_InsnBitsTTLIO,
01967                         i_APCI3XXX_InsnReadTTLIO,
01968                 i_APCI3XXX_InsnWriteTTLIO},
01969 
01970         {"apci3106-8-4",
01971                         0x15B8,
01972                         0x301F,
01973                         256,
01974                         256,
01975                         256,
01976                         256,
01977                         ADDIDATA_NO_EEPROM,
01978                         ADDIDATA_9054,
01979                         8,
01980                         4,
01981                         8,
01982                         4,
01983                         65535,
01984                         4095,
01985                         &range_apci3XXX_ai,
01986                         &range_apci3XXX_ao,
01987                         0,
01988                         0,
01989                         0,
01990                         24,
01991                         &range_apci3XXX_ttl,
01992                         0,
01993                         0,
01994                         6,
01995                         10000,
01996                         0,
01997                         v_APCI3XXX_Interrupt,
01998                         i_APCI3XXX_Reset,
01999                         i_APCI3XXX_InsnConfigAnalogInput,
02000                         i_APCI3XXX_InsnReadAnalogInput,
02001                         NULL,
02002                         NULL,
02003                         NULL,
02004                         NULL,
02005                         NULL,
02006                         NULL,
02007                         i_APCI3XXX_InsnWriteAnalogOutput,
02008                         NULL,
02009                         NULL,
02010                         NULL,
02011                         NULL,
02012                         NULL,
02013                         NULL,
02014                         NULL,
02015                         NULL,
02016                         NULL,
02017                         NULL,
02018                         NULL,
02019                         NULL,
02020                         NULL,
02021                         i_APCI3XXX_InsnConfigInitTTLIO,
02022                         i_APCI3XXX_InsnBitsTTLIO,
02023                         i_APCI3XXX_InsnReadTTLIO,
02024                 i_APCI3XXX_InsnWriteTTLIO},
02025 
02026         {"apci3110-16-4",
02027                         0x15B8,
02028                         0x3020,
02029                         256,
02030                         256,
02031                         256,
02032                         256,
02033                         ADDIDATA_NO_EEPROM,
02034                         ADDIDATA_9054,
02035                         16,
02036                         8,
02037                         16,
02038                         4,
02039                         4095,
02040                         4095,
02041                         &range_apci3XXX_ai,
02042                         &range_apci3XXX_ao,
02043                         4,
02044                         4,
02045                         1,
02046                         24,
02047                         &range_apci3XXX_ttl,
02048                         0,
02049                         0,
02050                         6,
02051                         5000,
02052                         0,
02053                         v_APCI3XXX_Interrupt,
02054                         i_APCI3XXX_Reset,
02055                         i_APCI3XXX_InsnConfigAnalogInput,
02056                         i_APCI3XXX_InsnReadAnalogInput,
02057                         NULL,
02058                         NULL,
02059                         NULL,
02060                         NULL,
02061                         NULL,
02062                         NULL,
02063                         i_APCI3XXX_InsnWriteAnalogOutput,
02064                         NULL,
02065                         NULL,
02066                         i_APCI3XXX_InsnReadDigitalInput,
02067                         NULL,
02068                         i_APCI3XXX_InsnBitsDigitalInput,
02069                         NULL,
02070                         i_APCI3XXX_InsnWriteDigitalOutput,
02071                         i_APCI3XXX_InsnBitsDigitalOutput,
02072                         i_APCI3XXX_InsnReadDigitalOutput,
02073                         NULL,
02074                         NULL,
02075                         NULL,
02076                         NULL,
02077                         i_APCI3XXX_InsnConfigInitTTLIO,
02078                         i_APCI3XXX_InsnBitsTTLIO,
02079                         i_APCI3XXX_InsnReadTTLIO,
02080                 i_APCI3XXX_InsnWriteTTLIO},
02081 
02082         {"apci3110-8-4",
02083                         0x15B8,
02084                         0x3021,
02085                         256,
02086                         256,
02087                         256,
02088                         256,
02089                         ADDIDATA_NO_EEPROM,
02090                         ADDIDATA_9054,
02091                         8,
02092                         4,
02093                         8,
02094                         4,
02095                         4095,
02096                         4095,
02097                         &range_apci3XXX_ai,
02098                         &range_apci3XXX_ao,
02099                         4,
02100                         4,
02101                         1,
02102                         24,
02103                         &range_apci3XXX_ttl,
02104                         0,
02105                         0,
02106                         6,
02107                         5000,
02108                         0,
02109                         v_APCI3XXX_Interrupt,
02110                         i_APCI3XXX_Reset,
02111                         i_APCI3XXX_InsnConfigAnalogInput,
02112                         i_APCI3XXX_InsnReadAnalogInput,
02113                         NULL,
02114                         NULL,
02115                         NULL,
02116                         NULL,
02117                         NULL,
02118                         NULL,
02119                         i_APCI3XXX_InsnWriteAnalogOutput,
02120                         NULL,
02121                         NULL,
02122                         i_APCI3XXX_InsnReadDigitalInput,
02123                         NULL,
02124                         i_APCI3XXX_InsnBitsDigitalInput,
02125                         NULL,
02126                         i_APCI3XXX_InsnWriteDigitalOutput,
02127                         i_APCI3XXX_InsnBitsDigitalOutput,
02128                         i_APCI3XXX_InsnReadDigitalOutput,
02129                         NULL,
02130                         NULL,
02131                         NULL,
02132                         NULL,
02133                         i_APCI3XXX_InsnConfigInitTTLIO,
02134                         i_APCI3XXX_InsnBitsTTLIO,
02135                         i_APCI3XXX_InsnReadTTLIO,
02136                 i_APCI3XXX_InsnWriteTTLIO},
02137 
02138         {"apci3116-16-4",
02139                         0x15B8,
02140                         0x3022,
02141                         256,
02142                         256,
02143                         256,
02144                         256,
02145                         ADDIDATA_NO_EEPROM,
02146                         ADDIDATA_9054,
02147                         16,
02148                         8,
02149                         16,
02150                         4,
02151                         65535,
02152                         4095,
02153                         &range_apci3XXX_ai,
02154                         &range_apci3XXX_ao,
02155                         4,
02156                         4,
02157                         1,
02158                         24,
02159                         &range_apci3XXX_ttl,
02160                         0,
02161                         0,
02162                         6,
02163                         5000,
02164                         0,
02165                         v_APCI3XXX_Interrupt,
02166                         i_APCI3XXX_Reset,
02167                         i_APCI3XXX_InsnConfigAnalogInput,
02168                         i_APCI3XXX_InsnReadAnalogInput,
02169                         NULL,
02170                         NULL,
02171                         NULL,
02172                         NULL,
02173                         NULL,
02174                         NULL,
02175                         i_APCI3XXX_InsnWriteAnalogOutput,
02176                         NULL,
02177                         NULL,
02178                         i_APCI3XXX_InsnReadDigitalInput,
02179                         NULL,
02180                         i_APCI3XXX_InsnBitsDigitalInput,
02181                         NULL,
02182                         i_APCI3XXX_InsnWriteDigitalOutput,
02183                         i_APCI3XXX_InsnBitsDigitalOutput,
02184                         i_APCI3XXX_InsnReadDigitalOutput,
02185                         NULL,
02186                         NULL,
02187                         NULL,
02188                         NULL,
02189                         i_APCI3XXX_InsnConfigInitTTLIO,
02190                         i_APCI3XXX_InsnBitsTTLIO,
02191                         i_APCI3XXX_InsnReadTTLIO,
02192                 i_APCI3XXX_InsnWriteTTLIO},
02193 
02194         {"apci3116-8-4",
02195                         0x15B8,
02196                         0x3023,
02197                         256,
02198                         256,
02199                         256,
02200                         256,
02201                         ADDIDATA_NO_EEPROM,
02202                         ADDIDATA_9054,
02203                         8,
02204                         4,
02205                         8,
02206                         4,
02207                         65535,
02208                         4095,
02209                         &range_apci3XXX_ai,
02210                         &range_apci3XXX_ao,
02211                         4,
02212                         4,
02213                         1,
02214                         24,
02215                         &range_apci3XXX_ttl,
02216                         0,
02217                         0,
02218                         6,
02219                         5000,
02220                         0,
02221                         v_APCI3XXX_Interrupt,
02222                         i_APCI3XXX_Reset,
02223                         i_APCI3XXX_InsnConfigAnalogInput,
02224                         i_APCI3XXX_InsnReadAnalogInput,
02225                         NULL,
02226                         NULL,
02227                         NULL,
02228                         NULL,
02229                         NULL,
02230                         NULL,
02231                         i_APCI3XXX_InsnWriteAnalogOutput,
02232                         NULL,
02233                         NULL,
02234                         i_APCI3XXX_InsnReadDigitalInput,
02235                         NULL,
02236                         i_APCI3XXX_InsnBitsDigitalInput,
02237                         NULL,
02238                         i_APCI3XXX_InsnWriteDigitalOutput,
02239                         i_APCI3XXX_InsnBitsDigitalOutput,
02240                         i_APCI3XXX_InsnReadDigitalOutput,
02241                         NULL,
02242                         NULL,
02243                         NULL,
02244                         NULL,
02245                         i_APCI3XXX_InsnConfigInitTTLIO,
02246                         i_APCI3XXX_InsnBitsTTLIO,
02247                         i_APCI3XXX_InsnReadTTLIO,
02248                 i_APCI3XXX_InsnWriteTTLIO},
02249 
02250         {"apci3003",
02251                         0x15B8,
02252                         0x300B,
02253                         256,
02254                         256,
02255                         256,
02256                         256,
02257                         ADDIDATA_NO_EEPROM,
02258                         ADDIDATA_9054,
02259                         0,
02260                         4,
02261                         4,
02262                         0,
02263                         65535,
02264                         0,
02265                         &range_apci3XXX_ai,
02266                         NULL,
02267                         4,
02268                         4,
02269                         1,
02270                         0,
02271                         NULL,
02272                         0,
02273                         0,
02274                         7,
02275                         2500,
02276                         0,
02277                         v_APCI3XXX_Interrupt,
02278                         i_APCI3XXX_Reset,
02279                         i_APCI3XXX_InsnConfigAnalogInput,
02280                         i_APCI3XXX_InsnReadAnalogInput,
02281                         NULL,
02282                         NULL,
02283                         NULL,
02284                         NULL,
02285                         NULL,
02286                         NULL,
02287                         NULL,
02288                         NULL,
02289                         NULL,
02290                         i_APCI3XXX_InsnReadDigitalInput,
02291                         NULL,
02292                         i_APCI3XXX_InsnBitsDigitalInput,
02293                         NULL,
02294                         i_APCI3XXX_InsnWriteDigitalOutput,
02295                         i_APCI3XXX_InsnBitsDigitalOutput,
02296                         i_APCI3XXX_InsnReadDigitalOutput,
02297                         NULL,
02298                         NULL,
02299                         NULL,
02300                         NULL,
02301                         NULL,
02302                         NULL,
02303                 NULL},
02304 
02305         {"apci3002-16",
02306                         0x15B8,
02307                         0x3002,
02308                         256,
02309                         256,
02310                         256,
02311                         256,
02312                         ADDIDATA_NO_EEPROM,
02313                         ADDIDATA_9054,
02314                         0,
02315                         16,
02316                         16,
02317                         0,
02318                         65535,
02319                         0,
02320                         &range_apci3XXX_ai,
02321                         NULL,
02322                         4,
02323                         4,
02324                         1,
02325                         0,
02326                         NULL,
02327                         0,
02328                         0,
02329                         6,
02330                         5000,
02331                         0,
02332                         v_APCI3XXX_Interrupt,
02333                         i_APCI3XXX_Reset,
02334                         i_APCI3XXX_InsnConfigAnalogInput,
02335                         i_APCI3XXX_InsnReadAnalogInput,
02336                         NULL,
02337                         NULL,
02338                         NULL,
02339                         NULL,
02340                         NULL,
02341                         NULL,
02342                         NULL,
02343                         NULL,
02344                         NULL,
02345                         i_APCI3XXX_InsnReadDigitalInput,
02346                         NULL,
02347                         i_APCI3XXX_InsnBitsDigitalInput,
02348                         NULL,
02349                         i_APCI3XXX_InsnWriteDigitalOutput,
02350                         i_APCI3XXX_InsnBitsDigitalOutput,
02351                         i_APCI3XXX_InsnReadDigitalOutput,
02352                         NULL,
02353                         NULL,
02354                         NULL,
02355                         NULL,
02356                         NULL,
02357                         NULL,
02358                 NULL},
02359 
02360         {"apci3002-8",
02361                         0x15B8,
02362                         0x3003,
02363                         256,
02364                         256,
02365                         256,
02366                         256,
02367                         ADDIDATA_NO_EEPROM,
02368                         ADDIDATA_9054,
02369                         0,
02370                         8,
02371                         8,
02372                         0,
02373                         65535,
02374                         0,
02375                         &range_apci3XXX_ai,
02376                         NULL,
02377                         4,
02378                         4,
02379                         1,
02380                         0,
02381                         NULL,
02382                         0,
02383                         0,
02384                         6,
02385                         5000,
02386                         0,
02387                         v_APCI3XXX_Interrupt,
02388                         i_APCI3XXX_Reset,
02389                         i_APCI3XXX_InsnConfigAnalogInput,
02390                         i_APCI3XXX_InsnReadAnalogInput,
02391                         NULL,
02392                         NULL,
02393                         NULL,
02394                         NULL,
02395                         NULL,
02396                         NULL,
02397                         NULL,
02398                         NULL,
02399                         NULL,
02400                         i_APCI3XXX_InsnReadDigitalInput,
02401                         NULL,
02402                         i_APCI3XXX_InsnBitsDigitalInput,
02403                         NULL,
02404                         i_APCI3XXX_InsnWriteDigitalOutput,
02405                         i_APCI3XXX_InsnBitsDigitalOutput,
02406                         i_APCI3XXX_InsnReadDigitalOutput,
02407                         NULL,
02408                         NULL,
02409                         NULL,
02410                         NULL,
02411                         NULL,
02412                         NULL,
02413                 NULL},
02414 
02415         {"apci3002-4",
02416                         0x15B8,
02417                         0x3004,
02418                         256,
02419                         256,
02420                         256,
02421                         256,
02422                         ADDIDATA_NO_EEPROM,
02423                         ADDIDATA_9054,
02424                         0,
02425                         4,
02426                         4,
02427                         0,
02428                         65535,
02429                         0,
02430                         &range_apci3XXX_ai,
02431                         NULL,
02432                         4,
02433                         4,
02434                         1,
02435                         0,
02436                         NULL,
02437                         0,
02438                         0,
02439                         6,
02440                         5000,
02441                         0,
02442                         v_APCI3XXX_Interrupt,
02443                         i_APCI3XXX_Reset,
02444                         i_APCI3XXX_InsnConfigAnalogInput,
02445                         i_APCI3XXX_InsnReadAnalogInput,
02446                         NULL,
02447                         NULL,
02448                         NULL,
02449                         NULL,
02450                         NULL,
02451                         NULL,
02452                         NULL,
02453                         NULL,
02454                         NULL,
02455                         i_APCI3XXX_InsnReadDigitalInput,
02456                         NULL,
02457                         i_APCI3XXX_InsnBitsDigitalInput,
02458                         NULL,
02459                         i_APCI3XXX_InsnWriteDigitalOutput,
02460                         i_APCI3XXX_InsnBitsDigitalOutput,
02461                         i_APCI3XXX_InsnReadDigitalOutput,
02462                         NULL,
02463                         NULL,
02464                         NULL,
02465                         NULL,
02466                         NULL,
02467                         NULL,
02468                 NULL},
02469 
02470         {"apci3500",
02471                         0x15B8,
02472                         0x3024,
02473                         256,
02474                         256,
02475                         256,
02476                         256,
02477                         ADDIDATA_NO_EEPROM,
02478                         ADDIDATA_9054,
02479                         0,
02480                         0,
02481                         0,
02482                         4,
02483                         0,
02484                         4095,
02485                         NULL,
02486                         &range_apci3XXX_ao,
02487                         0,
02488                         0,
02489                         0,
02490                         24,
02491                         &range_apci3XXX_ttl,
02492                         0,
02493                         0,
02494                         0,
02495                         0,
02496                         0,
02497                         v_APCI3XXX_Interrupt,
02498                         i_APCI3XXX_Reset,
02499                         NULL,
02500                         NULL,
02501                         NULL,
02502                         NULL,
02503                         NULL,
02504                         NULL,
02505                         NULL,
02506                         NULL,
02507                         i_APCI3XXX_InsnWriteAnalogOutput,
02508                         NULL,
02509                         NULL,
02510                         NULL,
02511                         NULL,
02512                         NULL,
02513                         NULL,
02514                         NULL,
02515                         NULL,
02516                         NULL,
02517                         NULL,
02518                         NULL,
02519                         NULL,
02520                         NULL,
02521                         i_APCI3XXX_InsnConfigInitTTLIO,
02522                         i_APCI3XXX_InsnBitsTTLIO,
02523                         i_APCI3XXX_InsnReadTTLIO,
02524                 i_APCI3XXX_InsnWriteTTLIO},
02525 #endif
02526 };
02527 
02528 #define n_boardtypes (sizeof(boardtypes)/sizeof(boardtype))
02529 
02530 comedi_driver driver_addi = {
02531       driver_name:"addi_common",
02532       module:THIS_MODULE,
02533       attach:i_ADDI_Attach,
02534       detach:i_ADDI_Detach,
02535       num_names:n_boardtypes,
02536       board_name:&boardtypes[0].pc_DriverName,
02537       offset:sizeof(boardtype),
02538 };
02539 
02540 COMEDI_PCI_INITCLEANUP(driver_addi, addi_apci_tbl);
02541 
02542 /*
02543 +----------------------------------------------------------------------------+
02544 | Function name     :static int i_ADDI_Attach(comedi_device *dev,            |
02545 |                                                                               comedi_devconfig *it)        |
02546 |                                                                                                                |
02547 +----------------------------------------------------------------------------+
02548 | Task              :Detects the card.                                       |
02549 |                        Configure the driver for a particular board.            |
02550 |                        This function does all the initializations and memory   |
02551 |                        allocation of data structures for the driver.           |
02552 +----------------------------------------------------------------------------+
02553 | Input Parameters  :comedi_device *dev                                                                          |
02554 |                    comedi_devconfig *it                                                                        |
02555 |                                                                                                |
02556 +----------------------------------------------------------------------------+
02557 | Return Value      :  0                                                                     |
02558 |                                                                                                                            |
02559 +----------------------------------------------------------------------------+
02560 */
02561 
02562 static int i_ADDI_Attach(comedi_device * dev, comedi_devconfig * it)
02563 {
02564         comedi_subdevice *s;
02565         int ret, pages, i, n_subdevices;
02566         DWORD dw_Dummy;
02567         resource_size_t io_addr[5];
02568         unsigned int irq;
02569         resource_size_t iobase_a, iobase_main, iobase_addon, iobase_reserved;
02570         struct pcilst_struct *card = NULL;
02571         unsigned char pci_bus, pci_slot, pci_func;
02572         int i_Dma = 0;
02573         static char c_Identifier[150];
02574 
02575         sprintf(c_Identifier, "Addi-Data GmbH Comedi %s",
02576                 this_board->pc_DriverName);
02577 
02578         if ((ret = alloc_private(dev, sizeof(addi_private))) < 0) {
02579                 return -ENOMEM;
02580         }
02581 
02582         if (!pci_list_builded) {
02583                 v_pci_card_list_init(this_board->i_VendorId, 1);        //1 for displaying the list..
02584                 pci_list_builded = 1;
02585         }
02586         //rt_printk("comedi%d: addi_common: board=%s",dev->minor,this_board->pc_DriverName);
02587 
02588         if ((this_board->i_Dma) && (it->options[2] == 0)) {
02589                 i_Dma = 1;
02590         }
02591 
02592         if ((card = ptr_select_and_alloc_pci_card(this_board->i_VendorId,
02593                                 this_board->i_DeviceId,
02594                                 it->options[0],
02595                                 it->options[1], i_Dma)) == NULL) {
02596                 return -EIO;
02597         }
02598         devpriv->allocated = 1;
02599 
02600         if ((i_pci_card_data(card, &pci_bus, &pci_slot, &pci_func, &io_addr[0],
02601                                 &irq)) < 0) {
02602                 i_pci_card_free(card);
02603                 printk(" - Can't get AMCC data!\n");
02604                 return -EIO;
02605         }
02606 
02607         iobase_a = io_addr[0];
02608         iobase_main = io_addr[1];
02609         iobase_addon = io_addr[2];
02610         iobase_reserved = io_addr[3];
02611         printk("\nBus %d: Slot %d: Funct%d\nBase0: 0x%8llx\nBase1: 0x%8llx\nBase2: 0x%8llx\nBase3: 0x%8llx\n", pci_bus, pci_slot, pci_func, (unsigned long long)io_addr[0], (unsigned long long)io_addr[1], (unsigned long long)io_addr[2], (unsigned long long)io_addr[3]);
02612 
02613         if ((this_board->pc_EepromChip == NULL)
02614                 || (strcmp(this_board->pc_EepromChip, ADDIDATA_9054) != 0)) {
02615            /************************************/
02616                 /* Test if more that 1 address used */
02617            /************************************/
02618 
02619                 if (this_board->i_IorangeBase1 != 0) {
02620                         dev->iobase = (unsigned long)iobase_main;       // DAQ base address...
02621                 } else {
02622                         dev->iobase = (unsigned long)iobase_a;  // DAQ base address...
02623                 }
02624 
02625                 dev->board_name = this_board->pc_DriverName;
02626                 devpriv->amcc = card;
02627                 devpriv->iobase = (INT) dev->iobase;
02628                 devpriv->i_IobaseAmcc = (INT) iobase_a; //AMCC base address...
02629                 devpriv->i_IobaseAddon = (INT) iobase_addon;    //ADD ON base address....
02630                 devpriv->i_IobaseReserved = (INT) iobase_reserved;
02631                 devpriv->ps_BoardInfo = this_board;
02632         } else {
02633                 dev->board_name = this_board->pc_DriverName;
02634                 dev->iobase = (unsigned long)io_addr[2];
02635                 devpriv->amcc = card;
02636                 devpriv->iobase = (INT) io_addr[2];
02637                 devpriv->ps_BoardInfo = this_board;
02638                 devpriv->i_IobaseReserved = (INT) io_addr[3];
02639                 printk("\nioremap begin");
02640                 devpriv->dw_AiBase =
02641                         (ULONG_PTR) ioremap(io_addr[3],
02642                         this_board->i_IorangeBase3);
02643                 printk("\nioremap end");
02644         }
02645 
02646         //##
02647 
02648         if (irq > 0) {
02649                 if (comedi_request_irq(irq, v_ADDI_Interrupt, IRQF_SHARED,
02650                                 c_Identifier, dev) < 0) {
02651                         printk(", unable to allocate IRQ %u, DISABLING IT",
02652                                 irq);
02653                         irq = 0;        /* Can't use IRQ */
02654                 } else {
02655                         rt_printk("\nirq=%u", irq);
02656                 }
02657         } else {
02658                 rt_printk(", IRQ disabled");
02659         }
02660 
02661         printk("\nOption %d %d %d\n", it->options[0], it->options[1],
02662                 it->options[2]);
02663         dev->irq = irq;
02664 
02665         // Read eepeom and fill boardtype Structure
02666 
02667         if (this_board->i_PCIEeprom) {
02668                 printk("\nPCI Eeprom used");
02669                 if (!(strcmp(this_board->pc_EepromChip, "S5920"))) {
02670                         // Set 3 wait stait
02671                         if (!(strcmp(this_board->pc_DriverName, "apci035"))) {
02672                                 outl(0x80808082, devpriv->i_IobaseAmcc + 0x60);
02673                         } else {
02674                                 outl(0x83838383, devpriv->i_IobaseAmcc + 0x60);
02675                         }
02676                         // Enable the interrupt for the controler
02677                         dw_Dummy = inl(devpriv->i_IobaseAmcc + 0x38);
02678                         outl(dw_Dummy | 0x2000, devpriv->i_IobaseAmcc + 0x38);
02679                         printk("\nEnable the interrupt for the controler");
02680                 }
02681                 printk("\nRead Eeprom");
02682                 i_EepromReadMainHeader(io_addr[0], this_board->pc_EepromChip,
02683                         dev);
02684         } else {
02685                 printk("\nPCI Eeprom unused");
02686         }
02687 
02688         if (it->options[2] > 0) {
02689                 devpriv->us_UseDma = ADDI_DISABLE;
02690         } else {
02691                 devpriv->us_UseDma = ADDI_ENABLE;
02692         }
02693 
02694         if (this_board->i_Dma) {
02695                 printk("\nDMA used");
02696                 if (devpriv->us_UseDma == ADDI_ENABLE) {
02697                         // alloc DMA buffers
02698                         devpriv->b_DmaDoubleBuffer = 0;
02699                         for (i = 0; i < 2; i++) {
02700                                 for (pages = 4; pages >= 0; pages--) {
02701                                         if ((devpriv->ul_DmaBufferVirtual[i] =
02702                                                         (void *)
02703                                                         __get_free_pages
02704                                                         (GFP_KERNEL, pages))) {
02705                                                 break;
02706                                         }
02707                                 }
02708                                 if (devpriv->ul_DmaBufferVirtual[i]) {
02709                                         devpriv->ui_DmaBufferPages[i] = pages;
02710                                         devpriv->ui_DmaBufferSize[i] =
02711                                                 PAGE_SIZE * pages;
02712                                         devpriv->ui_DmaBufferSamples[i] =
02713                                                 devpriv->
02714                                                 ui_DmaBufferSize[i] >> 1;
02715                                         devpriv->ul_DmaBufferHw[i] =
02716                                                 virt_to_bus((void *)devpriv->
02717                                                 ul_DmaBufferVirtual[i]);
02718                                 }
02719                         }
02720                         if (!devpriv->ul_DmaBufferVirtual[0]) {
02721                                 rt_printk
02722                                         (", Can't allocate DMA buffer, DMA disabled!");
02723                                 devpriv->us_UseDma = ADDI_DISABLE;
02724                         }
02725 
02726                         if (devpriv->ul_DmaBufferVirtual[1]) {
02727                                 devpriv->b_DmaDoubleBuffer = 1;
02728                         }
02729                 }
02730 
02731                 if ((devpriv->us_UseDma == ADDI_ENABLE)) {
02732                         rt_printk("\nDMA ENABLED\n");
02733                 } else {
02734                         printk("\nDMA DISABLED\n");
02735                 }
02736         }
02737 
02738         if (!strcmp(this_board->pc_DriverName, "apci1710")) {
02739 #ifdef CONFIG_APCI_1710
02740                 i_ADDI_AttachPCI1710(dev);
02741 
02742                 // save base address
02743                 devpriv->s_BoardInfos.ui_Address = io_addr[2];
02744 #endif
02745         } else {
02746                 //Update-0.7.57->0.7.68dev->n_subdevices = 7;
02747                 n_subdevices = 7;
02748                 if ((ret = alloc_subdevices(dev, n_subdevices)) < 0)
02749                         return ret;
02750 
02751                 // Allocate and Initialise AI Subdevice Structures
02752                 s = dev->subdevices + 0;
02753                 if ((this_board->i_NbrAiChannel)
02754                         || (this_board->i_NbrAiChannelDiff)) {
02755                         dev->read_subdev = s;
02756                         s->type = COMEDI_SUBD_AI;
02757                         s->subdev_flags =
02758                                 SDF_READABLE | SDF_RT | SDF_COMMON | SDF_GROUND
02759                                 | SDF_DIFF;
02760                         if (this_board->i_NbrAiChannel) {
02761                                 s->n_chan = this_board->i_NbrAiChannel;
02762                                 devpriv->b_SingelDiff = 0;
02763                         } else {
02764                                 s->n_chan = this_board->i_NbrAiChannelDiff;
02765                                 devpriv->b_SingelDiff = 1;
02766                         }
02767                         s->maxdata = this_board->i_AiMaxdata;
02768                         s->len_chanlist = this_board->i_AiChannelList;
02769                         s->range_table = this_board->pr_AiRangelist;
02770 
02771                         /* Set the initialisation flag */
02772                         devpriv->b_AiInitialisation = 1;
02773 
02774                         s->insn_config =
02775                                 this_board->i_hwdrv_InsnConfigAnalogInput;
02776                         s->insn_read = this_board->i_hwdrv_InsnReadAnalogInput;
02777                         s->insn_write =
02778                                 this_board->i_hwdrv_InsnWriteAnalogInput;
02779                         s->insn_bits = this_board->i_hwdrv_InsnBitsAnalogInput;
02780                         s->do_cmdtest =
02781                                 this_board->i_hwdrv_CommandTestAnalogInput;
02782                         s->do_cmd = this_board->i_hwdrv_CommandAnalogInput;
02783                         s->cancel = this_board->i_hwdrv_CancelAnalogInput;
02784 
02785                 } else {
02786                         s->type = COMEDI_SUBD_UNUSED;
02787                 }
02788 
02789                 // Allocate and Initialise AO Subdevice Structures
02790                 s = dev->subdevices + 1;
02791                 if (this_board->i_NbrAoChannel) {
02792                         s->type = COMEDI_SUBD_AO;
02793                         s->subdev_flags =
02794                                 SDF_WRITEABLE | SDF_GROUND | SDF_COMMON |
02795                                 SDF_RT;
02796                         s->n_chan = this_board->i_NbrAoChannel;
02797                         s->maxdata = this_board->i_AoMaxdata;
02798                         s->len_chanlist = this_board->i_NbrAoChannel;
02799                         s->range_table = this_board->pr_AoRangelist;
02800                         s->insn_config =
02801                                 this_board->i_hwdrv_InsnConfigAnalogOutput;
02802                         s->insn_write =
02803                                 this_board->i_hwdrv_InsnWriteAnalogOutput;
02804                 } else {
02805                         s->type = COMEDI_SUBD_UNUSED;
02806                 }
02807                 // Allocate and Initialise DI Subdevice Structures
02808                 s = dev->subdevices + 2;
02809                 if (this_board->i_NbrDiChannel) {
02810                         s->type = COMEDI_SUBD_DI;
02811                         s->subdev_flags =
02812                                 SDF_READABLE | SDF_RT | SDF_GROUND | SDF_COMMON;
02813                         s->n_chan = this_board->i_NbrDiChannel;
02814                         s->maxdata = 1;
02815                         s->len_chanlist = this_board->i_NbrDiChannel;
02816                         s->range_table = &range_digital;
02817                         s->io_bits = 0; /* all bits input */
02818                         s->insn_config =
02819                                 this_board->i_hwdrv_InsnConfigDigitalInput;
02820                         s->insn_read = this_board->i_hwdrv_InsnReadDigitalInput;
02821                         s->insn_write =
02822                                 this_board->i_hwdrv_InsnWriteDigitalInput;
02823                         s->insn_bits = this_board->i_hwdrv_InsnBitsDigitalInput;
02824                 } else {
02825                         s->type = COMEDI_SUBD_UNUSED;
02826                 }
02827                 // Allocate and Initialise DO Subdevice Structures
02828                 s = dev->subdevices + 3;
02829                 if (this_board->i_NbrDoChannel) {
02830                         s->type = COMEDI_SUBD_DO;
02831                         s->subdev_flags =
02832                                 SDF_READABLE | SDF_WRITEABLE | SDF_RT |
02833                                 SDF_GROUND | SDF_COMMON;
02834                         s->n_chan = this_board->i_NbrDoChannel;
02835                         s->maxdata = this_board->i_DoMaxdata;
02836                         s->len_chanlist = this_board->i_NbrDoChannel;
02837                         s->range_table = &range_digital;
02838                         s->io_bits = 0xf;       /* all bits output */
02839 
02840                         s->insn_config = this_board->i_hwdrv_InsnConfigDigitalOutput;   //for digital output memory..
02841                         s->insn_write =
02842                                 this_board->i_hwdrv_InsnWriteDigitalOutput;
02843                         s->insn_bits =
02844                                 this_board->i_hwdrv_InsnBitsDigitalOutput;
02845                         s->insn_read =
02846                                 this_board->i_hwdrv_InsnReadDigitalOutput;
02847                 } else {
02848                         s->type = COMEDI_SUBD_UNUSED;
02849                 }
02850 
02851                 // Allocate and Initialise Timer Subdevice Structures
02852                 s = dev->subdevices + 4;
02853                 if (this_board->i_Timer) {
02854                         s->type = COMEDI_SUBD_TIMER;
02855                         s->subdev_flags =
02856                                 SDF_WRITEABLE | SDF_RT | SDF_GROUND |
02857                                 SDF_COMMON;
02858                         s->n_chan = 1;
02859                         s->maxdata = 0;
02860                         s->len_chanlist = 1;
02861                         s->range_table = &range_digital;
02862 
02863                         s->insn_write = this_board->i_hwdrv_InsnWriteTimer;
02864                         s->insn_read = this_board->i_hwdrv_InsnReadTimer;
02865                         s->insn_config = this_board->i_hwdrv_InsnConfigTimer;
02866                         s->insn_bits = this_board->i_hwdrv_InsnBitsTimer;
02867                 } else {
02868                         s->type = COMEDI_SUBD_UNUSED;
02869                 }
02870 
02871                 // Allocate and Initialise TTL
02872                 s = dev->subdevices + 5;
02873                 if (this_board->i_NbrTTLChannel) {
02874                         s->type = COMEDI_SUBD_TTLIO;
02875                         s->subdev_flags =
02876                                 SDF_WRITEABLE | SDF_READABLE | SDF_RT |
02877                                 SDF_GROUND | SDF_COMMON;
02878                         s->n_chan = this_board->i_NbrTTLChannel;
02879                         s->maxdata = 1;
02880                         s->io_bits = 0; /* all bits input */
02881                         s->len_chanlist = this_board->i_NbrTTLChannel;
02882                         s->range_table = &range_digital;
02883                         s->insn_config = this_board->i_hwdr_ConfigInitTTLIO;
02884                         s->insn_bits = this_board->i_hwdr_ReadTTLIOBits;
02885                         s->insn_read = this_board->i_hwdr_ReadTTLIOAllPortValue;
02886                         s->insn_write = this_board->i_hwdr_WriteTTLIOChlOnOff;
02887                 } else {
02888                         s->type = COMEDI_SUBD_UNUSED;
02889                 }
02890 
02891                 /* EEPROM */
02892                 s = dev->subdevices + 6;
02893                 if (this_board->i_PCIEeprom) {
02894                         s->type = COMEDI_SUBD_MEMORY;
02895                         s->subdev_flags = SDF_READABLE | SDF_INTERNAL;
02896                         s->n_chan = 256;
02897                         s->maxdata = 0xffff;
02898                         s->insn_read = i_ADDIDATA_InsnReadEeprom;
02899                 } else {
02900                         s->type = COMEDI_SUBD_UNUSED;
02901                 }
02902         }
02903 
02904         printk("\ni_ADDI_Attach end\n");
02905         i_ADDI_Reset(dev);
02906         devpriv->b_ValidDriver = 1;
02907         return 0;
02908 }
02909 
02910 /*
02911 +----------------------------------------------------------------------------+
02912 | Function name     : static int i_ADDI_Detach(comedi_device *dev)           |
02913 |                                                                                                                |
02914 |                                                                                                |
02915 +----------------------------------------------------------------------------+
02916 | Task              : Deallocates resources of the addi_common driver        |
02917 |                         Free the DMA buffers, unregister irq.                              |
02918 |                                                                                                                |
02919 +----------------------------------------------------------------------------+
02920 | Input Parameters  : comedi_device *dev                                                                         |
02921 |                                                                                                                                |
02922 |                                                                                                |
02923 +----------------------------------------------------------------------------+
02924 | Return Value      : 0                                                                      |
02925 |                                                                                                                            |
02926 +----------------------------------------------------------------------------+
02927 */
02928 
02929 static int i_ADDI_Detach(comedi_device * dev)
02930 {
02931 
02932         if (dev->private) {
02933                 if (devpriv->b_ValidDriver) {
02934                         i_ADDI_Reset(dev);
02935                 }
02936 
02937                 if (dev->irq) {
02938                         comedi_free_irq(dev->irq, dev);
02939                 }
02940 
02941                 if ((devpriv->ps_BoardInfo->pc_EepromChip == NULL)
02942                         || (strcmp(devpriv->ps_BoardInfo->pc_EepromChip,
02943                                         ADDIDATA_9054) != 0)) {
02944                         if (devpriv->allocated) {
02945                                 i_pci_card_free(devpriv->amcc);
02946                         }
02947 
02948                         if (devpriv->ul_DmaBufferVirtual[0]) {
02949                                 free_pages((unsigned long)devpriv->
02950                                         ul_DmaBufferVirtual[0],
02951                                         devpriv->ui_DmaBufferPages[0]);
02952                         }
02953 
02954                         if (devpriv->ul_DmaBufferVirtual[1]) {
02955                                 free_pages((unsigned long)devpriv->
02956                                         ul_DmaBufferVirtual[1],
02957                                         devpriv->ui_DmaBufferPages[1]);
02958                         }
02959                 } else {
02960                         iounmap((void *)devpriv->dw_AiBase);
02961 
02962                         if (devpriv->allocated) {
02963                                 i_pci_card_free(devpriv->amcc);
02964                         }
02965                 }
02966 
02967                 if (pci_list_builded) {
02968                         //v_pci_card_list_cleanup(PCI_VENDOR_ID_AMCC);
02969                         v_pci_card_list_cleanup(this_board->i_VendorId);
02970                         pci_list_builded = 0;
02971                 }
02972         }
02973 
02974         return 0;
02975 }
02976 
02977 /*
02978 +----------------------------------------------------------------------------+
02979 | Function name     : static int i_ADDI_Reset(comedi_device *dev)                        |
02980 |                                                                                                                |
02981 +----------------------------------------------------------------------------+
02982 | Task              : Disables all interrupts, Resets digital output to low, |
02983 |                               Set all analog output to low                                             |
02984 |                                                                                                                |
02985 +----------------------------------------------------------------------------+
02986 | Input Parameters  : comedi_device *dev                                                                         |
02987 |                                                                                                                                |
02988 |                                                                                                |
02989 +----------------------------------------------------------------------------+
02990 | Return Value      : 0                                                                          |
02991 |                                                                                                                            |
02992 +----------------------------------------------------------------------------+
02993 */
02994 
02995 static int i_ADDI_Reset(comedi_device * dev)
02996 {
02997 
02998         this_board->i_hwdrv_Reset(dev);
02999         return 0;
03000 }
03001 
03002 // Interrupt function
03003 /*
03004 +----------------------------------------------------------------------------+
03005 | Function name     :                                                        |
03006 |static void v_ADDI_Interrupt(int irq, void *d  PT_REGS_ARG)                 |
03007 |                                                                                                                |
03008 +----------------------------------------------------------------------------+
03009 | Task              : Registerd interrupt routine                                                    |
03010 |                                                                                                                |
03011 +----------------------------------------------------------------------------+
03012 | Input Parameters  :   int irq                                                                                          |
03013 |                                                                                                                                |
03014 |                                                                                                |
03015 +----------------------------------------------------------------------------+
03016 | Return Value      :                                                                            |
03017 |                                                                                                                            |
03018 +----------------------------------------------------------------------------+
03019 */
03020 
03021 static irqreturn_t v_ADDI_Interrupt(int irq, void *d PT_REGS_ARG)
03022 {
03023         comedi_device *dev = d;
03024         this_board->v_hwdrv_Interrupt(irq, d);
03025         return IRQ_RETVAL(1);
03026 }
03027 
03028 // EEPROM Read Function
03029 /*
03030 +----------------------------------------------------------------------------+
03031 | Function name     :                                                        |
03032 |INT i_ADDIDATA_InsnReadEeprom(comedi_device *dev,comedi_subdevice *s,
03033                                                         comedi_insn *insn,lsampl_t *data)
03034 |                                                                                                                |
03035 +----------------------------------------------------------------------------+
03036 | Task              : Read 256 words from EEPROM                                             |
03037 |                                                                                                                |
03038 +----------------------------------------------------------------------------+
03039 | Input Parameters  :(comedi_device *dev,comedi_subdevice *s,
03040                         comedi_insn *insn,lsampl_t *data)                                                |
03041 |                                                                                                                                |
03042 |                                                                                                |
03043 +----------------------------------------------------------------------------+
03044 | Return Value      :                                                                            |
03045 |                                                                                                                            |
03046 +----------------------------------------------------------------------------+
03047 */
03048 
03049 static int i_ADDIDATA_InsnReadEeprom(comedi_device * dev, comedi_subdevice * s,
03050         comedi_insn * insn, lsampl_t * data)
03051 {
03052         WORD w_Data;
03053         WORD w_Address;
03054         w_Address = CR_CHAN(insn->chanspec);    // address to be read as 0,1,2,3...255
03055 
03056         w_Data = w_EepromReadWord(devpriv->i_IobaseAmcc,
03057                 this_board->pc_EepromChip, 0x100 + (2 * w_Address));
03058         data[0] = w_Data;
03059         //multiplied by 2 bcozinput will be like 0,1,2...255
03060         return insn->n;
03061 
03062 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines