107#ifndef __xpci3xxx_H__
108#define __xpci3xxx_H__
116#define xpci3xxx_BOARD_NAME "xpci3xxx"
119#define xpci3xxx_BOARD_VENDOR_ID 0x15B8
122#define xpci3002_16_BOARD_DEVICE_ID 0x3002
125#define xpci3002_8_BOARD_DEVICE_ID 0x3003
128#define xpci3002_4_BOARD_DEVICE_ID 0x3004
131#define xpci3003_BOARD_DEVICE_ID 0x300b
134#define xpci3000_16_BOARD_DEVICE_ID 0x3010
137#define xpci3000_8_BOARD_DEVICE_ID 0x3011
140#define xpci3000_4_BOARD_DEVICE_ID 0x3012
143#define xpci3006_16_BOARD_DEVICE_ID 0x3013
146#define xpci3006_8_BOARD_DEVICE_ID 0x3014
149#define xpci3006_4_BOARD_DEVICE_ID 0x3015
152#define xpci3010_16_BOARD_DEVICE_ID 0x3016
155#define xpci3010_8_BOARD_DEVICE_ID 0x3017
158#define xpci3010_4_BOARD_DEVICE_ID 0x3018
161#define xpci3016_16_BOARD_DEVICE_ID 0x3019
164#define xpci3016_8_BOARD_DEVICE_ID 0x301a
167#define xpci3016_4_BOARD_DEVICE_ID 0x301b
170#define xpci3100_16_BOARD_DEVICE_ID 0x301c
173#define xpci3100_8_BOARD_DEVICE_ID 0x301d
176#define xpci3106_16_BOARD_DEVICE_ID 0x301e
178#define xpci3106_8_BOARD_DEVICE_ID 0x301f
181#define xpci3110_16_BOARD_DEVICE_ID 0x3020
183#define xpci3110_8_BOARD_DEVICE_ID 0x3021
186#define xpci3116_16_BOARD_DEVICE_ID 0x3022
188#define xpci3116_8_BOARD_DEVICE_ID 0x3023
191#define xpci3500_BOARD_DEVICE_ID 0x3024
194#define xpci3501_BOARD_DEVICE_ID 0x3001
197#define xpci3002_16_AUDI_BOARD_DEVICE_ID 0x3029
200#define xpci3009_BOARD_DEVICE_ID 0x3028
203#define xpcie3121_16_8_BOARD_DEVICE_ID 0x302E
204#define xpcie3121_16_4_BOARD_DEVICE_ID 0x302F
205#define xpcie3121_8_8_BOARD_DEVICE_ID 0x3030
206#define xpcie3121_8_4_BOARD_DEVICE_ID 0x3031
207#define xpcie3121_16_8C_BOARD_DEVICE_ID 0x3032
208#define xpcie3121_16_4C_BOARD_DEVICE_ID 0x3033
209#define xpcie3121_8_8C_BOARD_DEVICE_ID 0x3034
210#define xpcie3121_8_4C_BOARD_DEVICE_ID 0x3035
212#define xpcie3021_16_BOARD_DEVICE_ID 0x3036
213#define xpcie3021_8_BOARD_DEVICE_ID 0x3037
214#define xpcie3021_4_BOARD_DEVICE_ID 0x3038
216#define xpcie3521_8_BOARD_DEVICE_ID 0x3039
217#define xpcie3521_4_BOARD_DEVICE_ID 0x303A
218#define xpcie3521_8C_BOARD_DEVICE_ID 0x303B
219#define xpcie3521_4C_BOARD_DEVICE_ID 0x303C
222#define xpcie3126_16_8_BOARD_DEVICE_ID 0x3040
235#ifndef CONFIG_xpci3xxx_MAX_BOARD_NBR
236#define CONFIG_xpci3xxx_MAX_BOARD_NBR (3)
240#define xpci3xxx_MAX_BOARD_NBR CONFIG_xpci3xxx_MAX_BOARD_NBR
243#define xpci3xxx_MAGIC (char) 'A'
254#define ADDIDATA_DIFFERENTIAL 1
255#define ADDIDATA_SINGLE 0
257#define ADDIDATA_ENABLE 1
258#define ADDIDATA_DISABLE 0
260#define ADDIDATA_DIGITAL_INPUT 0
261#define ADDIDATA_DIGITAL_OUTPUT 1
263#define ADDIDATA_TIMER 4
264#define ADDIDATA_WATCHDOG 5
265#define ADDIDATA_COUNTER 7
267#define ADDIDATA_ENABLE 1
268#define ADDIDATA_DISABLE 0
271#define ADDIDATA_DOWN 0
273#define ADDIDATA_LOW 1
274#define ADDIDATA_HIGH 2
275#define ADDIDATA_LOW_HIGH 3
278#define ADDIDATA_AND 2
280#define ADDIDATA_MAX_TCW 3
282#define ADDIDATA_MAX_AI 16
283#define ADDIDATA_1_GAIN 0x0
284#define ADDIDATA_2_GAIN 0x1
285#define ADDIDATA_5_GAIN 0x2
286#define ADDIDATA_10_GAIN 0x3
288#define ADDIDATA_BIPOLAR 0x0
289#define ADDIDATA_UNIPOLAR 0x1
291#define ADDIDATA_NANO_SECOND 0x0
292#define ADDIDATA_MICRO_SECOND 0x1
293#define ADDIDATA_MILLI_SECOND 0x2
294#define ADDIDATA_SECOND 0x3
296#define ADDIDATA_DELAY_MODE_1 1
297#define ADDIDATA_DELAY_MODE_2 2
298#define ADDIDATA_EOC 0x1U
349#define CMD_xpci3xxx_GetHardwareInformation _IOR(xpci3xxx_MAGIC, 1,long)
388#define CMD_xpci3xxx_TestInterrupt _IOR(xpci3xxx_MAGIC, 2,long)
410#define CMD_xpci3xxx_SetTTLPortConfiguration _IOR(xpci3xxx_MAGIC, 3,long)
419#define CMD_xpci3xxx_ReadEepromHeader_SerialNumber _IOR(xpci3xxx_MAGIC, 4,long)
428#define CMD_xpci3xxx_GetFirmwareVersion _IOR(xpci3xxx_MAGIC, 5,long)
461#define CMD_xpci3xxx_InitAnalogInput _IOR(xpci3xxx_MAGIC, 10,long)
484#define CMD_xpci3xxx_StartAnalogInput _IOR(xpci3xxx_MAGIC, 11,long)
494#define CMD_xpci3xxx_ReadAnalogInputBit _IOR(xpci3xxx_MAGIC, 12,long)
503#define CMD_xpci3xxx_ReadAnalogInputValue _IOR(xpci3xxx_MAGIC, 13,long)
577#define CMD_xpci3xxx_InitAnalogInputAutoRefresh _IOR(xpci3xxx_MAGIC, 14,long)
597#define CMD_xpci3xxx_StartAnalogInputAutoRefresh _IOR(xpci3xxx_MAGIC, 15,long)
607#define CMD_xpci3xxx_StopAnalogInputAutoRefresh _IOR(xpci3xxx_MAGIC, 16,long)
620#define CMD_xpci3xxx_ReadAnalogInputAutoRefreshValueAndCounter _IOR(xpci3xxx_MAGIC, 17,long)
634#define CMD_xpci3xxx_ReleaseAnalogInputAutoRefresh _IOR(xpci3xxx_MAGIC, 18,long)
716#define CMD_xpci3xxx_InitAnalogInputSequence _IOR(xpci3xxx_MAGIC, 20,long)
738#define CMD_xpci3xxx_StartAnalogInputSequence _IOR(xpci3xxx_MAGIC, 21,long)
750#define CMD_xpci3xxx_StopAnalogInputSequence _IOR(xpci3xxx_MAGIC, 22,long)
765#define CMD_xpci3xxx_ReleaseAnalogInputSequence _IOR(xpci3xxx_MAGIC, 23,long)
806#define CMD_xpci3xxx_EnableDisableAnalogInputHardwareTrigger _IOR(xpci3xxx_MAGIC, 40,long)
820#define CMD_xpci3xxx_GetAnalogInputHardwareTriggerStatus _IOR(xpci3xxx_MAGIC, 41,long)
848#define CMD_xpci3xxx_EnableDisableAnalogInputSoftwareTrigger _IOR(xpci3xxx_MAGIC, 42,long)
858#define CMD_xpci3xxx_AnalogInputSoftwareTrigger _IOR(xpci3xxx_MAGIC, 43,long)
869#define CMD_xpci3xxx_GetAnalogInputSoftwareTriggerStatus _IOR(xpci3xxx_MAGIC, 44,long)
889#define CMD_xpci3xxx_EnableDisableAnalogInputHardwareGate _IOR(xpci3xxx_MAGIC, 45,long)
900#define CMD_xpci3xxx_GetAnalogInputHardwareGateStatus _IOR(xpci3xxx_MAGIC, 46,long)
923#define CMD_xpci3xxx_InitAnalogOutput _IOR(xpci3xxx_MAGIC, 50,long)
935#define CMD_xpci3xxx_ReadAnalogOutputBit _IOR(xpci3xxx_MAGIC, 51,long)
949#define CMD_xpci3xxx_WriteAnalogOutputValue _IOR(xpci3xxx_MAGIC, 52,long)
974#define CMD_xpci3xxx_Read32DigitalInputs _IOR(xpci3xxx_MAGIC, 60,long)
991#define CMD_xpci3xxx_InitDigitalInputModuleFilter _IOR(xpci3xxx_MAGIC, 61,long)
1008#define CMD_xpci3xxx_SetDigitalOutputMemoryOn _IOR(xpci3xxx_MAGIC, 72,long)
1020#define CMD_xpci3xxx_SetDigitalOutputMemoryOff _IOR(xpci3xxx_MAGIC, 73,long)
1042#define CMD_xpci3xxx_Set32DigitalOutputsOn _IOR(xpci3xxx_MAGIC, 70,long)
1066#define CMD_xpci3xxx_Set32DigitalOutputsOff _IOR(xpci3xxx_MAGIC, 71,long)
1082#define CMD_xpci3xxx_Get32DigitalOutputStatus _IOR(xpci3xxx_MAGIC, 74,long)
1159#define CMD_xpci3xxx_InitTimer _IOR(xpci3xxx_MAGIC, 80,long)
1176#define CMD_xpci3xxx_ReleaseTimer _IOR(xpci3xxx_MAGIC, 81,long)
1190#define CMD_xpci3xxx_StartTimer _IOR(xpci3xxx_MAGIC, 82,long)
1200#define CMD_xpci3xxx_StartAllTimers _IOR(xpci3xxx_MAGIC, 83,long)
1214#define CMD_xpci3xxx_TriggerTimer _IOR(xpci3xxx_MAGIC, 84,long)
1224#define CMD_xpci3xxx_TriggerAllTimers _IOR(xpci3xxx_MAGIC, 85,long)
1238#define CMD_xpci3xxx_StopTimer _IOR(xpci3xxx_MAGIC, 86,long)
1249#define CMD_xpci3xxx_StopAllTimers _IOR(xpci3xxx_MAGIC, 87,long)
1267#define CMD_xpci3xxx_ReadTimerValue _IOR(xpci3xxx_MAGIC, 88,long)
1289#define CMD_xpci3xxx_ReadTimerStatus _IOR(xpci3xxx_MAGIC, 89,long)
1309#define CMD_xpci3xxx_EnableDisableTimerInterrupt _IOR(xpci3xxx_MAGIC, 90,long)
1331#define CMD_xpci3xxx_EnableDisableTimerHardwareOutput _IOR(xpci3xxx_MAGIC, 91,long)
1348#define CMD_xpci3xxx_GetTimerHardwareOutputStatus _IOR(xpci3xxx_MAGIC, 92,long)
1377#define CMD_xpci3xxx_InitCounter _IOR(xpci3xxx_MAGIC, 100,long)
1395#define CMD_xpci3xxx_ReleaseCounter _IOR(xpci3xxx_MAGIC, 101,long)
1408#define CMD_xpci3xxx_StartCounter _IOR(xpci3xxx_MAGIC, 102,long)
1417#define CMD_xpci3xxx_StartAllCounters _IOR(xpci3xxx_MAGIC, 103,long)
1431#define CMD_xpci3xxx_TriggerCounter _IOR(xpci3xxx_MAGIC, 104,long)
1440#define CMD_xpci3xxx_TriggerAllCounters _IOR(xpci3xxx_MAGIC, 105,long)
1453#define CMD_xpci3xxx_StopCounter _IOR(xpci3xxx_MAGIC, 106,long)
1462#define CMD_xpci3xxx_StopAllCounters _IOR(xpci3xxx_MAGIC, 107,long)
1476#define CMD_xpci3xxx_ClearCounter _IOR(xpci3xxx_MAGIC, 108,long)
1492#define CMD_xpci3xxx_ReadCounterValue _IOR(xpci3xxx_MAGIC, 109,long)
1512#define CMD_xpci3xxx_ReadCounterStatus _IOR(xpci3xxx_MAGIC, 110,long)
1530#define CMD_xpci3xxx_EnableDisableCounterInterrupt _IOR(xpci3xxx_MAGIC, 111,long)
1551#define CMD_xpci3xxx_EnableDisableCounterHardwareOutput _IOR(xpci3xxx_MAGIC, 112,long)
1567#define CMD_xpci3xxx_GetCounterHardwareOutputStatus _IOR(xpci3xxx_MAGIC, 113,long)
1590#define CMD_xpci3xxx_InitWatchdog _IOR(xpci3xxx_MAGIC, 120,long)
1603#define CMD_xpci3xxx_ReleaseWatchdog _IOR(xpci3xxx_MAGIC, 121,long)
1616#define CMD_xpci3xxx_StartWatchdog _IOR(xpci3xxx_MAGIC, 122,long)
1626#define CMD_xpci3xxx_StartAllWatchdogs _IOR(xpci3xxx_MAGIC, 123,long)
1639#define CMD_xpci3xxx_TriggerWatchdog _IOR(xpci3xxx_MAGIC, 124,long)
1648#define CMD_xpci3xxx_TriggerAllWatchdogs _IOR(xpci3xxx_MAGIC, 125,long)
1662#define CMD_xpci3xxx_StopWatchdog _IOR(xpci3xxx_MAGIC, 126,long)
1671#define CMD_xpci3xxx_StopAllWatchdogs _IOR(xpci3xxx_MAGIC, 127,long)
1689#define CMD_xpci3xxx_ReadWatchdogStatus _IOR(xpci3xxx_MAGIC, 128,long)
1705#define CMD_xpci3xxx_ReadWatchdogValue _IOR(xpci3xxx_MAGIC, 129,long)
1724#define CMD_xpci3xxx_EnableDisableWatchdogInterrupt _IOR(xpci3xxx_MAGIC, 130,long)
1744#define CMD_xpci3xxx_EnableDisableWatchdogHardwareOutput _IOR(xpci3xxx_MAGIC, 131,long)
1760#define CMD_xpci3xxx_GetWatchdogHardwareOutputStatus _IOR(xpci3xxx_MAGIC, 132,long)
1767#define __xpci3xxx_UPPER_IOCTL_CMD 132
1773#define ANALOG_SEQUENCE_START_BITMASK 0x0000000F
1775#define ANALOG_SEQUENCE_STOP_BITMASK 0x00000F00
1777#define ADDIDATA_TRIGGER_START_A_SINGLE_CONVERSION 0
1778#define ADDIDATA_ONE_SHOT_TRIGGER 1
1779#define ADDIDATA_TRIGGER_START_A_SEQUENCE_SERIES 2
1780#define ADDIDATA_TRIGGER_START_A_SINGLE_SEQUENCE 3
1781#define ADDIDATA_TRIGGER_START_A_SCAN_SERIES 6
1782#define ADDIDATA_TRIGGER_START_A_SINGLE_SCAN 7
1783#define ADDIDATA_TRIGGER_START_A_AUTO_REFRESH_SERIES 10
1784#define ADDIDATA_TRIGGER_START_A_SINGLE_AUTO_REFRESH 11
1786#define ADDIDATA_MAX_INTERRUPT_ANALOG_INPUT_VALUE 100
1791#define ADDIDATA_MAX_EVENT_COUNTER 256