staging: comedi: refactor poc driver to remove forward declarations
authorH Hartley Sweeten <hartleys@visionengravers.com>
Fri, 27 Apr 2012 22:18:23 +0000 (15:18 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 30 Apr 2012 01:42:53 +0000 (21:42 -0400)
Move the module_init/module_exit routines and the associated
struct comedi_driver and other variables to the end of the source.
This is more typical of how other drivers are written and removes
the need for the forward declarations.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Cc: Mori Hess <fmhess@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/poc.c

index 831a576c24aaa2fdd23e65e09a5c45d9d9575f60..e3690bbd201a5675dd1fa51e8b0f1965840008d5 100644 (file)
@@ -41,20 +41,6 @@ Configuration options:
 
 #include <linux/ioport.h>
 
-static int poc_attach(struct comedi_device *dev, struct comedi_devconfig *it);
-static int poc_detach(struct comedi_device *dev);
-static int readback_insn(struct comedi_device *dev, struct comedi_subdevice *s,
-                        struct comedi_insn *insn, unsigned int *data);
-
-static int dac02_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
-                         struct comedi_insn *insn, unsigned int *data);
-static int pcl733_insn_bits(struct comedi_device *dev,
-                           struct comedi_subdevice *s,
-                           struct comedi_insn *insn, unsigned int *data);
-static int pcl734_insn_bits(struct comedi_device *dev,
-                           struct comedi_subdevice *s,
-                           struct comedi_insn *insn, unsigned int *data);
-
 struct boarddef_struct {
        const char *name;
        unsigned int iosize;
@@ -70,108 +56,9 @@ struct boarddef_struct {
                         struct comedi_insn *, unsigned int *);
        const struct comedi_lrange *range;
 };
-static const struct boarddef_struct boards[] = {
-       {
-        .name = "dac02",
-        .iosize = 8,
-        /*      .setup = dac02_setup, */
-        .type = COMEDI_SUBD_AO,
-        .n_chan = 2,
-        .n_bits = 12,
-        .winsn = dac02_ao_winsn,
-        .rinsn = readback_insn,
-        .range = &range_unknown,
-        },
-       {
-        .name = "pcl733",
-        .iosize = 4,
-        .type = COMEDI_SUBD_DI,
-        .n_chan = 32,
-        .n_bits = 1,
-        .insnbits = pcl733_insn_bits,
-        .range = &range_digital,
-        },
-       {
-        .name = "pcl734",
-        .iosize = 4,
-        .type = COMEDI_SUBD_DO,
-        .n_chan = 32,
-        .n_bits = 1,
-        .insnbits = pcl734_insn_bits,
-        .range = &range_digital,
-        },
-};
 
-#define n_boards ARRAY_SIZE(boards)
 #define this_board ((const struct boarddef_struct *)dev->board_ptr)
 
