Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
hwdrv_apci3200.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2004,2005 ADDI-DATA GmbH for the source code of this module.
3  *
4  * ADDI-DATA GmbH
5  * Dieselstrasse 3
6  * D-77833 Ottersweier
7  * Tel: +19(0)7223/9493-0
8  * Fax: +49(0)7223/9493-92
9  * http://www.addi-data.com
11  *
12  * This program is free software; you can redistribute it and/or modify it
13  * under the terms of the GNU General Public License as published by the Free
14  * Software Foundation; either version 2 of the License, or (at your option)
15  * any later version.
16  */
17 
18 /* Card Specific information */
19 #define APCI3200_BOARD_VENDOR_ID 0x15B8
20 /* #define APCI3200_ADDRESS_RANGE 264 */
21 
23 struct {
24  int i_Gain;
30  unsigned int ui_ReloadValue;
31  unsigned int ui_TimeUnitReloadVal;
36 
37 /* ANALOG INPUT RANGE */
38 static const struct comedi_lrange range_apci3200_ai = { 8, {
39  BIP_RANGE(10),
40  BIP_RANGE(5),
41  BIP_RANGE(2),
42  BIP_RANGE(1),
43  UNI_RANGE(10),
44  UNI_RANGE(5),
45  UNI_RANGE(2),
46  UNI_RANGE(1)
47  }
48 };
49 
50 static const struct comedi_lrange range_apci3300_ai = { 4, {
51  UNI_RANGE(10),
52  UNI_RANGE(5),
53  UNI_RANGE(2),
54  UNI_RANGE(1)
55  }
56 };
57 
58 /* Analog Input related Defines */
59 #define APCI3200_AI_OFFSET_GAIN 0
60 #define APCI3200_AI_SC_TEST 4
61 #define APCI3200_AI_IRQ 8
62 #define APCI3200_AI_AUTOCAL 12
63 #define APCI3200_RELOAD_CONV_TIME_VAL 32
64 #define APCI3200_CONV_TIME_TIME_BASE 36
65 #define APCI3200_RELOAD_DELAY_TIME_VAL 40
66 #define APCI3200_DELAY_TIME_TIME_BASE 44
67 #define APCI3200_AI_MODULE1 0
68 #define APCI3200_AI_MODULE2 64
69 #define APCI3200_AI_MODULE3 128
70 #define APCI3200_AI_MODULE4 192
71 #define TRUE 1
72 #define FALSE 0
73 #define APCI3200_AI_EOSIRQ 16
74 #define APCI3200_AI_EOS 20
75 #define APCI3200_AI_CHAN_ID 24
76 #define APCI3200_AI_CHAN_VAL 28
77 #define ANALOG_INPUT 0
78 #define TEMPERATURE 1
79 #define RESISTANCE 2
80 
81 #define ENABLE_EXT_TRIG 1
82 #define ENABLE_EXT_GATE 2
83 #define ENABLE_EXT_TRIG_GATE 3
84 
85 #define APCI3200_MAXVOLT 2.5
86 #define ADDIDATA_GREATER_THAN_TEST 0
87 #define ADDIDATA_LESS_THAN_TEST 1
88 
89 #define ADDIDATA_UNIPOLAR 1
90 #define ADDIDATA_BIPOLAR 2
91 
92 /* BEGIN JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values */
93 #define MAX_MODULE 4
94 /* END JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values */
95 
97  unsigned int ul_NumberOfValue;
98  unsigned int *pul_ResistanceValue;
99  unsigned int *pul_TemperatureValue;
100 };
101 
102 /* BEGIN JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values */
103 struct str_Module {
104 
105  /* Begin JK 05/08/2003 change for Linux */
106  unsigned long ul_CurrentSourceCJC;
107  unsigned long ul_CurrentSource[5];
108  /* End JK 05/08/2003 change for Linux */
109 
110  /* Begin CG 15/02/02 Rev 1.0 -> Rev 1.1 : Add Header Type 1 */
111  unsigned long ul_GainFactor[8]; /* Gain Factor */
112  unsigned int w_GainValue[10];
113  /* End CG 15/02/02 Rev 1.0 -> Rev 1.1 : Add Header Type 1 */
114 };
115 
116 /* END JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values */
117 
118 /* BEGIN JK 06.07.04: Management of sevrals boards */
120 
136  int i_Sum;
137  int i_Offset;
138  unsigned int ui_Channel_num;
139  int i_Count;
141  /* UINT ui_InterruptChannelValue[96]; //Buffer */
142  unsigned int ui_InterruptChannelValue[144]; /* Buffer */
143  unsigned char b_StructInitialized;
144  /* Begin JK 19.10.2004: APCI-3200 Driver update 0.7.57 -> 0.7.68 */
145  unsigned int ui_ScanValueArray[7 + 12]; /* 7 is the maximal number of channels */
146  /* End JK 19.10.2004: APCI-3200 Driver update 0.7.57 -> 0.7.68 */
147 
148  /* Begin JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values */
152  /* End JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values */
153 };
154 
155 /* END JK 06.07.04: Management of sevrals boards */
156 
157 /* Hardware Layer functions for Apci3200 */
158 
159 /* AI */
160 
162  struct comedi_insn *insn, unsigned int *data);
164  struct comedi_insn *insn, unsigned int *data);
166  struct comedi_subdevice *s,
167  struct comedi_insn *insn, unsigned int *data);
169  struct comedi_subdevice *s,
170  struct comedi_insn *insn, unsigned int *data);
174  struct comedi_cmd *cmd);
177  struct comedi_insn *insn, unsigned int *data);
178 /* Interrupt */
179 void v_APCI3200_Interrupt(int irq, void *d);
181 /* Reset functions */
182 int i_APCI3200_Reset(struct comedi_device *dev);
183 
184 int i_APCI3200_ReadCJCCalOffset(struct comedi_device *dev, unsigned int *data);
185 int i_APCI3200_ReadCJCValue(struct comedi_device *dev, unsigned int *data);
186 int i_APCI3200_ReadCalibrationGainValue(struct comedi_device *dev, unsigned int *data);
187 int i_APCI3200_ReadCalibrationOffsetValue(struct comedi_device *dev, unsigned int *data);
189  struct comedi_subdevice *s, struct comedi_insn *insn,
190  unsigned int *data);
191 int i_APCI3200_ReadCJCCalGain(struct comedi_device *dev, unsigned int *data);