staging: comedi: ni_atmio16d: fix atmio16d_dio_insn_config()
This is the (*insn_config) function for a DIO subdevice. It should be using the data[0] value as the "instruction" to perform on the subdevice. Use the comedi_dio_insn_config() helper to properly handle instructions. 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:
parent
49b71ebab2
commit
f9f34d57ba
1 changed files with 13 additions and 9 deletions
|
@ -576,15 +576,19 @@ static int atmio16d_dio_insn_config(struct comedi_device *dev,
|
||||||
unsigned int *data)
|
unsigned int *data)
|
||||||
{
|
{
|
||||||
struct atmio16d_private *devpriv = dev->private;
|
struct atmio16d_private *devpriv = dev->private;
|
||||||
int i;
|
unsigned int chan = CR_CHAN(insn->chanspec);
|
||||||
int mask;
|
unsigned int mask;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (chan < 4)
|
||||||
|
mask = 0x0f;
|
||||||
|
else
|
||||||
|
mask = 0xf0;
|
||||||
|
|
||||||
|
ret = comedi_dio_insn_config(dev, s, insn, data, mask);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
for (i = 0; i < insn->n; i++) {
|
|
||||||
mask = (CR_CHAN(insn->chanspec) < 4) ? 0x0f : 0xf0;
|
|
||||||
s->io_bits &= ~mask;
|
|
||||||
if (data[i])
|
|
||||||
s->io_bits |= mask;
|
|
||||||
}
|
|
||||||
devpriv->com_reg_2_state &= ~(COMREG2_DOUTEN0 | COMREG2_DOUTEN1);
|
devpriv->com_reg_2_state &= ~(COMREG2_DOUTEN0 | COMREG2_DOUTEN1);
|
||||||
if (s->io_bits & 0x0f)
|
if (s->io_bits & 0x0f)
|
||||||
devpriv->com_reg_2_state |= COMREG2_DOUTEN0;
|
devpriv->com_reg_2_state |= COMREG2_DOUTEN0;
|
||||||
|
@ -592,7 +596,7 @@ static int atmio16d_dio_insn_config(struct comedi_device *dev,
|
||||||
devpriv->com_reg_2_state |= COMREG2_DOUTEN1;
|
devpriv->com_reg_2_state |= COMREG2_DOUTEN1;
|
||||||
outw(devpriv->com_reg_2_state, dev->iobase + COM_REG_2);
|
outw(devpriv->com_reg_2_state, dev->iobase + COM_REG_2);
|
||||||
|
|
||||||
return i;
|
return insn->n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue