staging: comedi: ni_labpc: pass the isr_flags to labpc_common_attach()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Mon, 22 Apr 2013 19:33:53 +0000 (12:33 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 23 Apr 2013 17:36:28 +0000 (10:36 -0700)
The PCI and PCMCIA LabPC boards use shared interrupts and need the
IRQF_SHARED flag set when requesting the irq, the ISA boards do not.

Instead of checking the 'bustype' in labpc_common_attach() in order
to determine the isr_flags, just pass the flags as a parameter to the
function.

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>
drivers/staging/comedi/drivers/ni_labpc.c
drivers/staging/comedi/drivers/ni_labpc.h
drivers/staging/comedi/drivers/ni_labpc_cs.c
drivers/staging/comedi/drivers/ni_labpc_pci.c

index 56fb5b2136a473205275e9d8793e8caa731992ca..365149a2ef739e25a4ff750520f20e331a228254 100644 (file)
@@ -1588,12 +1588,11 @@ static int labpc_eeprom_insn_read(struct comedi_device *dev,
 }
 
 int labpc_common_attach(struct comedi_device *dev,
-                       unsigned int irq)
+                       unsigned int irq, unsigned long isr_flags)
 {
        const struct labpc_boardinfo *board = comedi_board(dev);
        struct labpc_private *devpriv = dev->private;
        struct comedi_subdevice *s;
-       unsigned long isr_flags;
        int ret;
        int i;
 
@@ -1616,10 +1615,6 @@ int labpc_common_attach(struct comedi_device *dev,
        }
 
        if (irq) {
-               isr_flags = 0;
-               if (board->bustype == pci_bustype ||
-                   board->bustype == pcmcia_bustype)
-                       isr_flags |= IRQF_SHARED;
                ret = request_irq(irq, labpc_interrupt, isr_flags,
                                  dev->board_name, dev);
                if (ret == 0)
@@ -1738,7 +1733,7 @@ static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        if (ret)
                return ret;
 
-       ret = labpc_common_attach(dev, irq);
+       ret = labpc_common_attach(dev, irq, 0);
        if (ret)
                return ret;
 
index 7f8a82851634e4666ae6180ea6d56d77035841f3..9f126605f249fa9681076f87c4d76a7fecf0b734 100644 (file)
@@ -101,7 +101,7 @@ struct labpc_private {
 };
 
 int labpc_common_attach(struct comedi_device *dev,
-                       unsigned int irq);
+                       unsigned int irq, unsigned long isr_flags);
 void labpc_common_detach(struct comedi_device *dev);
 
 extern const int labpc_1200_ai_gain_bits[];
index 4b4a72df18e72b6d1e95d18d5ab5224c02fadf8b..1f4b7630ed95575082a0cce66ac8b2a1b3f6b9b9 100644 (file)
@@ -111,7 +111,7 @@ static int labpc_auto_attach(struct comedi_device *dev,
                return -ENOMEM;
        dev->private = devpriv;
 
-       return labpc_common_attach(dev, link->irq);
+       return labpc_common_attach(dev, link->irq, IRQF_SHARED);
 }
 
 static void labpc_detach(struct comedi_device *dev)
index 13ae267f18243913ffe53d22d5f0532b69cdd736..4beadfeabf8737f51353dffadd725986e3f18952 100644 (file)
@@ -92,7 +92,7 @@ static int labpc_pci_auto_attach(struct comedi_device *dev,
                return ret;
        dev->iobase = (unsigned long)devpriv->mite->daq_io_addr;
 
-       return labpc_common_attach(dev, mite_irq(devpriv->mite));
+       return labpc_common_attach(dev, mite_irq(devpriv->mite), IRQF_SHARED);
 }
 
 static void labpc_pci_detach(struct comedi_device *dev)