staging: comedi: usbdux: clarify bipolar ai data in usbduxsub_ai_isoc_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>
This commit is contained in:
parent
1731a826ca
commit
7acf26edbc
1 changed files with 8 additions and 7 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue