23 #ifndef __ANALOGY_SUBDEVICE__
24 #define __ANALOGY_SUBDEVICE__
27 #include <linux/list.h>
42 #define A4L_SUBD_MASK_READ 0x80000000
43 #define A4L_SUBD_MASK_WRITE 0x40000000
44 #define A4L_SUBD_MASK_SPECIAL 0x20000000
60 #define A4L_SUBD_UNUSED (A4L_SUBD_MASK_SPECIAL|0x1)
64 #define A4L_SUBD_AI (A4L_SUBD_MASK_READ|0x2)
68 #define A4L_SUBD_AO (A4L_SUBD_MASK_WRITE|0x4)
72 #define A4L_SUBD_DI (A4L_SUBD_MASK_READ|0x8)
76 #define A4L_SUBD_DO (A4L_SUBD_MASK_WRITE|0x10)
80 #define A4L_SUBD_DIO (A4L_SUBD_MASK_SPECIAL|0x20)
84 #define A4L_SUBD_COUNTER (A4L_SUBD_MASK_SPECIAL|0x40)
88 #define A4L_SUBD_TIMER (A4L_SUBD_MASK_SPECIAL|0x80)
92 #define A4L_SUBD_MEMORY (A4L_SUBD_MASK_SPECIAL|0x100)
96 #define A4L_SUBD_CALIB (A4L_SUBD_MASK_SPECIAL|0x200)
100 #define A4L_SUBD_PROC (A4L_SUBD_MASK_SPECIAL|0x400)
104 #define A4L_SUBD_SERIAL (A4L_SUBD_MASK_SPECIAL|0x800)
108 #define A4L_SUBD_TYPES (A4L_SUBD_UNUSED | \
134 #define A4L_SUBD_CMD 0x1000
140 #define A4L_SUBD_MMAP 0x8000
155 #define A4L_SUBD_BUSY_NR 0
156 #define A4L_SUBD_BUSY (1 << A4L_SUBD_BUSY_NR)
162 #define A4L_SUBD_CLEAN_NR 1
163 #define A4L_SUBD_CLEAN (1 << A4L_SUBD_CLEAN_NR)
242 struct a4l_subd_info {
244 unsigned long status;
245 unsigned char nb_chan;
247 typedef struct a4l_subd_info a4l_sbinfo_t;
250 struct a4l_chan_info {
251 unsigned long chan_flags;
252 unsigned char nb_rng;
253 unsigned char nb_bits;
255 typedef struct a4l_chan_info a4l_chinfo_t;
257 struct a4l_chinfo_arg {
258 unsigned int idx_subd;
261 typedef struct a4l_chinfo_arg a4l_chinfo_arg_t;
264 struct a4l_rng_info {
269 typedef struct a4l_rng_info a4l_rnginfo_t;
271 struct a4l_rng_info_arg {
272 unsigned int idx_subd;
273 unsigned int idx_chan;
276 typedef struct a4l_rng_info_arg a4l_rnginfo_arg_t;
285 unsigned char nb_chan,
unsigned int *chans);
287 #define a4l_subd_is_input(x) ((A4L_SUBD_MASK_READ & (x)->flags) != 0)
290 #define a4l_subd_is_output(x) \
291 ((A4L_SUBD_MASK_WRITE & (x)->flags) != 0 || \
292 (A4L_SUBD_DIO & (x)->flags) != 0)
300 int a4l_ioctl_subdinfo(a4l_cxt_t * cxt,
void *arg);
301 int a4l_ioctl_chaninfo(a4l_cxt_t * cxt,
void *arg);
302 int a4l_ioctl_rnginfo(a4l_cxt_t * cxt,
void *arg);
303 int a4l_ioctl_nbchaninfo(a4l_cxt_t * cxt,
void *arg);
304 int a4l_ioctl_nbrnginfo(a4l_cxt_t * cxt,
void *arg);