staging: comedi: drivers: have core hook up default (*insn_read) for readback
Most of the comedi drivers that provide readback for write only subdevices now use the comedi core comedi_alloc_subdev_readback() helper to allocate the subdevice 'reaback' member instead of using some member in their private data. These drivers also hook up the (*insn_read) callback to the comedi_readback_insn_read() helper to provide the readback. Have the core automatically hook up the (*insn_read) callback after allocating the memory if the driver has not already hooked it up to a private function. 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
474bfe5ff9
commit
aa11672ef4
|
@ -109,6 +109,10 @@ int comedi_alloc_subdev_readback(struct comedi_subdevice *s)
|
|||
s->readback = kcalloc(s->n_chan, sizeof(*s->readback), GFP_KERNEL);
|
||||
if (!s->readback)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!s->insn_read)
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(comedi_alloc_subdev_readback);
|
||||
|
|
|
@ -1051,7 +1051,6 @@ static int apci3120_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x3fff;
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = apci3120_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -362,7 +362,6 @@ static int apci3501_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x3fff;
|
||||
s->range_table = &apci3501_ao_range;
|
||||
s->insn_write = apci3501_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -854,7 +854,6 @@ static int apci3xxx_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = &apci3xxx_ao_range;
|
||||
s->insn_write = apci3xxx_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -169,7 +169,6 @@ static int pci6208_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0xffff;
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = pci6208_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -731,7 +731,6 @@ static int pci9111_auto_attach(struct comedi_device *dev,
|
|||
s->len_chanlist = 1;
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = pci9111_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1588,7 +1588,6 @@ static int pci9118_common_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = pci9118_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -212,7 +212,6 @@ static int aio_aio12_8_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = &range_aio_aio12_8;
|
||||
s->insn_write = aio_aio12_8_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1075,7 +1075,6 @@ pci224_auto_attach(struct comedi_device *dev, unsigned long context_model)
|
|||
s->maxdata = (1 << thisboard->ao_bits) - 1;
|
||||
s->range_table = thisboard->ao_range;
|
||||
s->insn_write = pci224_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
s->len_chanlist = s->n_chan;
|
||||
dev->write_subdev = s;
|
||||
s->do_cmd = pci224_ao_cmd;
|
||||
|
|
|
@ -2511,7 +2511,6 @@ static int pci230_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = (1 << thisboard->ao_bits) - 1;
|
||||
s->range_table = &pci230_ao_range;
|
||||
s->insn_write = pci230_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
s->len_chanlist = 2;
|
||||
if (dev->irq) {
|
||||
dev->write_subdev = s;
|
||||
|
|
|
@ -305,7 +305,6 @@ static int das16cs_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0xffff;
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = &das16cs_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1478,7 +1478,6 @@ static int cb_pcidas_auto_attach(struct comedi_device *dev,
|
|||
s->range_table = &cb_pcidas_ao_ranges;
|
||||
/* default to no fifo (*insn_write) */
|
||||
s->insn_write = cb_pcidas_ao_nofifo_winsn;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -3786,7 +3786,6 @@ static int setup_subdevices(struct comedi_device *dev)
|
|||
s->maxdata = (1 << thisboard->ao_bits) - 1;
|
||||
s->range_table = thisboard->ao_range_table;
|
||||
s->insn_write = ao_winsn;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -226,7 +226,6 @@ static int cb_pcimdas_auto_attach(struct comedi_device *dev,
|
|||
/* ranges are hardware settable, but not software readable. */
|
||||
s->range_table = &range_unknown;
|
||||
s->insn_write = cb_pcimdas_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -129,7 +129,6 @@ static int dac02_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = &das02_ao_ranges;
|
||||
s->insn_write = dac02_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -707,7 +707,6 @@ static int daqboard2000_auto_attach(struct comedi_device *dev,
|
|||
s->n_chan = 2;
|
||||
s->maxdata = 0xffff;
|
||||
s->insn_write = daqboard2000_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
s->range_table = &range_bipolar10;
|
||||
|
||||
result = comedi_alloc_subdev_readback(s);
|
||||
|
|
|
@ -474,7 +474,6 @@ int das08_common_attach(struct comedi_device *dev, unsigned long iobase)
|
|||
s->maxdata = (1 << thisboard->ao_nbits) - 1;
|
||||
s->range_table = &range_bipolar5;
|
||||
s->insn_write = das08_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1175,7 +1175,6 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = devpriv->user_ao_range_table;
|
||||
s->insn_write = das16_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -601,7 +601,6 @@ static int dmm32at_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = &dmm32at_aoranges;
|
||||
s->insn_write = dmm32at_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -597,7 +597,6 @@ havetype:
|
|||
devpriv->dac_range_types[0] = dac_range_lkup(it->options[4]);
|
||||
devpriv->dac_range_types[1] = dac_range_lkup(it->options[5]);
|
||||
s->insn_write = dt2801_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -418,7 +418,6 @@ static int dt2811_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
devpriv->range_type_list[0] = dac_range_types[devpriv->dac_range[0]];
|
||||
devpriv->range_type_list[1] = dac_range_types[devpriv->dac_range[1]];
|
||||
s->insn_write = dt2811_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1231,7 +1231,6 @@ static int dt282x_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
/* ranges are per-channel, set by jumpers on the board */
|
||||
s->range_table = &dt282x_ao_range;
|
||||
s->insn_write = dt282x_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
if (dev->irq) {
|
||||
dev->write_subdev = s;
|
||||
s->subdev_flags |= SDF_CMD_WRITE;
|
||||
|
|
|
@ -697,7 +697,6 @@ static int dt3000_auto_attach(struct comedi_device *dev,
|
|||
s->len_chanlist = 1;
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = dt3k_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -135,7 +135,6 @@ static int fl512_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = &range_fl512;
|
||||
s->insn_write = fl512_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -495,7 +495,6 @@ static int icp_multi_auto_attach(struct comedi_device *dev,
|
|||
s->len_chanlist = 4;
|
||||
s->range_table = &range_analog;
|
||||
s->insn_write = icp_multi_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -392,7 +392,6 @@ static int ii20k_init_module(struct comedi_device *dev,
|
|||
s->maxdata = 0xffff;
|
||||
s->range_table = &ii20k_ao_ranges;
|
||||
s->insn_write = ii20k_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1426,7 +1426,6 @@ static int me4000_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0xFFFF; /* 16 bit DAC */
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = me4000_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
result = comedi_alloc_subdev_readback(s);
|
||||
if (result)
|
||||
|
|
|
@ -517,7 +517,6 @@ static int me_auto_attach(struct comedi_device *dev,
|
|||
s->len_chanlist = 4;
|
||||
s->range_table = &me_ao_range;
|
||||
s->insn_write = me_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -259,7 +259,6 @@ static int mf6x4_auto_attach(struct comedi_device *dev, unsigned long context)
|
|||
s->maxdata = 0x3fff; /* 14 bits DAC */
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = mf6x4_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -238,7 +238,6 @@ static int multiq3_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0xfff;
|
||||
s->range_table = &range_bipolar5;
|
||||
s->insn_write = multiq3_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -228,7 +228,6 @@ static int ni_670x_auto_attach(struct comedi_device *dev,
|
|||
s->range_table = &range_bipolar10;
|
||||
}
|
||||
s->insn_write = ni_670x_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -344,7 +344,6 @@ static int atao_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = it->options[3] ? &range_unipolar10 : &range_bipolar10;
|
||||
s->insn_write = atao_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -692,7 +692,6 @@ static int atmio16d_attach(struct comedi_device *dev,
|
|||
break;
|
||||
}
|
||||
s->insn_write = atmio16d_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -5441,7 +5441,6 @@ static int ni_E_init(struct comedi_device *dev,
|
|||
s->range_table = board->ao_range_table;
|
||||
s->insn_config = ni_ao_insn_config;
|
||||
s->insn_write = ni_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -497,7 +497,6 @@ static int pcl711_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->maxdata = 0xfff;
|
||||
s->range_table = &range_bipolar5;
|
||||
s->insn_write = pcl711_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -376,7 +376,6 @@ static int pcl726_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table_list = devpriv->rangelist;
|
||||
s->insn_write = pcl726_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1324,7 +1324,6 @@ static int pcl812_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
break;
|
||||
}
|
||||
s->insn_write = pcl812_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1158,7 +1158,6 @@ static int pcl818_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->range_table = &range_unknown;
|
||||
}
|
||||
s->insn_write = pcl818_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -732,7 +732,6 @@ static int pcmmio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->maxdata = 0xffff;
|
||||
s->range_table = &pcmmio_ao_ranges;
|
||||
s->insn_write = pcmmio_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -740,7 +740,6 @@ static int daqp_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = &range_bipolar5;
|
||||
s->insn_write = daqp_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -1263,7 +1263,6 @@ static int rtd_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x0fff;
|
||||
s->range_table = &rtd_ao_range;
|
||||
s->insn_write = rtd_ao_winsn;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -313,7 +313,6 @@ static int rti800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
? rti800_ao_ranges[it->options[7]]
|
||||
: &range_unknown;
|
||||
s->insn_write = rti800_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -100,7 +100,6 @@ static int rti802_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->maxdata = 0xfff;
|
||||
s->n_chan = 8;
|
||||
s->insn_write = rti802_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -583,7 +583,6 @@ static int s526_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
|||
s->maxdata = 0xffff;
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = s526_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
|
@ -2801,7 +2801,6 @@ static int s626_auto_attach(struct comedi_device *dev,
|
|||
s->maxdata = 0x3fff;
|
||||
s->range_table = &range_bipolar10;
|
||||
s->insn_write = s626_ao_insn_write;
|
||||
s->insn_read = comedi_readback_insn_read;
|
||||
|
||||
ret = comedi_alloc_subdev_readback(s);
|
||||
if (ret)
|
||||
|
|
Loading…
Reference in New Issue