00001
00023 #ifndef __ANALOGY_CMD__
00024 #define __ANALOGY_CMD__
00025
00026 #include <analogy/context.h>
00027
00042 #define A4L_CMD_SIMUL 0x1
00043
00046 #define A4L_CMD_BULK 0x2
00047
00050 #define A4L_CMD_WRITE 0x4
00051
00063 #define TRIG_NONE 0x00000001
00064
00067 #define TRIG_NOW 0x00000002
00068
00071 #define TRIG_FOLLOW 0x00000004
00072
00075 #define TRIG_TIME 0x00000008
00076
00079 #define TRIG_TIMER 0x00000010
00080
00083 #define TRIG_COUNT 0x00000020
00084
00087 #define TRIG_EXT 0x00000040
00088
00091 #define TRIG_INT 0x00000080
00092
00095 #define TRIG_OTHER 0x00000100
00096
00099 #define TRIG_WAKE_EOS 0x0020
00100
00103 #define TRIG_ROUND_MASK 0x00030000
00104
00107 #define TRIG_ROUND_NEAREST 0x00000000
00108
00111 #define TRIG_ROUND_DOWN 0x00010000
00112
00115 #define TRIG_ROUND_UP 0x00020000
00116
00119 #define TRIG_ROUND_UP_NEXT 0x00030000
00120
00133 #define CHAN(a) ((a) & 0xffff)
00134
00137 #define RNG(a) (((a) & 0xff) << 16)
00138
00141 #define AREF(a) (((a) & 0xf) << 24)
00142
00145 #define FLAGS(a) ((a) & CR_FLAGS_MASK)
00146
00149 #define PACK(a, b, c) (CHAN(a) | RNG(b) | AREF(c))
00150
00153 #define PACK_FLAGS(a, b, c, d) (CHAN(a) | RNG(b) | AREF(c) | FLAGS(d))
00154
00158 #define AREF_GROUND 0x00
00159
00162 #define AREF_COMMON 0x01
00163
00166 #define AREF_DIFF 0x02
00167
00170 #define AREF_OTHER 0x03
00171
00174 #if defined(__KERNEL__) && !defined(DOXYGEN_CPP)
00175
00176 #define CR_CHAN(a) CHAN(a)
00177 #define CR_RNG(a) (((a)>>16)&0xff)
00178 #define CR_AREF(a) (((a)>>24)&0xf)
00179 #define CR_FLAGS_MASK 0xfc000000
00180 #define CR_ALT_FILTER (1<<26)
00181 #define CR_DITHER CR_ALT_FILTER
00182 #define CR_DEGLITCH CR_ALT_FILTER
00183 #define CR_ALT_SOURCE (1<<27)
00184 #define CR_EDGE (1<<28)
00185 #define CR_INVERT (1<<29)
00186 #endif
00187
00193 struct a4l_cmd_desc {
00194 unsigned char idx_subd;
00197 unsigned long flags;
00200
00201 unsigned int start_src;
00203 unsigned int start_arg;
00205 unsigned int scan_begin_src;
00207 unsigned int scan_begin_arg;
00209 unsigned int convert_src;
00211 unsigned int convert_arg;
00213 unsigned int scan_end_src;
00215 unsigned int scan_end_arg;
00217 unsigned int stop_src;
00219 unsigned int stop_arg;
00222 unsigned char nb_chan;
00224 unsigned int *chan_descs;
00227
00228 unsigned int data_len;
00230 sampl_t *data;
00232 };
00233 typedef struct a4l_cmd_desc a4l_cmd_t;
00234
00237 #if defined(__KERNEL__) && !defined(DOXYGEN_CPP)
00238
00239
00240 void a4l_free_cmddesc(a4l_cmd_t * desc);
00241
00242
00243 int a4l_check_cmddesc(a4l_cxt_t * cxt, a4l_cmd_t * desc);
00244 int a4l_ioctl_cmd(a4l_cxt_t * cxt, void *arg);
00245
00246 #endif
00247
00248 #endif