Skip to content

Commit 57450d9

Browse files
H Hartley Sweetengregkh
authored andcommitted
staging: comedi: rti802: tidy up rti802_ao_insn_write()
Use comedi_offset_munge() to handle munging the offset binary to two's complement. Tidy up the function a bit. 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>
1 parent c0c6ae2 commit 57450d9

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

drivers/staging/comedi/drivers/rti802.c

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,30 @@ static int rti802_ao_insn_read(struct comedi_device *dev,
6464

6565
static int rti802_ao_insn_write(struct comedi_device *dev,
6666
struct comedi_subdevice *s,
67-
struct comedi_insn *insn, unsigned int *data)
67+
struct comedi_insn *insn,
68+
unsigned int *data)
6869
{
6970
struct rti802_private *devpriv = dev->private;
70-
int i, d;
71-
int chan = CR_CHAN(insn->chanspec);
71+
unsigned int chan = CR_CHAN(insn->chanspec);
72+
unsigned int val;
73+
int i;
74+
75+
outb(chan, dev->iobase + RTI802_SELECT);
7276

7377
for (i = 0; i < insn->n; i++) {
74-
d = devpriv->ao_readback[chan] = data[i];
78+
val = data[i];
79+
80+
devpriv->ao_readback[chan] = val;
81+
82+
/* munge offset binary to two's complement if needed */
7583
if (devpriv->dac_coding[chan] == dac_2comp)
76-
d ^= 0x800;
77-
outb(chan, dev->iobase + RTI802_SELECT);
78-
outb(d & 0xff, dev->iobase + RTI802_DATALOW);
79-
outb(d >> 8, dev->iobase + RTI802_DATAHIGH);
84+
val = comedi_offset_munge(s, val);
85+
86+
outb(val & 0xff, dev->iobase + RTI802_DATALOW);
87+
outb((val >> 8) & 0xff, dev->iobase + RTI802_DATAHIGH);
8088
}
81-
return i;
89+
90+
return insn->n;
8291
}
8392

8493
static int rti802_attach(struct comedi_device *dev, struct comedi_devconfig *it)

0 commit comments

Comments
 (0)