|
@@ -1161,48 +1161,47 @@ static int check_channel_list(struct comedi_device *dev,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- if (n_chan > 1) {
|
|
|
- chansegment[0] = chanlist[0]; /* first channel is every time ok */
|
|
|
- for (i = 1, seglen = 1; i < n_chan; i++, seglen++) { /* build part of chanlist */
|
|
|
- /* printk("%d. %d %d\n",i,CR_CHAN(chanlist[i]),CR_RANGE(chanlist[i])); */
|
|
|
- if (chanlist[0] == chanlist[i])
|
|
|
- break; /* we detect loop, this must by finish */
|
|
|
- if (CR_CHAN(chanlist[i]) & 1) /* odd channel cann't by differencial */
|
|
|
- if (CR_AREF(chanlist[i]) == AREF_DIFF) {
|
|
|
- comedi_error(dev,
|
|
|
- "Odd channel can't be differential input!\n");
|
|
|
- return 0;
|
|
|
- }
|
|
|
- nowmustbechan =
|
|
|
- (CR_CHAN(chansegment[i - 1]) + 1) % s->n_chan;
|
|
|
- if (CR_AREF(chansegment[i - 1]) == AREF_DIFF)
|
|
|
- nowmustbechan = (nowmustbechan + 1) % s->n_chan;
|
|
|
- if (nowmustbechan != CR_CHAN(chanlist[i])) { /* channel list isn't continuous :-( */
|
|
|
- printk
|
|
|
- ("channel list must be continuous! chanlist[%i]=%d but must be %d or %d!\n",
|
|
|
- i, CR_CHAN(chanlist[i]), nowmustbechan,
|
|
|
- CR_CHAN(chanlist[0]));
|
|
|
+ if (n_chan == 1)
|
|
|
+ return 1; /* seglen=1 */
|
|
|
+
|
|
|
+ chansegment[0] = chanlist[0]; /* first channel is every time ok */
|
|
|
+ for (i = 1, seglen = 1; i < n_chan; i++, seglen++) { /* build part of chanlist */
|
|
|
+ /* printk("%d. %d %d\n",i,CR_CHAN(chanlist[i]),CR_RANGE(chanlist[i])); */
|
|
|
+ if (chanlist[0] == chanlist[i])
|
|
|
+ break; /* we detect loop, this must by finish */
|
|
|
+ if (CR_CHAN(chanlist[i]) & 1) /* odd channel cann't by differencial */
|
|
|
+ if (CR_AREF(chanlist[i]) == AREF_DIFF) {
|
|
|
+ comedi_error(dev,
|
|
|
+ "Odd channel can't be differential input!\n");
|
|
|
return 0;
|
|
|
}
|
|
|
- chansegment[i] = chanlist[i]; /* well, this is next correct channel in list */
|
|
|
+ nowmustbechan =
|
|
|
+ (CR_CHAN(chansegment[i - 1]) + 1) % s->n_chan;
|
|
|
+ if (CR_AREF(chansegment[i - 1]) == AREF_DIFF)
|
|
|
+ nowmustbechan = (nowmustbechan + 1) % s->n_chan;
|
|
|
+ if (nowmustbechan != CR_CHAN(chanlist[i])) { /* channel list isn't continuous :-( */
|
|
|
+ printk
|
|
|
+ ("channel list must be continuous! chanlist[%i]=%d but must be %d or %d!\n",
|
|
|
+ i, CR_CHAN(chanlist[i]), nowmustbechan,
|
|
|
+ CR_CHAN(chanlist[0]));
|
|
|
+ return 0;
|
|
|
}
|
|
|
+ chansegment[i] = chanlist[i]; /* well, this is next correct channel in list */
|
|
|
+ }
|
|
|
|
|
|
- for (i = 0, segpos = 0; i < n_chan; i++) { /* check whole chanlist */
|
|
|
- /* printk("%d %d=%d %d\n",CR_CHAN(chansegment[i%seglen]),CR_RANGE(chansegment[i%seglen]),CR_CHAN(chanlist[i]),CR_RANGE(chanlist[i])); */
|
|
|
- if (chanlist[i] != chansegment[i % seglen]) {
|
|
|
- printk
|
|
|
- ("bad channel, reference or range number! chanlist[%i]=%d,%d,%d and not %d,%d,%d!\n",
|
|
|
- i, CR_CHAN(chansegment[i]),
|
|
|
- CR_RANGE(chansegment[i]),
|
|
|
- CR_AREF(chansegment[i]),
|
|
|
- CR_CHAN(chanlist[i % seglen]),
|
|
|
- CR_RANGE(chanlist[i % seglen]),
|
|
|
- CR_AREF(chansegment[i % seglen]));
|
|
|
- return 0; /* chan/gain list is strange */
|
|
|
- }
|
|
|
+ for (i = 0, segpos = 0; i < n_chan; i++) { /* check whole chanlist */
|
|
|
+ /* printk("%d %d=%d %d\n",CR_CHAN(chansegment[i%seglen]),CR_RANGE(chansegment[i%seglen]),CR_CHAN(chanlist[i]),CR_RANGE(chanlist[i])); */
|
|
|
+ if (chanlist[i] != chansegment[i % seglen]) {
|
|
|
+ printk
|
|
|
+ ("bad channel, reference or range number! chanlist[%i]=%d,%d,%d and not %d,%d,%d!\n",
|
|
|
+ i, CR_CHAN(chansegment[i]),
|
|
|
+ CR_RANGE(chansegment[i]),
|
|
|
+ CR_AREF(chansegment[i]),
|
|
|
+ CR_CHAN(chanlist[i % seglen]),
|
|
|
+ CR_RANGE(chanlist[i % seglen]),
|
|
|
+ CR_AREF(chansegment[i % seglen]));
|
|
|
+ return 0; /* chan/gain list is strange */
|
|
|
}
|
|
|
- } else {
|
|
|
- seglen = 1;
|
|
|
}
|
|
|
return seglen;
|
|
|
}
|