diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/pcmuio.c')
-rw-r--r-- | drivers/staging/comedi/drivers/pcmuio.c | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/drivers/staging/comedi/drivers/pcmuio.c b/drivers/staging/comedi/drivers/pcmuio.c index 433270ceda4..0c98e26bbba 100644 --- a/drivers/staging/comedi/drivers/pcmuio.c +++ b/drivers/staging/comedi/drivers/pcmuio.c @@ -800,27 +800,16 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it) struct pcmuio_private *devpriv; struct comedi_subdevice *s; int sdev_no, chans_left, n_subdevs, port, asic, thisasic_chanct = 0; - unsigned long iobase; unsigned int irq[MAX_ASICS]; int ret; - iobase = it->options[0]; irq[0] = it->options[1]; irq[1] = it->options[2]; - dev_dbg(dev->class_dev, "%s: io: %lx attach\n", - dev->driver->driver_name, iobase); - - dev->iobase = iobase; - - if (!iobase || !request_region(iobase, - board->num_asics * ASIC_IOSIZE, - dev->driver->driver_name)) { - dev_err(dev->class_dev, "I/O port conflict\n"); - return -EIO; - } - - dev->board_name = board->name; + ret = comedi_request_region(dev, it->options[0], + board->num_asics * ASIC_IOSIZE); + if (ret) + return ret; devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL); if (!devpriv) @@ -928,9 +917,6 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it) devpriv->asics[asic].irq = irq[asic]; } - dev->irq = irq[0]; /* grr.. wish comedi dev struct supported multiple - irqs.. */ - if (irq[0]) { dev_dbg(dev->class_dev, "irq: %u\n", irq[0]); if (irq[1] && board->num_asics == 2) @@ -946,18 +932,16 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it) static void pcmuio_detach(struct comedi_device *dev) { - const struct pcmuio_board *board = comedi_board(dev); struct pcmuio_private *devpriv = dev->private; int i; - if (dev->iobase) - release_region(dev->iobase, ASIC_IOSIZE * board->num_asics); for (i = 0; i < MAX_ASICS; ++i) { if (devpriv->asics[i].irq) free_irq(devpriv->asics[i].irq, dev); } if (devpriv && devpriv->sprivs) kfree(devpriv->sprivs); + comedi_legacy_detach(dev); } static const struct pcmuio_board pcmuio_boards[] = { |