diff options
author | H Hartley Sweeten | 2014-09-09 22:05:27 +0200 |
---|---|---|
committer | Greg Kroah-Hartman | 2014-09-11 23:34:23 +0200 |
commit | 6cf6b36768db5770c3faf4cb5864926142b069fc (patch) | |
tree | b4d452af4678e305d4757cba1a20bda8fbb73678 /drivers/staging/comedi | |
parent | staging: comedi: adl_pci9118: factor out DMA alloc/free (diff) | |
download | kernel-qcow2-linux-6cf6b36768db5770c3faf4cb5864926142b069fc.tar.gz kernel-qcow2-linux-6cf6b36768db5770c3faf4cb5864926142b069fc.tar.xz kernel-qcow2-linux-6cf6b36768db5770c3faf4cb5864926142b069fc.zip |
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>
Diffstat (limited to 'drivers/staging/comedi')
-rw-r--r-- | drivers/staging/comedi/drivers/adl_pci9118.c | 19 |
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; |