diff options
author | H Hartley Sweeten <hsweeten@visionengravers.com> | 2014-08-25 17:55:48 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-08-30 13:24:54 -0700 |
commit | aac307f9dd5ce1fe651140a036ab4b0a0571b54a (patch) | |
tree | 28797d71317c989f4b10ecf517641959dfea7cdb /drivers/staging/comedi/comedidev.h | |
parent | 081b6ee6f1060517a9bcee26418c8ae762c7410e (diff) | |
download | op-kernel-dev-aac307f9dd5ce1fe651140a036ab4b0a0571b54a.zip op-kernel-dev-aac307f9dd5ce1fe651140a036ab4b0a0571b54a.tar.gz |
staging: comedi: comedi_pci: introduce comedi_pci_detach()
Introduce a generic (*detach) function for comedi PCI drivers to handle
the boilerplate code needed to detach a PCI driver.
This function works similar to comedi_legacy_detach() where it will:
* free the dev->irq if it has been requested
* iounmap the dev->mmio addres if it has been ioremap'ed
The helper then calls comedi_pci_disable() to release the regions and
disable the PCI device.
Use the new helper directly for the (*detach) in the following cases:
* where comedi_pci_disable() is used directly for the (*detach)
* where the detach function is just boilerplate
Use the new helper in the (*detach) of the simpler PCI drivers. Call
the helper after disabling interrupts (reset) and before any additional
cleanup (kfree) to avoid any race conditions with the interrupt handler.
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/comedidev.h')
-rw-r--r-- | drivers/staging/comedi/comedidev.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/staging/comedi/comedidev.h b/drivers/staging/comedi/comedidev.h index a883862..bda5304 100644 --- a/drivers/staging/comedi/comedidev.h +++ b/drivers/staging/comedi/comedidev.h @@ -509,6 +509,7 @@ struct pci_dev *comedi_to_pci_dev(struct comedi_device *); int comedi_pci_enable(struct comedi_device *); void comedi_pci_disable(struct comedi_device *); +void comedi_pci_detach(struct comedi_device *); int comedi_pci_auto_config(struct pci_dev *, struct comedi_driver *, unsigned long context); @@ -553,6 +554,10 @@ static inline void comedi_pci_disable(struct comedi_device *dev) { } +static inline void comedi_pci_detach(struct comedi_device *dev) +{ +} + #endif /* CONFIG_COMEDI_PCI_DRIVERS */ #ifdef CONFIG_COMEDI_PCMCIA_DRIVERS |