diff --git a/drivers/staging/comedi/drivers/ni_labpc.c b/drivers/staging/comedi/drivers/ni_labpc.c index e46854f8e932..8083f4815693 100644 --- a/drivers/staging/comedi/drivers/ni_labpc.c +++ b/drivers/staging/comedi/drivers/ni_labpc.c @@ -1606,7 +1606,7 @@ static int labpc_eeprom_insn_read(struct comedi_device *dev, return insn->n; } -int labpc_common_attach(struct comedi_device *dev, unsigned long iobase, +int labpc_common_attach(struct comedi_device *dev, unsigned int irq, unsigned int dma_chan) { const struct labpc_boardinfo *board = comedi_board(dev); @@ -1616,14 +1616,6 @@ int labpc_common_attach(struct comedi_device *dev, unsigned long iobase, int ret; int i; - if (iobase == 0) - return -EINVAL; - if (board->bustype == isa_bustype) { - if (!request_region(iobase, LABPC_SIZE, dev->board_name)) - return -EIO; - } - dev->iobase = iobase; - if (board->has_mmio) { devpriv->read_byte = labpc_readb; devpriv->write_byte = labpc_writeb; @@ -1782,6 +1774,9 @@ static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it) iobase = it->options[0]; irq = it->options[1]; dma_chan = it->options[2]; + if (!request_region(iobase, LABPC_SIZE, dev->board_name)) + return -EIO; + dev->iobase = iobase; #else dev_err(dev->class_dev, "ni_labpc driver has not been built with ISA DMA support.\n"); @@ -1807,7 +1802,7 @@ static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it) break; } - return labpc_common_attach(dev, iobase, irq, dma_chan); + return labpc_common_attach(dev, irq, dma_chan); } static const struct labpc_boardinfo * @@ -1831,7 +1826,6 @@ static int labpc_auto_attach(struct comedi_device *dev, struct pci_dev *pcidev = comedi_to_pci_dev(dev); const struct labpc_boardinfo *board; struct labpc_private *devpriv; - unsigned long iobase; unsigned int irq; int ret; @@ -1858,9 +1852,9 @@ static int labpc_auto_attach(struct comedi_device *dev, ret = mite_setup(devpriv->mite); if (ret < 0) return ret; - iobase = (unsigned long)devpriv->mite->daq_io_addr; + dev->iobase = (unsigned long)devpriv->mite->daq_io_addr; irq = mite_irq(devpriv->mite); - return labpc_common_attach(dev, iobase, irq, 0); + return labpc_common_attach(dev, irq, 0); } void labpc_common_detach(struct comedi_device *dev) diff --git a/drivers/staging/comedi/drivers/ni_labpc.h b/drivers/staging/comedi/drivers/ni_labpc.h index 0bf2ca13c827..e214bb9237b3 100644 --- a/drivers/staging/comedi/drivers/ni_labpc.h +++ b/drivers/staging/comedi/drivers/ni_labpc.h @@ -100,7 +100,7 @@ struct labpc_private { void (*write_byte) (unsigned int byte, unsigned long address); }; -int labpc_common_attach(struct comedi_device *dev, unsigned long iobase, +int labpc_common_attach(struct comedi_device *dev, unsigned int irq, unsigned int dma); void labpc_common_detach(struct comedi_device *dev); diff --git a/drivers/staging/comedi/drivers/ni_labpc_cs.c b/drivers/staging/comedi/drivers/ni_labpc_cs.c index 4e1deed99a21..f9cb9cf1655a 100644 --- a/drivers/staging/comedi/drivers/ni_labpc_cs.c +++ b/drivers/staging/comedi/drivers/ni_labpc_cs.c @@ -111,7 +111,7 @@ static int labpc_auto_attach(struct comedi_device *dev, return -ENOMEM; dev->private = devpriv; - return labpc_common_attach(dev, dev->iobase, link->irq, 0); + return labpc_common_attach(dev, link->irq, 0); } static void labpc_detach(struct comedi_device *dev)