aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi/drivers/usbdux.c
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-07-25 16:09:30 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-07-26 15:10:07 -0700
commit7acf26edbcba808cb6447af893f30c63751938f8 (patch)
tree0433cf852e85c1489f07b760a51c5b118bd939bc /drivers/staging/comedi/drivers/usbdux.c
parentstaging: comedi: usbdux: move usbdux_firmware_upload() (diff)
downloadlinux-dev-7acf26edbcba808cb6447af893f30c63751938f8.tar.xz
linux-dev-7acf26edbcba808cb6447af893f30c63751938f8.zip
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>
Diffstat (limited to 'drivers/staging/comedi/drivers/usbdux.c')
-rw-r--r--drivers/staging/comedi/drivers/usbdux.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/staging/comedi/drivers/usbdux.c b/drivers/staging/comedi/drivers/usbdux.c
index 92d740a4c295..20b705e87d48 100644
--- a/drivers/staging/comedi/drivers/usbdux.c
+++ b/drivers/staging/comedi/drivers/usbdux.c
@@ -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);