summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2014-09-09 13:05:27 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-09-11 14:34:23 -0700
commit6cf6b36768db5770c3faf4cb5864926142b069fc (patch)
treeb4d452af4678e305d4757cba1a20bda8fbb73678
parentb9ca5508bc39462ee2e1988a23021d8fb1cadd6b (diff)
staging: comedi: adl_pci9118: DMA requires an interrupt
In order for DMA to work we also need an interrupt. Refactor the code so that the DMA allocation is only done if the interrupt is available. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/comedi/drivers/adl_pci9118.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/staging/comedi/drivers/adl_pci9118.c b/drivers/staging/comedi/drivers/adl_pci9118.c
index 7a55c9c70c7e..f924ad978a15 100644
--- a/drivers/staging/comedi/drivers/adl_pci9118.c
+++ b/drivers/staging/comedi/drivers/adl_pci9118.c
@@ -1775,8 +1775,16 @@ static int pci9118_common_attach(struct comedi_device *dev, int disable_irq,
pci9118_reset(dev);
- if (master)
- pci9118_alloc_dma(dev);
+ if (!disable_irq && pcidev->irq) {
+ ret = request_irq(pcidev->irq, pci9118_interrupt, IRQF_SHARED,
+ dev->board_name, dev);
+ if (ret == 0) {
+ dev->irq = pcidev->irq;
+
+ if (master)
+ pci9118_alloc_dma(dev);
+ }
+ }
if (ext_mux > 0) {
if (ext_mux > 256)
@@ -1804,13 +1812,6 @@ static int pci9118_common_attach(struct comedi_device *dev, int disable_irq,
pci_write_config_word(pcidev, PCI_COMMAND, u16w | 64);
/* Enable parity check for parity error */
- if (!disable_irq && pcidev->irq) {
- ret = request_irq(pcidev->irq, pci9118_interrupt, IRQF_SHARED,
- dev->board_name, dev);
- if (ret == 0)
- dev->irq = pcidev->irq;
- }
-
ret = comedi_alloc_subdevices(dev, 4);
if (ret)
return ret;