fine_gain_channel(channel), fine_gain);
}
-static int cb_pcidda_ao_winsn(struct comedi_device *dev,
- struct comedi_subdevice *s,
- struct comedi_insn *insn, unsigned int *data)
+static int cb_pcidda_ao_insn_write(struct comedi_device *dev,
+ struct comedi_subdevice *s,
+ struct comedi_insn *insn,
+ unsigned int *data)
{
struct cb_pcidda_private *devpriv = dev->private;
unsigned int channel = CR_CHAN(insn->chanspec);
unsigned int range = CR_RANGE(insn->chanspec);
unsigned int ctrl;
- /* adjust calibration dacs if range has changed */
if (range != devpriv->ao_range[channel])
cb_pcidda_calibrate(dev, channel, range);
outw(ctrl, dev->iobase + CB_DDA_DA_CTRL_REG);
- /* write data */
outw(data[0], dev->iobase + CB_DDA_DA_DATA_REG(channel));
- /* return the number of samples read/written */
- return 1;
+ return insn->n;
}
static const void *cb_pcidda_find_boardinfo(struct comedi_device *dev,
s->n_chan = thisboard->ao_chans;
s->maxdata = (1 << thisboard->ao_bits) - 1;
s->range_table = &cb_pcidda_ranges;
- s->insn_write = cb_pcidda_ao_winsn;
+ s->insn_write = cb_pcidda_ao_insn_write;
/* two 8255 digital io subdevices */
for (i = 0; i < 2; i++) {