23 #ifndef __ANALOGY_INSTRUCTION__
24 #define __ANALOGY_INSTRUCTION__
29 #define A4L_INSN_MASK_READ 0x8000000
30 #define A4L_INSN_MASK_WRITE 0x4000000
31 #define A4L_INSN_MASK_SPECIAL 0x2000000
47 #define A4L_INSN_READ (0 | A4L_INSN_MASK_READ)
51 #define A4L_INSN_WRITE (1 | A4L_INSN_MASK_WRITE)
55 #define A4L_INSN_BITS (2 | A4L_INSN_MASK_READ | \
60 #define A4L_INSN_CONFIG (3 | A4L_INSN_MASK_READ | \
65 #define A4L_INSN_GTOD (4 | A4L_INSN_MASK_READ | \
66 A4L_INSN_MASK_SPECIAL)
70 #define A4L_INSN_WAIT (5 | A4L_INSN_MASK_WRITE | \
71 A4L_INSN_MASK_SPECIAL)
75 #define A4L_INSN_INTTRIG (6 | A4L_INSN_MASK_WRITE | \
76 A4L_INSN_MASK_SPECIAL)
83 #define A4L_INSN_WAIT_MAX 100000
91 #define A4L_INSN_CONFIG_DIO_INPUT 0
92 #define A4L_INSN_CONFIG_DIO_OUTPUT 1
93 #define A4L_INSN_CONFIG_DIO_OPENDRAIN 2
94 #define A4L_INSN_CONFIG_ANALOG_TRIG 16
95 #define A4L_INSN_CONFIG_ALT_SOURCE 20
96 #define A4L_INSN_CONFIG_DIGITAL_TRIG 21
97 #define A4L_INSN_CONFIG_BLOCK_SIZE 22
98 #define A4L_INSN_CONFIG_TIMER_1 23
99 #define A4L_INSN_CONFIG_FILTER 24
100 #define A4L_INSN_CONFIG_CHANGE_NOTIFY 25
101 #define A4L_INSN_CONFIG_SERIAL_CLOCK 26
102 #define A4L_INSN_CONFIG_BIDIRECTIONAL_DATA 27
103 #define A4L_INSN_CONFIG_DIO_QUERY 28
104 #define A4L_INSN_CONFIG_PWM_OUTPUT 29
105 #define A4L_INSN_CONFIG_GET_PWM_OUTPUT 30
106 #define A4L_INSN_CONFIG_ARM 31
107 #define A4L_INSN_CONFIG_DISARM 32
108 #define A4L_INSN_CONFIG_GET_COUNTER_STATUS 33
109 #define A4L_INSN_CONFIG_RESET 34
110 #define A4L_INSN_CONFIG_GPCT_SINGLE_PULSE_GENERATOR 1001
111 #define A4L_INSN_CONFIG_GPCT_PULSE_TRAIN_GENERATOR 1002
112 #define A4L_INSN_CONFIG_GPCT_QUADRATURE_ENCODER 1003
113 #define A4L_INSN_CONFIG_SET_GATE_SRC 2001
114 #define A4L_INSN_CONFIG_GET_GATE_SRC 2002
115 #define A4L_INSN_CONFIG_SET_CLOCK_SRC 2003
116 #define A4L_INSN_CONFIG_GET_CLOCK_SRC 2004
117 #define A4L_INSN_CONFIG_SET_OTHER_SRC 2005
118 #define A4L_INSN_CONFIG_SET_COUNTER_MODE 4097
119 #define A4L_INSN_CONFIG_SET_ROUTING 4099
120 #define A4L_INSN_CONFIG_GET_ROUTING 4109
130 #define A4L_COUNTER_ARMED 0x1
131 #define A4L_COUNTER_COUNTING 0x2
132 #define A4L_COUNTER_TERMINAL_COUNT 0x4
144 #define A4L_OPENDRAIN 2
156 #define A4L_EV_START 0x00040000
157 #define A4L_EV_SCAN_BEGIN 0x00080000
158 #define A4L_EV_CONVERT 0x00100000
159 #define A4L_EV_SCAN_END 0x00200000
160 #define A4L_EV_STOP 0x00400000
198 #if defined(__KERNEL__) && !defined(DOXYGEN_CPP)
200 struct a4l_kernel_instruction {
202 unsigned int idx_subd;
203 unsigned int chan_desc;
204 unsigned int data_size;
208 typedef struct a4l_kernel_instruction a4l_kinsn_t;
210 struct a4l_kernel_instruction_list {
215 typedef struct a4l_kernel_instruction_list a4l_kilst_t;
220 int a4l_ioctl_insnlist(a4l_cxt_t * cxt,
void *arg);
221 int a4l_ioctl_insn(a4l_cxt_t * cxt,
void *arg);