📄 addi_common.c
字号:
/**@verbatimCopyright (C) 2004,2005 ADDI-DATA GmbH for the source code of this module. ADDI-DATA GmbH Dieselstrasse 3 D-77833 Ottersweier Tel: +19(0)7223/9493-0 Fax: +49(0)7223/9493-92 http://www.addi-data-com info@addi-data.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAYou shoud also find the complete GPL in the COPYING file accompanying this source code.@endverbatim*//* +-----------------------------------------------------------------------+ | (C) ADDI-DATA GmbH Dieselstrasse 3 D-77833 Ottersweier | +-----------------------------------------------------------------------+ | Tel : +49 (0) 7223/9493-0 | email : info@addi-data.com | | Fax : +49 (0) 7223/9493-92 | Internet : http://www.addi-data.com | +-----------------------------------------------------------------------+ | Project : ADDI DATA | Compiler : GCC | | Modulname : addi_common.c | Version : 2.96 | +-------------------------------+---------------------------------------+ | Author : | Date : | +-----------------------------------------------------------------------+ | Description : ADDI COMMON Main Module | +-----------------------------------------------------------------------+ | CONFIG OPTIONS | | option[0] - PCI bus number - if bus number and slot number are 0, | | then driver search for first unused card | | option[1] - PCI slot number | | | | option[2] = 0 - DMA ENABLE | | = 1 - DMA DISABLE | +----------+-----------+------------------------------------------------+*/ #include<linux/kernel.h>#include<linux/module.h>#include<linux/sched.h>#include<linux/mm.h>#include<linux/slab.h>#include<linux/errno.h>#include<linux/ioport.h>#include<linux/delay.h>#include<linux/interrupt.h>#include<linux/timex.h>#include<linux/timer.h>#include<linux/pci.h>#include<linux/comedidev.h>#include<asm/io.h>#include<asm/i387.h>#include "../comedi_fc.h"#include "addi_common.h"#include "addi_amcc_s5933.h"//Update-0.7.57->0.7.68MODULE_AUTHOR("ADDI-DATA GmbH <info@addi-data.com>");//Update-0.7.57->0.7.68MODULE_DESCRIPTION("Comedi ADDI-DATA module");//Update-0.7.57->0.7.68MODULE_LICENSE("GPL");#define devpriv ((addi_private *)dev->private)#define this_board ((boardtype *)dev->board_ptr)//BYTE b_SaveFPUReg [94];void fpu_begin (void) { //asm ("fstenv b_SaveFPUReg"); kernel_fpu_begin (); }void fpu_end (void) { // asm ("frstor b_SaveFPUReg"); kernel_fpu_end (); }#include "addi_eeprom.c"#include "hwdrv_apci3120.c"#include "hwdrv_apci1032.c"#include "hwdrv_apci1516.c"#include "hwdrv_apci2016.c"#include "hwdrv_apci2032.c"#include "hwdrv_apci2200.c"#include "hwdrv_apci1564.c"#include "hwdrv_apci1500.c"#include "hwdrv_apci3501.c"#include "hwdrv_apci035.c"#include "hwdrv_apci3200.c" #include "hwdrv_APCI1710.c"#include "hwdrv_apci16xx.c"#include "hwdrv_apci3xxx.c"static boardtype boardtypes[] ={ {"apci3120", APCI3120_BOARD_VENDOR_ID, 0x818D, AMCC_OP_REG_SIZE, APCI3120_ADDRESS_RANGE, 8, 0, ADDIDATA_NO_EEPROM, NULL, 16, 8, 16, 8, 0xffff, 0x3fff, &range_apci3120_ai, &range_apci3120_ao, 4, 4, 0x0f, 0, NULL, 1, 1, 1, 10000, 100000, v_APCI3120_Interrupt, i_APCI3120_Reset, i_APCI3120_InsnConfigAnalogInput, i_APCI3120_InsnReadAnalogInput, NULL, NULL, i_APCI3120_CommandTestAnalogInput, i_APCI3120_CommandAnalogInput, i_APCI3120_StopCyclicAcquisition, NULL, i_APCI3120_InsnWriteAnalogOutput, NULL, NULL, i_APCI3120_InsnReadDigitalInput, NULL, i_APCI3120_InsnBitsDigitalInput, i_APCI3120_InsnConfigDigitalOutput, i_APCI3120_InsnWriteDigitalOutput, i_APCI3120_InsnBitsDigitalOutput, NULL, i_APCI3120_InsnConfigTimer, i_APCI3120_InsnWriteTimer, i_APCI3120_InsnReadTimer, NULL, NULL, NULL, NULL, NULL }, {"apci1032", APCI1032_BOARD_VENDOR_ID, 0x1003, 4, APCI1032_ADDRESS_RANGE, 0, 0, ADDIDATA_EEPROM, ADDIDATA_93C76, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, NULL, 0, 0, 0, 0, 0, v_APCI1032_Interrupt, i_APCI1032_Reset, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, i_APCI1032_ConfigDigitalInput, i_APCI1032_Read1DigitalInput, NULL, i_APCI1032_ReadMoreDigitalInput, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, {"apci1516", APCI1516_BOARD_VENDOR_ID, 0x1001, 128, APCI1516_ADDRESS_RANGE, 32, 0, ADDIDATA_EEPROM, ADDIDATA_S5920, 0, 0, 0, 0, 0, 0, NULL, NULL, 8, 8, 0, 0, NULL, 0, 1, 0, 0, 0, NULL, i_APCI1516_Reset, NULL,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, i_APCI1516_Read1DigitalInput, NULL, i_APCI1516_ReadMoreDigitalInput, i_APCI1516_ConfigDigitalOutput, i_APCI1516_WriteDigitalOutput, i_APCI1516_ReadDigitalOutput, NULL, i_APCI1516_ConfigWatchdog, i_APCI1516_StartStopWriteWatchdog, i_APCI1516_ReadWatchdog, NULL, NULL, NULL, NULL, NULL }, {"apci2016", APCI2016_BOARD_VENDOR_ID, 0x1002, 128, APCI2016_ADDRESS_RANGE, 32, 0, ADDIDATA_EEPROM, ADDIDATA_S5920, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 16, 0, 0, NULL, 0, 1, 0, 0, 0, NULL, i_APCI2016_Reset, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, i_APCI2016_ConfigDigitalOutput, i_APCI2016_WriteDigitalOutput, i_APCI2016_BitsDigitalOutput, NULL, i_APCI2016_ConfigWatchdog, i_APCI2016_StartStopWriteWatchdog, i_APCI2016_ReadWatchdog, NULL, NULL, NULL, NULL, NULL }, {"apci2032", APCI2032_BOARD_VENDOR_ID, 0x1004, 4, APCI2032_ADDRESS_RANGE, 0, 0, ADDIDATA_EEPROM, ADDIDATA_93C76, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 32, 0xffffffff, 0, NULL, 0, 1, 0, 0, 0, v_APCI2032_Interrupt, i_APCI2032_Reset, NULL,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, i_APCI2032_ConfigDigitalOutput, i_APCI2032_WriteDigitalOutput, i_APCI2032_ReadDigitalOutput, i_APCI2032_ReadInterruptStatus, i_APCI2032_ConfigWatchdog, i_APCI2032_StartStopWriteWatchdog, i_APCI2032_ReadWatchdog, NULL, NULL, NULL, NULL, NULL }, {"apci2200", APCI2200_BOARD_VENDOR_ID, 0x1005, 4, APCI2200_ADDRESS_RANGE, 0, 0, ADDIDATA_EEPROM, ADDIDATA_93C76, 0, 0, 0, 0, 0, 0, NULL, NULL, 8, 16, 0, 0, NULL, 0, 1, 0, 0, 0, NULL, i_APCI2200_Reset, NULL,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, i_APCI2200_Read1DigitalInput, NULL, i_APCI2200_ReadMoreDigitalInput, i_APCI2200_ConfigDigitalOutput, i_APCI2200_WriteDigitalOutput, i_APCI2200_ReadDigitalOutput, NULL, i_APCI2200_ConfigWatchdog, i_APCI2200_StartStopWriteWatchdog, i_APCI2200_ReadWatchdog, NULL, NULL, NULL, NULL, NULL }, {"apci1564", APCI1564_BOARD_VENDOR_ID, 0x1006, 128, APCI1564_ADDRESS_RANGE, 0, 0, ADDIDATA_EEPROM, ADDIDATA_93C76, 0, 0, 0, 0, 0, 0, NULL, NULL, 32, 32, 0xffffffff, 0, NULL, 0, 1, 0, 0, 0, v_APCI1564_Interrupt, i_APCI1564_Reset, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, i_APCI1564_ConfigDigitalInput, i_APCI1564_Read1DigitalInput, NULL, i_APCI1564_ReadMoreDigitalInput, i_APCI1564_ConfigDigitalOutput, i_APCI1564_WriteDigitalOutput, i_APCI1564_ReadDigitalOutput, i_APCI1564_ReadInterruptStatus, i_APCI1564_ConfigTimerCounterWatchdog, i_APCI1564_StartStopWriteTimerCounterWatchdog, i_APCI1564_ReadTimerCounterWatchdog, NULL, NULL, NULL, NULL, NULL }, {"apci1500", APCI1500_BOARD_VENDOR_ID, 0x80fc, 128, APCI1500_ADDRESS_RANGE, 4, 0, ADDIDATA_NO_EEPROM, NULL, 0, 0, 0, 0, 0, 0, NULL, NULL, 16, 16, 0xffff, 0, NULL, 0, 1, 0, 0, 0, v_APCI1500_Interrupt, i_APCI1500_Reset, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, i_APCI1500_ConfigDigitalInputEvent, i_APCI1500_Initialisation, i_APCI1500_StartStopInputEvent, i_APCI1500_ReadMoreDigitalInput, i_APCI1500_ConfigDigitalOutputErrorInterrupt, i_APCI1500_WriteDigitalOutput, i_APCI1500_ConfigureInterrupt, NULL, i_APCI1500_ConfigCounterTimerWatchdog, i_APCI1500_StartStopTriggerTimerCounterWatchdog, i_APCI1500_ReadInterruptMask, i_APCI1500_ReadCounterTimerWatchdog, NULL, NULL, NULL, NULL }, {"apci3001", APCI3120_BOARD_VENDOR_ID, 0x828D, AMCC_OP_REG_SIZE, APCI3120_ADDRESS_RANGE, 8, 0, ADDIDATA_NO_EEPROM, NULL, 16, 8, 16, 0, 0xfff, 0, &range_apci3120_ai, NULL, 4, 4, 0x0f, 0, NULL, 1, 1, 1, 10000, 100000, v_APCI3120_Interrupt, i_APCI3120_Reset, i_APCI3120_InsnConfigAnalogInput, i_APCI3120_InsnReadAnalogInput, NULL, NULL, i_APCI3120_CommandTestAnalogInput, i_APCI3120_CommandAnalogInput, i_APCI3120_StopCyclicAcquisition, NULL, NULL, NULL, NULL, i_APCI3120_InsnReadDigitalInput, NULL, i_APCI3120_InsnBitsDigitalInput, i_APCI3120_InsnConfigDigitalOutput, i_APCI3120_InsnWriteDigitalOutput, i_APCI3120_InsnBitsDigitalOutput, NULL, i_APCI3120_InsnConfigTimer, i_APCI3120_InsnWriteTimer,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -