From 1ff60653b7be760e7e4334c08ee39d9149cd9313 Mon Sep 17 00:00:00 2001 From: Frank Mori Hess Date: Tue, 21 Oct 2008 14:40:19 +0000 Subject: [PATCH] Added COMEDI_PCI_INITCLEANUP to facilitate conversion of all pci drivers to new dynamic device file/sysfs/udev support. --- comedi/drivers/ni_pcimio.c | 43 +------------------------------------- include/linux/comedidev.h | 41 +++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 45 deletions(-) diff --git a/comedi/drivers/ni_pcimio.c b/comedi/drivers/ni_pcimio.c index 436d436c..25d9d3cd 100644 --- a/comedi/drivers/ni_pcimio.c +++ b/comedi/drivers/ni_pcimio.c @@ -1197,36 +1197,8 @@ static comedi_driver driver_pcimio = { attach:pcimio_attach, detach:pcimio_detach, }; -static int ni_pcimio_pci_probe(struct pci_dev *dev, - const struct pci_device_id *ent); -static void ni_pcimio_pci_remove(struct pci_dev *dev); -static struct pci_driver ni_pcimio_pci_driver = -{ - .name = DRV_NAME, - .id_table = ni_pci_table, - .probe = &ni_pcimio_pci_probe, - .remove = __devexit_p(&ni_pcimio_pci_remove) -}; - -MODULE_AUTHOR("Comedi http://www.comedi.org"); -MODULE_DESCRIPTION("Comedi driver for National Instruments E-series, M-series, and related boards"); -MODULE_LICENSE("GPL"); -static int __init driver_pcimio_init_module(void) -{ - int retval; - - retval = comedi_driver_register(&driver_pcimio); - if(retval < 0) return retval; - return pci_register_driver(&ni_pcimio_pci_driver); -} -static void __exit driver_pcimio_cleanup_module(void) -{ - pci_unregister_driver(&ni_pcimio_pci_driver); - comedi_driver_unregister(&driver_pcimio); -} -module_init(driver_pcimio_init_module); -module_exit(driver_pcimio_cleanup_module); +COMEDI_PCI_INITCLEANUP(driver_pcimio, ni_pci_table) typedef struct { NI_PRIVATE_COMMON} ni_private; @@ -1787,16 +1759,3 @@ static int pcimio_dio_change(comedi_device * dev, comedi_subdevice * s, return 0; } - -// pci_driver functions - -static int __devinit ni_pcimio_pci_probe(struct pci_dev *dev, - const struct pci_device_id *ent) -{ - return comedi_pci_auto_config(DRV_NAME, dev); -} - -static void __devexit ni_pcimio_pci_remove(struct pci_dev *dev) -{ - comedi_pci_auto_unconfig(dev); -} diff --git a/include/linux/comedidev.h b/include/linux/comedidev.h index 0e1bc3f0..c0945083 100644 --- a/include/linux/comedidev.h +++ b/include/linux/comedidev.h @@ -63,10 +63,13 @@ module_init(x ## _init_module); \ module_exit(x ## _cleanup_module); \ -#define COMEDI_INITCLEANUP(x) \ - MODULE_AUTHOR("David A. Schleef "); \ +#define COMEDI_MODULE_MACROS \ + MODULE_AUTHOR("Comedi http://www.comedi.org"); \ MODULE_DESCRIPTION("Comedi low-level driver"); \ MODULE_LICENSE("GPL"); \ + +#define COMEDI_INITCLEANUP(x) \ + COMEDI_MODULE_MACROS \ static int __init x ## _init_module(void) \ {return comedi_driver_register(&(x));} \ static void __exit x ## _cleanup_module(void) \ @@ -74,6 +77,38 @@ module_init(x ## _init_module); \ module_exit(x ## _cleanup_module); \ +#define COMEDI_PCI_INITCLEANUP(comedi_driver, pci_id_table) \ + COMEDI_MODULE_MACROS \ + static int __devinit comedi_driver ## _pci_probe(struct pci_dev *dev, \ + const struct pci_device_id *ent) \ + { \ + return comedi_pci_auto_config(dev, comedi_driver.driver_name); \ + } \ + static void __devexit comedi_driver ## _pci_remove(struct pci_dev *dev) \ + { \ + comedi_pci_auto_unconfig(dev); \ + } \ + static struct pci_driver comedi_driver ## _pci = \ + { \ + .id_table = pci_id_table, \ + .probe = & comedi_driver ## _pci_probe, \ + .remove = __devexit_p(& comedi_driver ## _pci_remove) \ + }; \ + static int __init comedi_driver ## _init_module(void) \ + { \ + int retval; \ + retval = comedi_driver_register(& comedi_driver); \ + if(retval < 0) return retval; \ + comedi_driver ## _pci.name = (char*)comedi_driver.driver_name; \ + return pci_register_driver(& comedi_driver ## _pci); \ + } \ + static void __exit comedi_driver ## _cleanup_module(void) \ + { \ + pci_unregister_driver(& comedi_driver ## _pci); \ + comedi_driver_unregister(& comedi_driver); \ + } \ + module_init(comedi_driver ## _init_module); \ + module_exit(comedi_driver ## _cleanup_module); #define PCI_VENDOR_ID_INOVA 0x104c #define PCI_VENDOR_ID_NATINST 0x1093 @@ -484,7 +519,7 @@ int comedi_alloc_board_minor(struct device *hardware_device); void comedi_free_board_minor(unsigned minor); int comedi_alloc_subdevice_minor(comedi_device *dev, comedi_subdevice *s); void comedi_free_subdevice_minor(comedi_subdevice *s); -int comedi_pci_auto_config(const char *board_name, struct pci_dev *pcidev); +int comedi_pci_auto_config(struct pci_dev *pcidev, const char *board_name); void comedi_pci_auto_unconfig(struct pci_dev *pcidev); //#ifdef CONFIG_COMEDI_RT -- 2.26.2