summaryrefslogtreecommitdiff
path: root/drivers/staging/comedi/drivers/multiq3.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/comedi/drivers/multiq3.c')
-rw-r--r--drivers/staging/comedi/drivers/multiq3.c45
1 files changed, 8 insertions, 37 deletions
diff --git a/drivers/staging/comedi/drivers/multiq3.c b/drivers/staging/comedi/drivers/multiq3.c
index 1f5f402f3d17..7a8292086e18 100644
--- a/drivers/staging/comedi/drivers/multiq3.c
+++ b/drivers/staging/comedi/drivers/multiq3.c
@@ -222,41 +222,20 @@ static void encoder_reset(struct comedi_device *dev)
}
}
-/*
- options[0] - I/O port
- options[1] - irq
- options[2] - number of encoder chips installed
- */
-
static int multiq3_attach(struct comedi_device *dev,
struct comedi_devconfig *it)
{
struct multiq3_private *devpriv;
- int result = 0;
- unsigned long iobase;
- unsigned int irq;
struct comedi_subdevice *s;
+ int ret;
- iobase = it->options[0];
- printk(KERN_INFO "comedi%d: multiq3: 0x%04lx ", dev->minor, iobase);
- if (!request_region(iobase, MULTIQ3_SIZE, "multiq3")) {
- printk(KERN_ERR "comedi%d: I/O port conflict\n", dev->minor);
- return -EIO;
- }
-
- dev->iobase = iobase;
+ ret = comedi_request_region(dev, it->options[0], MULTIQ3_SIZE);
+ if (ret)
+ return ret;
- irq = it->options[1];
- if (irq)
- printk(KERN_WARNING "comedi%d: irq = %u ignored\n",
- dev->minor, irq);
- else
- printk(KERN_WARNING "comedi%d: no irq\n", dev->minor);
- dev->board_name = "multiq3";
-
- result = comedi_alloc_subdevices(dev, 5);
- if (result)
- return result;
+ ret = comedi_alloc_subdevices(dev, 5);
+ if (ret)
+ return ret;
devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL);
if (!devpriv)
@@ -315,19 +294,11 @@ static int multiq3_attach(struct comedi_device *dev,
return 0;
}
-static void multiq3_detach(struct comedi_device *dev)
-{
- if (dev->iobase)
- release_region(dev->iobase, MULTIQ3_SIZE);
- if (dev->irq)
- free_irq(dev->irq, dev);
-}
-
static struct comedi_driver multiq3_driver = {
.driver_name = "multiq3",
.module = THIS_MODULE,
.attach = multiq3_attach,
- .detach = multiq3_detach,
+ .detach = comedi_legacy_detach,
};
module_comedi_driver(multiq3_driver);