diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/ni_atmio.c')
-rw-r--r-- | drivers/staging/comedi/drivers/ni_atmio.c | 29 |
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); } |