diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/ni_atmio16d.c')
-rw-r--r-- | drivers/staging/comedi/drivers/ni_atmio16d.c | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/drivers/staging/comedi/drivers/ni_atmio16d.c b/drivers/staging/comedi/drivers/ni_atmio16d.c index 4a17494f55ed..6c97a0925aad 100644 --- a/drivers/staging/comedi/drivers/ni_atmio16d.c +++ b/drivers/staging/comedi/drivers/ni_atmio16d.c @@ -638,22 +638,13 @@ static int atmio16d_attach(struct comedi_device *dev, { const struct atmio16_board_t *board = comedi_board(dev); struct atmio16d_private *devpriv; + struct comedi_subdevice *s; unsigned int irq; - unsigned long iobase; int ret; - struct comedi_subdevice *s; - - /* make sure the address range is free and allocate it */ - iobase = it->options[0]; - printk(KERN_INFO "comedi%d: atmio16d: 0x%04lx ", dev->minor, iobase); - if (!request_region(iobase, ATMIO16D_SIZE, "ni_atmio16d")) { - printk("I/O port conflict\n"); - return -EIO; - } - dev->iobase = iobase; - - dev->board_name = board->name; + ret = comedi_request_region(dev, it->options[0], ATMIO16D_SIZE); + if (ret) + return ret; ret = comedi_alloc_subdevices(dev, 4); if (ret) @@ -776,18 +767,9 @@ static int atmio16d_attach(struct comedi_device *dev, static void atmio16d_detach(struct comedi_device *dev) { - const struct atmio16_board_t *board = comedi_board(dev); - struct comedi_subdevice *s; - - if (dev->subdevices && board->has_8255) { - s = &dev->subdevices[3]; - subdev_8255_cleanup(dev, s); - } - if (dev->irq) - free_irq(dev->irq, dev); + comedi_spriv_free(dev, 3); reset_atmio16d(dev); - if (dev->iobase) - release_region(dev->iobase, ATMIO16D_SIZE); + comedi_legacy_detach(dev); } static const struct atmio16_board_t atmio16_boards[] = { |