staging/comedi: Add macro for registering a comedi PCMCIA driver
This patch introduces a new macro 'module_comedi_pcmcia_driver' for comedi PCMCIA drivers which do not do anything special in module init/exit. This eliminates a lot of boilerplate. Adapted from 'module_comedi_pci_driver' Signed-off-by: Peter Huewe <peterhuewe@gmx.de> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d1e1501e31
commit
d607ffac4c
@@ -316,6 +316,27 @@ void comedi_pci_driver_unregister(struct comedi_driver *, struct pci_driver *);
|
||||
module_driver(__comedi_driver, comedi_pci_driver_register, \
|
||||
comedi_pci_driver_unregister, &(__pci_driver))
|
||||
|
||||
struct pcmcia_driver;
|
||||
|
||||
int comedi_pcmcia_driver_register(struct comedi_driver *,
|
||||
struct pcmcia_driver *);
|
||||
void comedi_pcmcia_driver_unregister(struct comedi_driver *,
|
||||
struct pcmcia_driver *);
|
||||
|
||||
/**
|
||||
* module_comedi_pcmcia_driver() - Helper macro for registering a comedi PCMCIA driver
|
||||
* @__comedi_driver: comedi_driver struct
|
||||
* @__pcmcia_driver: pcmcia_driver struct
|
||||
*
|
||||
* Helper macro for comedi PCMCIA drivers which do not do anything special
|
||||
* in module init/exit. This eliminates a lot of boilerplate. Each
|
||||
* module may only use this macro once, and calling it replaces
|
||||
* module_init() and module_exit()
|
||||
*/
|
||||
#define module_comedi_pcmcia_driver(__comedi_driver, __pcmcia_driver) \
|
||||
module_driver(__comedi_driver, comedi_pcmcia_driver_register, \
|
||||
comedi_pcmcia_driver_unregister, &(__pcmcia_driver))
|
||||
|
||||
struct usb_driver;
|
||||
|
||||
int comedi_usb_driver_register(struct comedi_driver *, struct usb_driver *);
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#include <linux/device.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/pci.h>
|
||||
#include <pcmcia/cistpl.h>
|
||||
#include <pcmcia/ds.h>
|
||||
#include <linux/usb.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/kconfig.h>
|
||||
@@ -556,6 +558,36 @@ void comedi_pci_driver_unregister(struct comedi_driver *comedi_driver,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(comedi_pci_driver_unregister);
|
||||
|
||||
#if IS_ENABLED(CONFIG_PCMCIA)
|
||||
int comedi_pcmcia_driver_register(struct comedi_driver *comedi_driver,
|
||||
struct pcmcia_driver *pcmcia_driver)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = comedi_driver_register(comedi_driver);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = pcmcia_register_driver(pcmcia_driver);
|
||||
if (ret < 0) {
|
||||
comedi_driver_unregister(comedi_driver);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(comedi_pcmcia_driver_register);
|
||||
|
||||
void comedi_pcmcia_driver_unregister(struct comedi_driver *comedi_driver,
|
||||
struct pcmcia_driver *pcmcia_driver)
|
||||
{
|
||||
pcmcia_unregister_driver(pcmcia_driver);
|
||||
comedi_driver_unregister(comedi_driver);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(comedi_pcmcia_driver_unregister);
|
||||
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_USB)
|
||||
|
||||
int comedi_usb_driver_register(struct comedi_driver *comedi_driver,
|
||||
|
||||
Reference in New Issue
Block a user