staging: comedi: adl_pci6208: use comedi_offset_munge()

Use comedi_offset_munge() to munge the offset binary values from the
comedi core into the two's complement form that the hardware expects.

This removes the hard coded assumption that the analog outputs are
16-bits and instead does the munging based on the s->maxdata.

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:
H Hartley Sweeten 2013-09-18 11:50:05 -07:00 committed by Greg Kroah-Hartman
parent f0b215d6e8
commit 8a6573a875

View File

@ -104,7 +104,6 @@ static int pci6208_ao_winsn(struct comedi_device *dev,
{
struct pci6208_private *devpriv = dev->private;
int chan = CR_CHAN(insn->chanspec);
unsigned int invert = 1 << (16 - 1);
unsigned int val = devpriv->ao_readback[chan];
int ret;
int i;
@ -117,7 +116,9 @@ static int pci6208_ao_winsn(struct comedi_device *dev,
if (ret)
return ret;
outw(val ^ invert, dev->iobase + PCI6208_AO_CONTROL(chan));
/* the hardware expects two's complement values */
outw(comedi_offset_munge(s, val),
dev->iobase + PCI6208_AO_CONTROL(chan));
}
devpriv->ao_readback[chan] = val;