Skip to content

Commit

Permalink
staging: comedi: refactor ni_atmio driver and use module_comedi_driver
Browse files Browse the repository at this point in the history
Move the module_init/module_exit routines and the associated
struct comedi_drive to the end of the source. This is more
typical of how other drivers are written and removes the need
for the forward declarations.

Convert the driver to use the module_comedi_driver() macro
which makes the code smaller and a bit simpler.

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>
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed May 16, 2012
1 parent d22418b commit 5aac829
Showing 1 changed file with 37 additions and 55 deletions.
92 changes: 37 additions & 55 deletions drivers/staging/comedi/drivers/ni_atmio.c
Original file line number Diff line number Diff line change
Expand Up @@ -343,49 +343,8 @@ static struct pnp_device_id device_ids[] = {

MODULE_DEVICE_TABLE(pnp, device_ids);

static int ni_atmio_attach(struct comedi_device *dev,
struct comedi_devconfig *it);
static int ni_atmio_detach(struct comedi_device *dev);
static struct comedi_driver driver_atmio = {
.driver_name = "ni_atmio",
.module = THIS_MODULE,
.attach = ni_atmio_attach,
.detach = ni_atmio_detach,
};

static int __init driver_atmio_init_module(void)
{
return comedi_driver_register(&driver_atmio);
}

static void __exit driver_atmio_cleanup_module(void)
{
comedi_driver_unregister(&driver_atmio);
}

module_init(driver_atmio_init_module);
module_exit(driver_atmio_cleanup_module);

#include "ni_mio_common.c"

static int ni_getboardtype(struct comedi_device *dev);

/* clean up allocated resources */
static int ni_atmio_detach(struct comedi_device *dev)
{
mio_common_detach(dev);

if (dev->iobase)
release_region(dev->iobase, NI_SIZE);
if (dev->irq)
free_irq(dev->irq, dev);

if (devpriv->isapnp_dev)
pnp_device_detach(devpriv->isapnp_dev);

return 0;
}

static int ni_isapnp_find_board(struct pnp_dev **dev)
{
struct pnp_dev *isapnp_dev = NULL;
Expand Down Expand Up @@ -424,6 +383,26 @@ static int ni_isapnp_find_board(struct pnp_dev **dev)
return 0;
}

static int ni_getboardtype(struct comedi_device *dev)
{
int device_id = ni_read_eeprom(dev, 511);
int i;

for (i = 0; i < n_ni_boards; i++) {
if (ni_boards[i].device_id == device_id)
return i;

}
if (device_id == 255)
printk(" can't find board\n");
else if (device_id == 0)
printk(" EEPROM read error (?) or device not found\n");
else
printk(" unknown device ID %d -- contact author\n", device_id);

return -1;
}

static int ni_atmio_attach(struct comedi_device *dev,
struct comedi_devconfig *it)
{
Expand Down Expand Up @@ -518,22 +497,25 @@ static int ni_atmio_attach(struct comedi_device *dev,
return 0;
}

static int ni_getboardtype(struct comedi_device *dev)
static int ni_atmio_detach(struct comedi_device *dev)
{
int device_id = ni_read_eeprom(dev, 511);
int i;
mio_common_detach(dev);

for (i = 0; i < n_ni_boards; i++) {
if (ni_boards[i].device_id == device_id)
return i;
if (dev->iobase)
release_region(dev->iobase, NI_SIZE);
if (dev->irq)
free_irq(dev->irq, dev);

}
if (device_id == 255)
printk(" can't find board\n");
else if (device_id == 0)
printk(" EEPROM read error (?) or device not found\n");
else
printk(" unknown device ID %d -- contact author\n", device_id);
if (devpriv->isapnp_dev)
pnp_device_detach(devpriv->isapnp_dev);

return -1;
return 0;
}

static struct comedi_driver ni_atmio_driver = {
.driver_name = "ni_atmio",
.module = THIS_MODULE,
.attach = ni_atmio_attach,
.detach = ni_atmio_detach,
};
module_comedi_driver(ni_atmio_driver);

0 comments on commit 5aac829

Please sign in to comment.