Skip to content

Commit

Permalink
staging: comedi: usbdux: clarify bipolar ai data in usbduxsub_ai_isoc…
Browse files Browse the repository at this point in the history
…_irq()

Use the comedi_range_is_bipolar() helper instead of checking the
'range' index against a magic number.

Also, use the s->maxdata to calculate the value needed to munge the
value for bipolar data instead of the magic number.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Jul 26, 2013
1 parent 1731a82 commit 7acf26e
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions drivers/staging/comedi/drivers/usbdux.c
Original file line number Diff line number Diff line change
Expand Up @@ -363,14 +363,15 @@ static void usbduxsub_ai_isoc_irq(struct urb *urb)
/* get the data from the USB bus and hand it over to comedi */
n = s->async->cmd.chanlist_len;
for (i = 0; i < n; i++) {
unsigned int range = CR_RANGE(s->async->cmd.chanlist[i]);
int16_t val = le16_to_cpu(devpriv->in_buffer[i]);

/* bipolar data is two's-complement */
if (comedi_range_is_bipolar(s, range))
val ^= ((s->maxdata + 1) >> 1);

/* transfer data */
if (CR_RANGE(s->async->cmd.chanlist[i]) <= 1) {
err = comedi_buf_put(s->async,
le16_to_cpu(devpriv->in_buffer[i]) ^ 0x800);
} else {
err = comedi_buf_put(s->async,
le16_to_cpu(devpriv->in_buffer[i]));
}
err = comedi_buf_put(s->async, val);
if (unlikely(err == 0)) {
/* buffer overflow */
usbdux_ai_stop(dev, 0);
Expand Down

0 comments on commit 7acf26e

Please sign in to comment.