[PATCH 13/13] staging: comedi: adv_pci1724: avoid forward declarations
Ian Abbott
abbotti at mev.co.uk
Tue Feb 19 13:09:20 UTC 2013
Move some functions and data around to avoid the need for forward
declarations.
Signed-off-by: Ian Abbott <abbotti at mev.co.uk>
Cc: Frank Mori Hess <fmh6jj at gmail.com>
---
drivers/staging/comedi/drivers/adv_pci1724.c | 262 ++++++++++++---------------
1 file changed, 120 insertions(+), 142 deletions(-)
diff --git a/drivers/staging/comedi/drivers/adv_pci1724.c b/drivers/staging/comedi/drivers/adv_pci1724.c
index 1e2f27c..3fef824 100644
--- a/drivers/staging/comedi/drivers/adv_pci1724.c
+++ b/drivers/staging/comedi/drivers/adv_pci1724.c
@@ -132,14 +132,6 @@ static const struct comedi_lrange *const ao_range_list_1724[NUM_AO_CHANNELS] = {
[0 ... NUM_AO_CHANNELS - 1] = &ao_ranges_1724,
};
-
-static DEFINE_PCI_DEVICE_TABLE(adv_pci1724_pci_table) = {
- { PCI_DEVICE(PCI_VENDOR_ID_ADVANTECH, 0x1724) },
- { 0 }
-};
-
-MODULE_DEVICE_TABLE(pci, adv_pci1724_pci_table);
-
/* this structure is for data unique to this hardware driver. */
struct adv_pci1724_private {
int ao_value[NUM_AO_CHANNELS];
@@ -147,140 +139,6 @@ struct adv_pci1724_private {
int gain_value[NUM_AO_CHANNELS];
};
-static int adv_pci1724_auto_attach(struct comedi_device *dev,
- unsigned long context_unused);
-static void adv_pci1724_detach(struct comedi_device *dev);
-static struct comedi_driver adv_pci1724_driver = {
- .driver_name = "adv_pci1724",
- .module = THIS_MODULE,
- .auto_attach = adv_pci1724_auto_attach,
- .detach = adv_pci1724_detach,
-};
-
-static int ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
- struct comedi_insn *insn, unsigned int *data);
-static int ao_readback_insn(struct comedi_device *dev,
- struct comedi_subdevice *s,
- struct comedi_insn *insn, unsigned int *data);
-static int gain_read_insn(struct comedi_device *dev,
- struct comedi_subdevice *s, struct comedi_insn *insn,
- unsigned int *data);
-static int gain_write_insn(struct comedi_device *dev,
- struct comedi_subdevice *s,
- struct comedi_insn *insn, unsigned int *data);
-static int offset_read_insn(struct comedi_device *dev,
- struct comedi_subdevice *s, struct comedi_insn *insn,
- unsigned int *data);
-static int offset_write_insn(struct comedi_device *dev,
- struct comedi_subdevice *s,
- struct comedi_insn *insn, unsigned int *data);
-
-static int adv_pci1724_pci_probe(struct pci_dev *dev,
- const struct pci_device_id *ent)
-{
- return comedi_pci_auto_config(dev, &adv_pci1724_driver);
-}
-
-static struct pci_driver adv_pci1724_pci_driver = {
- .name = "adv_pci1724",
- .id_table = adv_pci1724_pci_table,
- .probe = adv_pci1724_pci_probe,
- .remove = comedi_pci_auto_unconfig,
-};
-
-module_comedi_pci_driver(adv_pci1724_driver, adv_pci1724_pci_driver);
-
-/* Allocate and initialize the subdevice structures.
- */
-static int setup_subdevices(struct comedi_device *dev)
-{
- struct comedi_subdevice *s;
- int ret;
-
- ret = comedi_alloc_subdevices(dev, 3);
- return ret;
-
- /* analog output subdevice */
- s = &dev->subdevices[0];
- s->type = COMEDI_SUBD_AO;
- s->subdev_flags = SDF_READABLE | SDF_WRITABLE | SDF_GROUND;
- s->n_chan = NUM_AO_CHANNELS;
- s->maxdata = 0x3fff;
- s->range_table_list = ao_range_list_1724;
- s->insn_read = ao_readback_insn;
- s->insn_write = ao_winsn;
-
- /* offset calibration */
- s = &dev->subdevices[1];
- s->type = COMEDI_SUBD_CALIB;
- s->subdev_flags = SDF_READABLE | SDF_WRITABLE | SDF_INTERNAL;
- s->n_chan = NUM_AO_CHANNELS;
- s->insn_read = offset_read_insn;
- s->insn_write = offset_write_insn;
- s->maxdata = 0x3fff;
-
- /* gain calibration */
- s = &dev->subdevices[2];
- s->type = COMEDI_SUBD_CALIB;
- s->subdev_flags = SDF_READABLE | SDF_WRITABLE | SDF_INTERNAL;
- s->n_chan = NUM_AO_CHANNELS;
- s->insn_read = gain_read_insn;
- s->insn_write = gain_write_insn;
- s->maxdata = 0x3fff;
-
- return 0;
-}
-
-static int adv_pci1724_auto_attach(struct comedi_device *dev,
- unsigned long context_unused)
-{
- struct pci_dev *pcidev = comedi_to_pci_dev(dev);
- struct adv_pci1724_private *devpriv;
- int i;
- int retval;
- unsigned int board_id;
-
- devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL);
- if (!devpriv)
- return -ENOMEM;
- dev->private = devpriv;
-
- /* init software copies of output values to indicate we don't know
- * what the output value is since it has never been written. */
- for (i = 0; i < NUM_AO_CHANNELS; ++i) {
- devpriv->ao_value[i] = -1;
- devpriv->offset_value[i] = -1;
- devpriv->gain_value[i] = -1;
- }
-
- dev->board_name = dev->driver->driver_name;
-
- retval = comedi_pci_enable(pcidev, dev->board_name);
- if (retval)
- return retval;
-
- dev->iobase = pci_resource_start(pcidev, 2);
- board_id = inl(dev->iobase + BOARD_ID_REG) & BOARD_ID_MASK;
-
- retval = setup_subdevices(dev);
- if (retval < 0)
- return retval;
-
- dev_info(dev->class_dev, "%s (pci %s) attached, board id: %u\n",
- dev->board_name, pci_name(pcidev), board_id);
- return 0;
-}
-
-static void adv_pci1724_detach(struct comedi_device *dev)
-{
- struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-
- if (pcidev && dev->iobase) {
- comedi_pci_disable(pcidev);
- dev_info(dev->class_dev, "detached\n");
- }
-}
-
static int wait_for_dac_idle(struct comedi_device *dev)
{
static const int timeout = 10000;
@@ -436,6 +294,126 @@ static int gain_read_insn(struct comedi_device *dev,
return insn->n;
}
+/* Allocate and initialize the subdevice structures.
+ */
+static int setup_subdevices(struct comedi_device *dev)
+{
+ struct comedi_subdevice *s;
+ int ret;
+
+ ret = comedi_alloc_subdevices(dev, 3);
+ return ret;
+
+ /* analog output subdevice */
+ s = &dev->subdevices[0];
+ s->type = COMEDI_SUBD_AO;
+ s->subdev_flags = SDF_READABLE | SDF_WRITABLE | SDF_GROUND;
+ s->n_chan = NUM_AO_CHANNELS;
+ s->maxdata = 0x3fff;
+ s->range_table_list = &ao_range_list_1724;
+ s->insn_read = ao_readback_insn;
+ s->insn_write = ao_winsn;
+
+ /* offset calibration */
+ s = &dev->subdevices[1];
+ s->type = COMEDI_SUBD_CALIB;
+ s->subdev_flags = SDF_READABLE | SDF_WRITABLE | SDF_INTERNAL;
+ s->n_chan = NUM_AO_CHANNELS;
+ s->insn_read = offset_read_insn;
+ s->insn_write = offset_write_insn;
+ s->maxdata = 0x3fff;
+
+ /* gain calibration */
+ s = &dev->subdevices[2];
+ s->type = COMEDI_SUBD_CALIB;
+ s->subdev_flags = SDF_READABLE | SDF_WRITABLE | SDF_INTERNAL;
+ s->n_chan = NUM_AO_CHANNELS;
+ s->insn_read = gain_read_insn;
+ s->insn_write = gain_write_insn;
+ s->maxdata = 0x3fff;
+
+ return 0;
+}
+
+static int adv_pci1724_auto_attach(struct comedi_device *dev,
+ unsigned long context_unused)
+{
+ struct pci_dev *pcidev = comedi_to_pci_dev(dev);
+ struct adv_pci1724_private *devpriv;
+ int i;
+ int retval;
+ unsigned int board_id;
+
+ devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL);
+ if (!devpriv)
+ return -ENOMEM;
+ dev->private = devpriv;
+
+ /* init software copies of output values to indicate we don't know
+ * what the output value is since it has never been written. */
+ for (i = 0; i < NUM_AO_CHANNELS; ++i) {
+ devpriv->ao_value[i] = -1;
+ devpriv->offset_value[i] = -1;
+ devpriv->gain_value[i] = -1;
+ }
+
+ dev->board_name = dev->driver->driver_name;
+
+ retval = comedi_pci_enable(pcidev, dev->board_name);
+ if (retval)
+ return retval;
+
+ dev->iobase = pci_resource_start(pcidev, 2);
+ board_id = inl(dev->iobase + BOARD_ID_REG) & BOARD_ID_MASK;
+ dev_info(dev->class_dev, "board id: %d\n", board_id);
+
+ retval = setup_subdevices(dev);
+ if (retval < 0)
+ return retval;
+
+ dev_info(dev->class_dev, "%s (pci %s) attached, board id: %u\n",
+ dev->board_name, pci_name(pcidev), board_id);
+ return 0;
+}
+
+static void adv_pci1724_detach(struct comedi_device *dev)
+{
+ struct pci_dev *pcidev = comedi_to_pci_dev(dev);
+
+ if (pcidev && dev->iobase) {
+ comedi_pci_disable(pcidev);
+ dev_info(dev->class_dev, "detached\n");
+ }
+}
+
+static struct comedi_driver adv_pci1724_driver = {
+ .driver_name = "adv_pci1724",
+ .module = THIS_MODULE,
+ .auto_attach = adv_pci1724_auto_attach,
+ .detach = adv_pci1724_detach,
+};
+
+static int adv_pci1724_pci_probe(struct pci_dev *dev,
+ const struct pci_device_id *ent)
+{
+ return comedi_pci_auto_config(dev, &adv_pci1724_driver);
+}
+
+static DEFINE_PCI_DEVICE_TABLE(adv_pci1724_pci_table) = {
+ { PCI_DEVICE(PCI_VENDOR_ID_ADVANTECH, 0x1724) },
+ { 0 }
+};
+MODULE_DEVICE_TABLE(pci, adv_pci1724_pci_table);
+
+static struct pci_driver adv_pci1724_pci_driver = {
+ .name = "adv_pci1724",
+ .id_table = adv_pci1724_pci_table,
+ .probe = adv_pci1724_pci_probe,
+ .remove = comedi_pci_auto_unconfig,
+};
+
+module_comedi_pci_driver(adv_pci1724_driver, adv_pci1724_pci_driver);
+
MODULE_AUTHOR("Comedi http://www.comedi.org");
MODULE_DESCRIPTION("Comedi low-level driver");
MODULE_LICENSE("GPL");
--
1.8.1.2
More information about the devel
mailing list