aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/comedi/drivers/ni_atmio.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/comedi/drivers/ni_atmio.c')
-rw-r--r--drivers/staging/comedi/drivers/ni_atmio.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/drivers/staging/comedi/drivers/ni_atmio.c b/drivers/staging/comedi/drivers/ni_atmio.c
index 2cc29965e15..4ced7ba119b 100644
--- a/drivers/staging/comedi/drivers/ni_atmio.c
+++ b/drivers/staging/comedi/drivers/ni_atmio.c
@@ -350,7 +350,7 @@ static int ni_isapnp_find_board(struct pnp_dev **dev)
struct pnp_dev *isapnp_dev = NULL;
int i;
- for (i = 0; i < n_ni_boards; i++) {
+ for (i = 0; i < ARRAY_SIZE(ni_boards); i++) {
isapnp_dev = pnp_find_dev(NULL,
ISAPNP_VENDOR('N', 'I', 'C'),
ISAPNP_FUNCTION(ni_boards[i].
@@ -377,7 +377,7 @@ static int ni_isapnp_find_board(struct pnp_dev **dev)
}
break;
}
- if (i == n_ni_boards)
+ if (i == ARRAY_SIZE(ni_boards))
return -ENODEV;
*dev = isapnp_dev;
return 0;
@@ -388,7 +388,7 @@ 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++) {
+ for (i = 0; i < ARRAY_SIZE(ni_boards); i++) {
if (ni_boards[i].device_id == device_id)
return i;
@@ -406,6 +406,7 @@ static int ni_getboardtype(struct comedi_device *dev)
static int ni_atmio_attach(struct comedi_device *dev,
struct comedi_devconfig *it)
{
+ const struct ni_board_struct *boardtype;
struct ni_private *devpriv;
struct pnp_dev *isapnp_dev;
int ret;
@@ -436,15 +437,9 @@ static int ni_atmio_attach(struct comedi_device *dev,
devpriv->isapnp_dev = isapnp_dev;
}
- /* reserve our I/O region */
-
- printk("comedi%d: ni_atmio: 0x%04lx", dev->minor, iobase);
- if (!request_region(iobase, NI_SIZE, "ni_atmio")) {
- printk(" I/O port conflict\n");
- return -EIO;
- }
-
- dev->iobase = iobase;
+ ret = comedi_request_region(dev, iobase, NI_SIZE);
+ if (ret)
+ return ret;
#ifdef DEBUG
/* board existence sanity check */
@@ -466,9 +461,10 @@ static int ni_atmio_attach(struct comedi_device *dev,
return -EIO;
dev->board_ptr = ni_boards + board;
+ boardtype = comedi_board(dev);
- printk(" %s", boardtype.name);
- dev->board_name = boardtype.name;
+ printk(" %s", boardtype->name);
+ dev->board_name = boardtype->name;
/* irq stuff */
@@ -503,10 +499,7 @@ static void ni_atmio_detach(struct comedi_device *dev)
struct ni_private *devpriv = dev->private;
mio_common_detach(dev);
- if (dev->iobase)
- release_region(dev->iobase, NI_SIZE);
- if (dev->irq)
- free_irq(dev->irq, dev);
+ comedi_legacy_detach(dev);
if (devpriv->isapnp_dev)
pnp_device_detach(devpriv->isapnp_dev);
}