Staging: comedi: drivers: fix coding style issues in pcl812.c
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / comedi / drivers / pcm_common.c
1 #include "../comedidev.h"
2 #include "pcm_common.h"
3
4 /*
5 * 'do_cmdtest' function for an 'INTERRUPT' subdevice. This is for
6 * the PCM drivers.
7 */
8 int comedi_pcm_cmdtest(struct comedi_device *dev,
9 struct comedi_subdevice *s, struct comedi_cmd *cmd)
10 {
11 int err = 0;
12 unsigned int tmp;
13
14 /* step 1: make sure trigger sources are trivially valid */
15
16 tmp = cmd->start_src;
17 cmd->start_src &= (TRIG_NOW | TRIG_INT);
18 if (!cmd->start_src || tmp != cmd->start_src)
19 err++;
20
21 tmp = cmd->scan_begin_src;
22 cmd->scan_begin_src &= TRIG_EXT;
23 if (!cmd->scan_begin_src || tmp != cmd->scan_begin_src)
24 err++;
25
26 tmp = cmd->convert_src;
27 cmd->convert_src &= TRIG_NOW;
28 if (!cmd->convert_src || tmp != cmd->convert_src)
29 err++;
30
31 tmp = cmd->scan_end_src;
32 cmd->scan_end_src &= TRIG_COUNT;
33 if (!cmd->scan_end_src || tmp != cmd->scan_end_src)
34 err++;
35
36 tmp = cmd->stop_src;
37 cmd->stop_src &= (TRIG_COUNT | TRIG_NONE);
38 if (!cmd->stop_src || tmp != cmd->stop_src)
39 err++;
40
41 if (err)
42 return 1;
43
44 /* step 2: make sure trigger sources are unique and
45 * mutually compatible */
46
47 /* these tests are true if more than one _src bit is set */
48 if ((cmd->start_src & (cmd->start_src - 1)) != 0)
49 err++;
50 if ((cmd->scan_begin_src & (cmd->scan_begin_src - 1)) != 0)
51 err++;
52 if ((cmd->convert_src & (cmd->convert_src - 1)) != 0)
53 err++;
54 if ((cmd->scan_end_src & (cmd->scan_end_src - 1)) != 0)
55 err++;
56 if ((cmd->stop_src & (cmd->stop_src - 1)) != 0)
57 err++;
58
59 if (err)
60 return 2;
61
62 /* step 3: make sure arguments are trivially compatible */
63
64 /* cmd->start_src == TRIG_NOW || cmd->start_src == TRIG_INT */
65 if (cmd->start_arg != 0) {
66 cmd->start_arg = 0;
67 err++;
68 }
69
70 /* cmd->scan_begin_src == TRIG_EXT */
71 if (cmd->scan_begin_arg != 0) {
72 cmd->scan_begin_arg = 0;
73 err++;
74 }
75
76 /* cmd->convert_src == TRIG_NOW */
77 if (cmd->convert_arg != 0) {
78 cmd->convert_arg = 0;
79 err++;
80 }
81
82 /* cmd->scan_end_src == TRIG_COUNT */
83 if (cmd->scan_end_arg != cmd->chanlist_len) {
84 cmd->scan_end_arg = cmd->chanlist_len;
85 err++;
86 }
87
88 switch (cmd->stop_src) {
89 case TRIG_COUNT:
90 /* any count allowed */
91 break;
92 case TRIG_NONE:
93 if (cmd->stop_arg != 0) {
94 cmd->stop_arg = 0;
95 err++;
96 }
97 break;
98 default:
99 break;
100 }
101
102 if (err)
103 return 3;
104
105 /* step 4: fix up any arguments */
106
107 /* if (err) return 4; */
108
109 return 0;
110 }
111 EXPORT_SYMBOL(comedi_pcm_cmdtest);
112
113 MODULE_AUTHOR("Comedi http://www.comedi.org");
114 MODULE_DESCRIPTION("Comedi low-level driver");
115 MODULE_LICENSE("GPL");