-static struct comedi_driver driver_poc = {
-       .driver_name = "poc",
-       .module = THIS_MODULE,
-       .attach = poc_attach,
-       .detach = poc_detach,
-       .board_name = &boards[0].name,
-       .num_names = n_boards,
-       .offset = sizeof(boards[0]),
-};
-
-static int poc_attach(struct comedi_device *dev, struct comedi_devconfig *it)
-{
-       struct comedi_subdevice *s;
-       unsigned long iobase;
-       unsigned int iosize;
-
-       iobase = it->options[0];
-       printk(KERN_INFO "comedi%d: poc: using %s iobase 0x%lx\n", dev->minor,
-              this_board->name, iobase);
-
-       dev->board_name = this_board->name;
-
-       if (iobase == 0) {
-               printk(KERN_ERR "io base address required\n");
-               return -EINVAL;
-       }
-
-       iosize = this_board->iosize;
-       /* check if io addresses are available */
-       if (!request_region(iobase, iosize, "dac02")) {
-               printk(KERN_ERR "I/O port conflict: failed to allocate ports "
-                       "0x%lx to 0x%lx\n", iobase, iobase + iosize - 1);
-               return -EIO;
-       }
-       dev->iobase = iobase;
-
-       if (alloc_subdevices(dev, 1) < 0)
-               return -ENOMEM;
-       if (alloc_private(dev, sizeof(unsigned int) * this_board->n_chan) < 0)
-               return -ENOMEM;
-
-       /* analog output subdevice */
-       s = dev->subdevices + 0;
-       s->type = this_board->type;
-       s->n_chan = this_board->n_chan;
-       s->maxdata = (1 << this_board->n_bits) - 1;
-       s->range_table = this_board->range;
-       s->insn_write = this_board->winsn;
-       s->insn_read = this_board->rinsn;
-       s->insn_bits = this_board->insnbits;
-       if (s->type == COMEDI_SUBD_AO || s->type == COMEDI_SUBD_DO)
-               s->subdev_flags = SDF_WRITABLE;
-
-       return 0;
-}
-
-static int poc_detach(struct comedi_device *dev)
-{
-       /* only free stuff if it has been allocated by _attach */
-       if (dev->iobase)
-               release_region(dev->iobase, this_board->iosize);
-
-       printk(KERN_INFO "comedi%d: dac02: remove\n", dev->minor);
-
-       return 0;
-}
-
 static int readback_insn(struct comedi_device *dev, struct comedi_subdevice *s,
                         struct comedi_insn *insn, unsigned int *data)
 {
@@ -248,17 +135,113 @@ static int pcl734_insn_bits(struct comedi_device *dev,
        return 2;
 }
 
+static int poc_attach(struct comedi_device *dev, struct comedi_devconfig *it)
+{
+       struct comedi_subdevice *s;
+       unsigned long iobase;
+       unsigned int iosize;
+
+       iobase = it->options[0];
+       printk(KERN_INFO "comedi%d: poc: using %s iobase 0x%lx\n", dev->minor,
+              this_board->name, iobase);
+
+       dev->board_name = this_board->name;
+
+       if (iobase == 0) {
+               printk(KERN_ERR "io base address required\n");
+               return -EINVAL;
+       }
+
+       iosize = this_board->iosize;
+       /* check if io addresses are available */
+       if (!request_region(iobase, iosize, "dac02")) {
+               printk(KERN_ERR "I/O port conflict: failed to allocate ports "
+                       "0x%lx to 0x%lx\n", iobase, iobase + iosize - 1);
+               return -EIO;
+       }
+       dev->iobase = iobase;
+
+       if (alloc_subdevices(dev, 1) < 0)
+               return -ENOMEM;
+       if (alloc_private(dev, sizeof(unsigned int) * this_board->n_chan) < 0)
+               return -ENOMEM;
+
+       /* analog output subdevice */
+       s = dev->subdevices + 0;
+       s->type = this_board->type;
+       s->n_chan = this_board->n_chan;
+       s->maxdata = (1 << this_board->n_bits) - 1;
+       s->range_table = this_board->range;
+       s->insn_write = this_board->winsn;
+       s->insn_read = this_board->rinsn;
+       s->insn_bits = this_board->insnbits;
+       if (s->type == COMEDI_SUBD_AO || s->type == COMEDI_SUBD_DO)
+               s->subdev_flags = SDF_WRITABLE;
+
+       return 0;
+}
+
+static int poc_detach(struct comedi_device *dev)
+{
+       /* only free stuff if it has been allocated by _attach */
+       if (dev->iobase)
+               release_region(dev->iobase, this_board->iosize);
+
+       printk(KERN_INFO "comedi%d: dac02: remove\n", dev->minor);
+
+       return 0;
+}
+
+static const struct boarddef_struct boards[] = {
+       {
+               .name           = "dac02",
+               .iosize         = 8,
+               /* .setup       = dac02_setup, */
+               .type           = COMEDI_SUBD_AO,
+               .n_chan         = 2,
+               .n_bits         = 12,
+               .winsn          = dac02_ao_winsn,
+               .rinsn          = readback_insn,
+               .range          = &range_unknown,
+       }, {
+               .name           = "pcl733",
+               .iosize         = 4,
+               .type           = COMEDI_SUBD_DI,
+               .n_chan         = 32,
+               .n_bits         = 1,
+               .insnbits       = pcl733_insn_bits,
+               .range          = &range_digital,
+       }, {
+               .name           = "pcl734",
+               .iosize         = 4,
+               .type           = COMEDI_SUBD_DO,
+               .n_chan         = 32,
+               .n_bits         = 1,
+               .insnbits       = pcl734_insn_bits,
+               .range          = &range_digital,
+       },
+};
+
+static struct comedi_driver driver_poc = {
+       .driver_name    = "poc",
+       .module         = THIS_MODULE,
+       .attach         = poc_attach,
+       .detach         = poc_detach,
+       .board_name     = &boards[0].name,
+       .num_names      = ARRAY_SIZE(boards),
+       .offset         = sizeof(boards[0]),
+};
+
 static int __init driver_poc_init_module(void)
 {
        return comedi_driver_register(&driver_poc);
 }
+module_init(driver_poc_init_module);
 
 static void __exit driver_poc_cleanup_module(void)
 {
        comedi_driver_unregister(&driver_poc);
 }
-
-module_init(driver_poc_init_module);
 module_exit(driver_poc_cleanup_module);
 
 MODULE_AUTHOR("Comedi http://www.comedi.org");