Skip to content

Commit

Permalink
staging: comedi: cb_pcidas: cleanup dac08_write()
Browse files Browse the repository at this point in the history
Reverse the logic of the test against the cached value so that
the function only has one exit point.

Make the logic of the dac write a bit clearer by create a local
variable for the address used in the outw() calls and masking the
value to write and setting the enable bits before doing the outw()
calls. Add a comment just to make sure it's clear.

Also, add a comment about the 'return 1;'.  This should be
insn->n which is the number of data parameters used to do the
dac08_write_insn() but the insn is not a parameter to this
function.

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>
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Jul 6, 2012
1 parent f66faa5 commit b436356
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions drivers/staging/comedi/drivers/cb_pcidas.c
Original file line number Diff line number Diff line change
Expand Up @@ -662,23 +662,25 @@ static int caldac_read_insn(struct comedi_device *dev,
static int dac08_write(struct comedi_device *dev, unsigned int value)
{
struct cb_pcidas_private *devpriv = dev->private;
unsigned long cal_reg;

if (devpriv->dac08_value == value)
return 1;
if (devpriv->dac08_value != value) {
devpriv->dac08_value = value;

devpriv->dac08_value = value;
cal_reg = devpriv->control_status + CALIBRATION_REG;

outw(cal_enable_bits(dev) | (value & 0xff),
devpriv->control_status + CALIBRATION_REG);
udelay(1);
outw(cal_enable_bits(dev) | SELECT_DAC08_BIT | (value & 0xff),
devpriv->control_status + CALIBRATION_REG);
udelay(1);
outw(cal_enable_bits(dev) | (value & 0xff),
devpriv->control_status + CALIBRATION_REG);
udelay(1);
value &= 0xff;
value |= cal_enable_bits(dev);

return 1;
/* latch the new value into the caldac */
outw(value, cal_reg);
udelay(1);
outw(value | SELECT_DAC08_BIT, cal_reg);
udelay(1);
outw(value, cal_reg);
udelay(1);
}
return 1; /* insn->n */
}

static int dac08_write_insn(struct comedi_device *dev,
Expand Down

0 comments on commit b436356

Please sign in to comment.