staging: comedi: pcmad: remove need for boardinfo in pcmad_ai_insn_read()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Wed, 5 Jun 2013 22:36:45 +0000 (15:36 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Jun 2013 19:01:34 +0000 (12:01 -0700)
The const boardinfo pointer is only used in this function to work out
the value needed to convert the data to its twos complement. Use the
comedi_subdevice 'maxdata' to do this conversion and remove the 'board'
pointer.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/pcmad.c

index f64e75b871a75fcd7791aedf8004b772496a4f24..a05b5d488f7de54f0947e3a63865cbd3f982b47a 100644 (file)
@@ -88,7 +88,6 @@ static int pcmad_ai_insn_read(struct comedi_device *dev,
                              struct comedi_subdevice *s,
                              struct comedi_insn *insn, unsigned int *data)
 {
-       const struct pcmad_board_struct *board = comedi_board(dev);
        struct pcmad_priv_struct *devpriv = dev->private;
        int chan;
        int n;
@@ -107,7 +106,7 @@ static int pcmad_ai_insn_read(struct comedi_device *dev,
                data[n] |= (inb(dev->iobase + PCMAD_MSB) << 8);
 
                if (devpriv->twos_comp)
-                       data[n] ^= (1 << (board->n_ai_bits - 1));
+                       data[n] ^= ((s->maxdata + 1) >> 1);
        }
 
        return n;