Commit 8a6573a8 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f0b215d6
...@@ -104,7 +104,6 @@ static int pci6208_ao_winsn(struct comedi_device *dev, ...@@ -104,7 +104,6 @@ static int pci6208_ao_winsn(struct comedi_device *dev,
{ {
struct pci6208_private *devpriv = dev->private; struct pci6208_private *devpriv = dev->private;
int chan = CR_CHAN(insn->chanspec); int chan = CR_CHAN(insn->chanspec);
unsigned int invert = 1 << (16 - 1);
unsigned int val = devpriv->ao_readback[chan]; unsigned int val = devpriv->ao_readback[chan];
int ret; int ret;
int i; int i;
...@@ -117,7 +116,9 @@ static int pci6208_ao_winsn(struct comedi_device *dev, ...@@ -117,7 +116,9 @@ static int pci6208_ao_winsn(struct comedi_device *dev,
if (ret) if (ret)
return 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; devpriv->ao_readback[chan] = val;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment