Xenomai 3.3.2
Loading...
Searching...
No Matches
subdevice.h
Go to the documentation of this file.
1
22#ifndef _COBALT_RTDM_ANALOGY_SUBDEVICE_H
23#define _COBALT_RTDM_ANALOGY_SUBDEVICE_H
24
25#include <linux/list.h>
26#include <rtdm/analogy/instruction.h>
27#include <rtdm/analogy/command.h>
29
30/* --- Subdevice descriptor structure --- */
31
32struct a4l_device;
33struct a4l_buffer;
34
41
42 struct list_head list;
45 struct a4l_device *dev;
48 unsigned int idx;
51 struct a4l_buffer *buf;
54 /* Subdevice's status (busy, linked?) */
55 unsigned long status;
58 /* Descriptors stuff */
59 unsigned long flags;
63 struct a4l_rngdesc *rng_desc;
68 /* Functions stuff */
69 int (*insn_read) (struct a4l_subdevice *, struct a4l_kernel_instruction *);
71 int (*insn_write) (struct a4l_subdevice *, struct a4l_kernel_instruction *);
73 int (*insn_bits) (struct a4l_subdevice *, struct a4l_kernel_instruction *);
75 int (*insn_config) (struct a4l_subdevice *, struct a4l_kernel_instruction *);
77 int (*do_cmd) (struct a4l_subdevice *, struct a4l_cmd_desc *);
79 int (*do_cmdtest) (struct a4l_subdevice *, struct a4l_cmd_desc *);
81 void (*cancel) (struct a4l_subdevice *);
83 void (*munge) (struct a4l_subdevice *, void *, unsigned long);
85 int (*trigger) (struct a4l_subdevice *, lsampl_t);
88 char priv[0];
90};
91
92/* --- Subdevice related functions and macros --- */
93
94struct a4l_channel *a4l_get_chfeat(struct a4l_subdevice * sb, int idx);
95struct a4l_range *a4l_get_rngfeat(struct a4l_subdevice * sb, int chidx, int rngidx);
96int a4l_check_chanlist(struct a4l_subdevice * subd,
97 unsigned char nb_chan, unsigned int *chans);
98
99#define a4l_subd_is_input(x) ((A4L_SUBD_MASK_READ & (x)->flags) != 0)
100/* The following macro considers that a DIO subdevice is firstly an
101 output subdevice */
102#define a4l_subd_is_output(x) \
103 ((A4L_SUBD_MASK_WRITE & (x)->flags) != 0 || \
104 (A4L_SUBD_DIO & (x)->flags) != 0)
105
106/* --- Upper layer functions --- */
107
108struct a4l_subdevice * a4l_get_subd(struct a4l_device *dev, int idx);
109struct a4l_subdevice * a4l_alloc_subd(int sizeof_priv,
110 void (*setup)(struct a4l_subdevice *));
111int a4l_add_subd(struct a4l_device *dev, struct a4l_subdevice * subd);
112int a4l_ioctl_subdinfo(struct a4l_device_context * cxt, void *arg);
113int a4l_ioctl_chaninfo(struct a4l_device_context * cxt, void *arg);
114int a4l_ioctl_rnginfo(struct a4l_device_context * cxt, void *arg);
115int a4l_ioctl_nbchaninfo(struct a4l_device_context * cxt, void *arg);
116int a4l_ioctl_nbrnginfo(struct a4l_device_context * cxt, void *arg);
117
118#endif /* !_COBALT_RTDM_ANALOGY_SUBDEVICE_H */
Analogy for Linux, channel, range related features.
Structure describing some channel's characteristics.
Definition channel_range.h:159
Structure describing a channels set.
Definition channel_range.h:187
Structure describing the asynchronous instruction.
Definition analogy.h:289
Structure describing a (unique) range.
Definition channel_range.h:202
Structure describing the subdevice.
Definition subdevice.h:40
struct a4l_buffer * buf
Linked buffer.
Definition subdevice.h:51
unsigned long flags
Type flags.
Definition subdevice.h:59
struct list_head list
List stuff.
Definition subdevice.h:42
struct a4l_cmd_desc * cmd_mask
Command capabilities mask.
Definition subdevice.h:65
struct a4l_rngdesc * rng_desc
Tab of ranges descriptors pointers.
Definition subdevice.h:63
int(* do_cmdtest)(struct a4l_subdevice *, struct a4l_cmd_desc *)
Callback for command checking.
Definition subdevice.h:79
void(* munge)(struct a4l_subdevice *, void *, unsigned long)
Callback for munge operation.
Definition subdevice.h:83
int(* trigger)(struct a4l_subdevice *, lsampl_t)
Callback for trigger operation.
Definition subdevice.h:85
void(* cancel)(struct a4l_subdevice *)
Callback for asynchronous transfer cancellation.
Definition subdevice.h:81
int(* do_cmd)(struct a4l_subdevice *, struct a4l_cmd_desc *)
Callback for command handling.
Definition subdevice.h:77
struct a4l_device * dev
Containing device.
Definition subdevice.h:45
int(* insn_config)(struct a4l_subdevice *, struct a4l_kernel_instruction *)
Callback for the configuration instruction.
Definition subdevice.h:75
struct a4l_channels_desc * chan_desc
Tab of channels descriptors pointers.
Definition subdevice.h:61
int(* insn_read)(struct a4l_subdevice *, struct a4l_kernel_instruction *)
Callback for the instruction "read".
Definition subdevice.h:69
int(* insn_bits)(struct a4l_subdevice *, struct a4l_kernel_instruction *)
Callback for the instruction "bits".
Definition subdevice.h:73
int(* insn_write)(struct a4l_subdevice *, struct a4l_kernel_instruction *)
Callback for the instruction "write".
Definition subdevice.h:71
unsigned int idx
Subdevice index.
Definition subdevice.h:48
char priv[0]
Private data.
Definition subdevice.h:88
unsigned long status
Subdevice's status.
Definition subdevice.h:55