Merge tag 'md-3.8' of git://neil.brown.name/md
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / comedi / drivers / pcm_common.c
CommitLineData
0b8f754a 1#include "../comedidev.h"
27020ffe
HS
2
3#include "comedi_fc.h"
0b8f754a
BP
4#include "pcm_common.h"
5
0b8f754a
BP
6int comedi_pcm_cmdtest(struct comedi_device *dev,
7 struct comedi_subdevice *s, struct comedi_cmd *cmd)
8{
9 int err = 0;
0b8f754a 10
27020ffe 11 /* Step 1 : check if triggers are trivially valid */
0b8f754a 12
27020ffe
HS
13 err |= cfc_check_trigger_src(&cmd->start_src, TRIG_NOW | TRIG_INT);
14 err |= cfc_check_trigger_src(&cmd->scan_begin_src, TRIG_EXT);
15 err |= cfc_check_trigger_src(&cmd->convert_src, TRIG_NOW);
16 err |= cfc_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT);
17 err |= cfc_check_trigger_src(&cmd->stop_src, TRIG_COUNT | TRIG_NONE);
0b8f754a
BP
18
19 if (err)
20 return 1;
21
27020ffe 22 /* Step 2a : make sure trigger sources are unique */
0b8f754a 23
27020ffe
HS
24 err |= cfc_check_trigger_is_unique(cmd->start_src);
25 err |= cfc_check_trigger_is_unique(cmd->stop_src);
26
27 /* Step 2b : and mutually compatible */
0b8f754a
BP
28
29 if (err)
30 return 2;
31
c563065b 32 /* Step 3: check if arguments are trivially valid */
0b8f754a 33
c563065b
HS
34 err |= cfc_check_trigger_arg_is(&cmd->start_arg, 0);
35 err |= cfc_check_trigger_arg_is(&cmd->scan_begin_arg, 0);
36 err |= cfc_check_trigger_arg_is(&cmd->convert_arg, 0);
37 err |= cfc_check_trigger_arg_is(&cmd->scan_end_arg, cmd->chanlist_len);
0b8f754a
BP
38
39 switch (cmd->stop_src) {
40 case TRIG_COUNT:
41 /* any count allowed */
42 break;
43 case TRIG_NONE:
c563065b 44 err |= cfc_check_trigger_arg_is(&cmd->stop_arg, 0);
0b8f754a
BP
45 break;
46 default:
47 break;
48 }
49
50 if (err)
51 return 3;
52
53 /* step 4: fix up any arguments */
54
55 /* if (err) return 4; */
56
57 return 0;
58}
0b8f754a 59EXPORT_SYMBOL(comedi_pcm_cmdtest);
90f703d3
AT
60
61MODULE_AUTHOR("Comedi http://www.comedi.org");
62MODULE_DESCRIPTION("Comedi low-level driver");
63MODULE_LICENSE("GPL");