* [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver
@ 2013-01-13 2:11 Peter Huewe
2013-01-13 2:11 ` [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver Peter Huewe
` (8 more replies)
0 siblings, 9 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-13 2:11 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
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>
---
drivers/staging/comedi/comedidev.h | 22 ++++++++++++++++++++++
drivers/staging/comedi/drivers.c | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/drivers/staging/comedi/comedidev.h b/drivers/staging/comedi/comedidev.h
index 692e1e6..ccb22dd 100644
--- a/drivers/staging/comedi/comedidev.h
+++ b/drivers/staging/comedi/comedidev.h
@@ -41,6 +41,9 @@
#include <linux/io.h>
#include <linux/timer.h>
#include <linux/pci.h>
+#include <pcmcia/cistpl.h>
+#include <pcmcia/cisreg.h>
+#include <pcmcia/ds.h>
#include <linux/usb.h>
#include "comedi.h"
@@ -342,6 +345,25 @@ 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))
+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 *);
diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
index 50cf498..17a9e35 100644
--- a/drivers/staging/comedi/drivers.c
+++ b/drivers/staging/comedi/drivers.c
@@ -24,6 +24,9 @@
#include <linux/device.h>
#include <linux/module.h>
#include <linux/pci.h>
+#include <pcmcia/cistpl.h>
+#include <pcmcia/cisreg.h>
+#include <pcmcia/ds.h>
#include <linux/usb.h>
#include <linux/errno.h>
#include <linux/kconfig.h>
@@ -958,6 +961,37 @@ void comedi_pci_driver_unregister(struct comedi_driver *comedi_driver,
}
EXPORT_SYMBOL_GPL(comedi_pci_driver_unregister);
+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;
+
+ /* FIXME: Remove this test after auditing all comedi pci drivers */
+ if (!pcmcia_driver->name)
+ pcmcia_driver->name = comedi_driver->driver_name;
+
+ 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);
+
#if IS_ENABLED(CONFIG_USB)
int comedi_usb_driver_register(struct comedi_driver *comedi_driver,
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
@ 2013-01-13 2:11 ` Peter Huewe
2013-01-13 2:11 ` [PATCH 3/8] staging/comedi/ni_mio_cs: " Peter Huewe
` (7 subsequent siblings)
8 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-13 2:11 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/ni_daq_dio24.c | 29 +------------------------
1 files changed, 1 insertions(+), 28 deletions(-)
diff --git a/drivers/staging/comedi/drivers/ni_daq_dio24.c b/drivers/staging/comedi/drivers/ni_daq_dio24.c
index 7b33335..dd22691 100644
--- a/drivers/staging/comedi/drivers/ni_daq_dio24.c
+++ b/drivers/staging/comedi/drivers/ni_daq_dio24.c
@@ -318,31 +318,4 @@ static struct pcmcia_driver dio24_cs_driver = {
.name = "ni_daq_dio24",
};
-static int __init init_dio24_cs(void)
-{
- printk("ni_daq_dio24: HOLA SOY YO!\n");
- pcmcia_register_driver(&dio24_cs_driver);
- return 0;
-}
-
-static void __exit exit_dio24_cs(void)
-{
- pcmcia_unregister_driver(&dio24_cs_driver);
-}
-
-int __init init_module(void)
-{
- int ret;
-
- ret = init_dio24_cs();
- if (ret < 0)
- return ret;
-
- return comedi_driver_register(&driver_dio24);
-}
-
-void __exit cleanup_module(void)
-{
- exit_dio24_cs();
- comedi_driver_unregister(&driver_dio24);
-}
+module_comedi_pcmcia_driver(driver_dio24, dio24_cs_driver);
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 3/8] staging/comedi/ni_mio_cs: Convert to module_comedi_pcmcia_driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
2013-01-13 2:11 ` [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver Peter Huewe
@ 2013-01-13 2:11 ` Peter Huewe
2013-01-13 2:11 ` [PATCH 4/8] staging/comedi/quatech_daqp_cs: " Peter Huewe
` (6 subsequent siblings)
8 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-13 2:11 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Also removed the superflous #ifdef MODULE
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/ni_mio_cs.c | 20 +-------------------
1 files changed, 1 insertions(+), 19 deletions(-)
diff --git a/drivers/staging/comedi/drivers/ni_mio_cs.c b/drivers/staging/comedi/drivers/ni_mio_cs.c
index 76c6a13..b5c5d58 100644
--- a/drivers/staging/comedi/drivers/ni_mio_cs.c
+++ b/drivers/staging/comedi/drivers/ni_mio_cs.c
@@ -408,8 +408,6 @@ static int ni_getboardtype(struct comedi_device *dev,
return 0;
}
-#ifdef MODULE
-
static const struct pcmcia_device_id ni_mio_cs_ids[] = {
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010d), /* DAQCard-ai-16xe-50 */
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010c), /* DAQCard-ai-16e-4 */
@@ -434,20 +432,4 @@ static struct pcmcia_driver ni_mio_cs_driver = {
.name = "ni_mio_cs",
};
-int init_module(void)
-{
- pcmcia_register_driver(&ni_mio_cs_driver);
- comedi_driver_register(&driver_ni_mio_cs);
- return 0;
-}
-
-void cleanup_module(void)
-{
- pcmcia_unregister_driver(&ni_mio_cs_driver);
-#if 0
- while (cur_dev != NULL)
- cs_detach(cur_dev->handle);
-#endif
- comedi_driver_unregister(&driver_ni_mio_cs);
-}
-#endif
+module_comedi_pcmcia_driver(driver_ni_mio_cs, ni_mio_cs_driver);
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 4/8] staging/comedi/quatech_daqp_cs: Convert to module_comedi_pcmcia_driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
2013-01-13 2:11 ` [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver Peter Huewe
2013-01-13 2:11 ` [PATCH 3/8] staging/comedi/ni_mio_cs: " Peter Huewe
@ 2013-01-13 2:11 ` Peter Huewe
2013-01-13 2:11 ` [PATCH 5/8] staging/comedi/cb_das16_cs: " Peter Huewe
` (5 subsequent siblings)
8 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-13 2:11 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Also removed the superflous #ifdef MODULE
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/quatech_daqp_cs.c | 18 +-----------------
1 files changed, 1 insertions(+), 17 deletions(-)
diff --git a/drivers/staging/comedi/drivers/quatech_daqp_cs.c b/drivers/staging/comedi/drivers/quatech_daqp_cs.c
index ef0cdaa..55d8cc6 100644
--- a/drivers/staging/comedi/drivers/quatech_daqp_cs.c
+++ b/drivers/staging/comedi/drivers/quatech_daqp_cs.c
@@ -1038,9 +1038,6 @@ static int daqp_cs_resume(struct pcmcia_device *link)
}
/*====================================================================*/
-
-#ifdef MODULE
-
static const struct pcmcia_device_id daqp_cs_id_table[] = {
PCMCIA_DEVICE_MANF_CARD(0x0137, 0x0027),
PCMCIA_DEVICE_NULL
@@ -1061,17 +1058,4 @@ static struct pcmcia_driver daqp_cs_driver = {
.name = "quatech_daqp_cs",
};
-int __init init_module(void)
-{
- pcmcia_register_driver(&daqp_cs_driver);
- comedi_driver_register(&driver_daqp);
- return 0;
-}
-
-void __exit cleanup_module(void)
-{
- comedi_driver_unregister(&driver_daqp);
- pcmcia_unregister_driver(&daqp_cs_driver);
-}
-
-#endif
+module_comedi_pcmcia_driver(driver_daqp, daqp_cs_driver);
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 5/8] staging/comedi/cb_das16_cs: Convert to module_comedi_pcmcia_driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
` (2 preceding siblings ...)
2013-01-13 2:11 ` [PATCH 4/8] staging/comedi/quatech_daqp_cs: " Peter Huewe
@ 2013-01-13 2:11 ` Peter Huewe
2013-01-13 2:11 ` [PATCH 6/8] staging/comedi/das08_cs: " Peter Huewe
` (4 subsequent siblings)
8 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-13 2:11 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/cb_das16_cs.c | 25 +------------------------
1 files changed, 1 insertions(+), 24 deletions(-)
diff --git a/drivers/staging/comedi/drivers/cb_das16_cs.c b/drivers/staging/comedi/drivers/cb_das16_cs.c
index 93731de..e253fc0 100644
--- a/drivers/staging/comedi/drivers/cb_das16_cs.c
+++ b/drivers/staging/comedi/drivers/cb_das16_cs.c
@@ -548,30 +548,7 @@ static struct pcmcia_driver das16cs_driver = {
.id_table = das16cs_id_table,
};
-static int __init das16cs_init(void)
-{
- int ret;
-
- ret = comedi_driver_register(&driver_das16cs);
- if (ret < 0)
- return ret;
-
- ret = pcmcia_register_driver(&das16cs_driver);
- if (ret < 0) {
- comedi_driver_unregister(&driver_das16cs);
- return ret;
- }
-
- return 0;
-}
-module_init(das16cs_init);
-
-static void __exit das16cs_exit(void)
-{
- pcmcia_unregister_driver(&das16cs_driver);
- comedi_driver_unregister(&driver_das16cs);
-}
-module_exit(das16cs_exit);
+module_comedi_pcmcia_driver(driver_das16cs, das16cs_driver);
MODULE_AUTHOR("David A. Schleef <ds@schleef.org>");
MODULE_DESCRIPTION("Comedi driver for Computer Boards PC-CARD DAS16/16");
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 6/8] staging/comedi/das08_cs: Convert to module_comedi_pcmcia_driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
` (3 preceding siblings ...)
2013-01-13 2:11 ` [PATCH 5/8] staging/comedi/cb_das16_cs: " Peter Huewe
@ 2013-01-13 2:11 ` Peter Huewe
2013-01-13 2:11 ` [PATCH 7/8] staging/comedi/ni_daq_700: " Peter Huewe
` (3 subsequent siblings)
8 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-13 2:11 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/das08_cs.c | 26 +-------------------------
1 files changed, 1 insertions(+), 25 deletions(-)
diff --git a/drivers/staging/comedi/drivers/das08_cs.c b/drivers/staging/comedi/drivers/das08_cs.c
index 0242623..73a2418 100644
--- a/drivers/staging/comedi/drivers/das08_cs.c
+++ b/drivers/staging/comedi/drivers/das08_cs.c
@@ -181,31 +181,7 @@ static struct pcmcia_driver das08_cs_driver = {
.id_table = das08_cs_id_table,
};
-static int __init das08_cs_init_module(void)
-{
- int ret;
-
- ret = comedi_driver_register(&driver_das08_cs);
- if (ret < 0)
- return ret;
-
- ret = pcmcia_register_driver(&das08_cs_driver);
- if (ret < 0) {
- comedi_driver_unregister(&driver_das08_cs);
- return ret;
- }
-
- return 0;
-
-}
-module_init(das08_cs_init_module);
-
-static void __exit das08_cs_exit_module(void)
-{
- pcmcia_unregister_driver(&das08_cs_driver);
- comedi_driver_unregister(&driver_das08_cs);
-}
-module_exit(das08_cs_exit_module);
+module_comedi_pcmcia_driver(driver_das08_cs, das08_cs_driver);
MODULE_AUTHOR("David A. Schleef <ds@schleef.org>, "
"Frank Mori Hess <fmhess@users.sourceforge.net>");
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 7/8] staging/comedi/ni_daq_700: Convert to module_comedi_pcmcia_driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
` (4 preceding siblings ...)
2013-01-13 2:11 ` [PATCH 6/8] staging/comedi/das08_cs: " Peter Huewe
@ 2013-01-13 2:11 ` Peter Huewe
2013-01-13 2:11 ` [PATCH 8/8] staging/comedi/ni_labpc_cs: " Peter Huewe
` (2 subsequent siblings)
8 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-13 2:11 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/ni_daq_700.c | 25 +------------------------
1 files changed, 1 insertions(+), 24 deletions(-)
diff --git a/drivers/staging/comedi/drivers/ni_daq_700.c b/drivers/staging/comedi/drivers/ni_daq_700.c
index 68d7c6a..ff0e199 100644
--- a/drivers/staging/comedi/drivers/ni_daq_700.c
+++ b/drivers/staging/comedi/drivers/ni_daq_700.c
@@ -334,30 +334,7 @@ static struct pcmcia_driver daq700_cs_driver = {
.id_table = daq700_cs_ids,
};
-static int __init daq700_cs_init(void)
-{
- int ret;
-
- ret = comedi_driver_register(&daq700_driver);
- if (ret < 0)
- return ret;
-
- ret = pcmcia_register_driver(&daq700_cs_driver);
- if (ret < 0) {
- comedi_driver_unregister(&daq700_driver);
- return ret;
- }
-
- return 0;
-}
-module_init(daq700_cs_init);
-
-static void __exit daq700_cs_exit(void)
-{
- pcmcia_unregister_driver(&daq700_cs_driver);
- comedi_driver_unregister(&daq700_driver);
-}
-module_exit(daq700_cs_exit);
+module_comedi_pcmcia_driver(daq700_driver, daq700_cs_driver);
MODULE_AUTHOR("Fred Brooks <nsaspook@nsaspook.com>");
MODULE_DESCRIPTION(
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 8/8] staging/comedi/ni_labpc_cs: Convert to module_comedi_pcmcia_driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
` (5 preceding siblings ...)
2013-01-13 2:11 ` [PATCH 7/8] staging/comedi/ni_daq_700: " Peter Huewe
@ 2013-01-13 2:11 ` Peter Huewe
2013-01-14 11:19 ` [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Ian Abbott
2013-01-14 16:44 ` H Hartley Sweeten
8 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-13 2:11 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/ni_labpc_cs.c | 31 +-------------------------
1 files changed, 1 insertions(+), 30 deletions(-)
diff --git a/drivers/staging/comedi/drivers/ni_labpc_cs.c b/drivers/staging/comedi/drivers/ni_labpc_cs.c
index bfe19fa..b26496d 100644
--- a/drivers/staging/comedi/drivers/ni_labpc_cs.c
+++ b/drivers/staging/comedi/drivers/ni_labpc_cs.c
@@ -282,33 +282,4 @@ static struct pcmcia_driver labpc_cs_driver = {
.name = "daqcard-1200",
};
-static int __init init_labpc_cs(void)
-{
- pcmcia_register_driver(&labpc_cs_driver);
- return 0;
-}
-
-static void __exit exit_labpc_cs(void)
-{
- pcmcia_unregister_driver(&labpc_cs_driver);
-}
-
-static int __init labpc_init_module(void)
-{
- int ret;
-
- ret = init_labpc_cs();
- if (ret < 0)
- return ret;
-
- return comedi_driver_register(&driver_labpc_cs);
-}
-
-static void __exit labpc_exit_module(void)
-{
- exit_labpc_cs();
- comedi_driver_unregister(&driver_labpc_cs);
-}
-
-module_init(labpc_init_module);
-module_exit(labpc_exit_module);
+module_comedi_pcmcia_driver(driver_labpc_cs, labpc_cs_driver);
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
` (6 preceding siblings ...)
2013-01-13 2:11 ` [PATCH 8/8] staging/comedi/ni_labpc_cs: " Peter Huewe
@ 2013-01-14 11:19 ` Ian Abbott
2013-01-14 16:44 ` H Hartley Sweeten
8 siblings, 0 replies; 19+ messages in thread
From: Ian Abbott @ 2013-01-14 11:19 UTC (permalink / raw)
To: Peter Huewe
Cc: Greg Kroah-Hartman, H Hartley Sweeten, Ian Abbott, Mori Hess,
YAMANE Toshiaki, devel@driverdev.osuosl.org,
linux-kernel@vger.kernel.org
On 2013-01-13 02:11, Peter Huewe wrote:
> 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>
> ---
> drivers/staging/comedi/comedidev.h | 22 ++++++++++++++++++++++
> drivers/staging/comedi/drivers.c | 34 ++++++++++++++++++++++++++++++++++
> 2 files changed, 56 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/staging/comedi/comedidev.h b/drivers/staging/comedi/comedidev.h
> index 692e1e6..ccb22dd 100644
> --- a/drivers/staging/comedi/comedidev.h
> +++ b/drivers/staging/comedi/comedidev.h
> @@ -41,6 +41,9 @@
> #include <linux/io.h>
> #include <linux/timer.h>
> #include <linux/pci.h>
> +#include <pcmcia/cistpl.h>
> +#include <pcmcia/cisreg.h>
> +#include <pcmcia/ds.h>
Do you need all those #includes? Perhaps you could just have an
incomplete declaration of struct pcmcia_driver as follows:
struct pcmcia_driver;
comedidev.h already does the same thing for struct usb_driver.
> #include <linux/usb.h>
>
> #include "comedi.h"
> @@ -342,6 +345,25 @@ 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))
>
> +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 *);
> diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
> index 50cf498..17a9e35 100644
> --- a/drivers/staging/comedi/drivers.c
> +++ b/drivers/staging/comedi/drivers.c
> @@ -24,6 +24,9 @@
> #include <linux/device.h>
> #include <linux/module.h>
> #include <linux/pci.h>
> +#include <pcmcia/cistpl.h>
> +#include <pcmcia/cisreg.h>
> +#include <pcmcia/ds.h>
> #include <linux/usb.h>
> #include <linux/errno.h>
> #include <linux/kconfig.h>
> @@ -958,6 +961,37 @@ void comedi_pci_driver_unregister(struct comedi_driver *comedi_driver,
> }
> EXPORT_SYMBOL_GPL(comedi_pci_driver_unregister);
>
> +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;
> +
> + /* FIXME: Remove this test after auditing all comedi pci drivers */
That comment was cut-n-pasted, but needs editing for PCMCIA!
> + if (!pcmcia_driver->name)
> + pcmcia_driver->name = comedi_driver->driver_name;
> +
> + 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);
> +
I'm pretty sure you'll need to enclose the above function definitions
form comedi_pcmcia_driver_register() and
comedi_pcmcia_driver_unregister() with the lines
#if IS_ENABLED(CONFIG_PCMCIA)
...
#endif
Otherwise it will fail to compile when PCMCIA is disabled in the kernel
config. (This was also necessary for USB.)
> #if IS_ENABLED(CONFIG_USB)
>
> int comedi_usb_driver_register(struct comedi_driver *comedi_driver,
>
--
-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=-
-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
^ permalink raw reply [flat|nested] 19+ messages in thread
* RE: [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
` (7 preceding siblings ...)
2013-01-14 11:19 ` [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Ian Abbott
@ 2013-01-14 16:44 ` H Hartley Sweeten
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
8 siblings, 1 reply; 19+ messages in thread
From: H Hartley Sweeten @ 2013-01-14 16:44 UTC (permalink / raw)
To: Peter Huewe, Greg Kroah-Hartman
Cc: Ian Abbott, Mori Hess, YAMANE Toshiaki,
devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org
On Saturday, January 12, 2013 7:11 PM, Peter Huewe wrote:
> 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>
> ---
> drivers/staging/comedi/comedidev.h | 22 ++++++++++++++++++++++
> drivers/staging/comedi/drivers.c | 34 ++++++++++++++++++++++++++++++++++
> 2 files changed, 56 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/staging/comedi/comedidev.h b/drivers/staging/comedi/comedidev.h
> index 692e1e6..ccb22dd 100644
> --- a/drivers/staging/comedi/comedidev.h
> +++ b/drivers/staging/comedi/comedidev.h
> @@ -41,6 +41,9 @@
> #include <linux/io.h>
> #include <linux/timer.h>
> #include <linux/pci.h>
> +#include <pcmcia/cistpl.h>
> +#include <pcmcia/cisreg.h>
> +#include <pcmcia/ds.h>
Are these includes actually needed here?
We need to work on getting rid of relying on comedidev.h to include everything,
> #include <linux/usb.h>
>
> #include "comedi.h"
> @@ -342,6 +345,25 @@ 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))
>
> +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 *);
> diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
> index 50cf498..17a9e35 100644
> --- a/drivers/staging/comedi/drivers.c
> +++ b/drivers/staging/comedi/drivers.c
> @@ -24,6 +24,9 @@
> #include <linux/device.h>
> #include <linux/module.h>
> #include <linux/pci.h>
> +#include <pcmcia/cistpl.h>
> +#include <pcmcia/cisreg.h>
> +#include <pcmcia/ds.h>
> #include <linux/usb.h>
> #include <linux/errno.h>
> #include <linux/kconfig.h>
> @@ -958,6 +961,37 @@ void comedi_pci_driver_unregister(struct comedi_driver *comedi_driver,
> }
> EXPORT_SYMBOL_GPL(comedi_pci_driver_unregister);
>
> +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;
> +
> + /* FIXME: Remove this test after auditing all comedi pci drivers */
> + if (!pcmcia_driver->name)
> + pcmcia_driver->name = comedi_driver->driver_name;
This chunk should not be here. All the comedi pcmcia drivers have the 'name'
field properly initialized.
> +
> + 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);
> +
> #if IS_ENABLED(CONFIG_USB)
>
> int comedi_usb_driver_register(struct comedi_driver *comedi_driver,
Regards,
Hartley
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/8 v2] staging/comedi: Add macro for registering a comedi PCMCIA driver
2013-01-14 16:44 ` H Hartley Sweeten
@ 2013-01-14 21:00 ` Peter Huewe
2013-01-14 21:00 ` [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver Peter Huewe
` (7 more replies)
0 siblings, 8 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-14 21:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
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>
---
v2:
Removed unnecessary stuff. Thanks Hartley&Ian
drivers/staging/comedi/comedidev.h | 21 +++++++++++++++++++++
drivers/staging/comedi/drivers.c | 32 ++++++++++++++++++++++++++++++++
2 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/drivers/staging/comedi/comedidev.h b/drivers/staging/comedi/comedidev.h
index 34a85d3..d0248ed 100644
--- a/drivers/staging/comedi/comedidev.h
+++ b/drivers/staging/comedi/comedidev.h
@@ -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 *);
diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
index b67a0c9..bd9c678 100644
--- a/drivers/staging/comedi/drivers.c
+++ b/drivers/staging/comedi/drivers.c
@@ -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>
@@ -954,6 +956,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,
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
@ 2013-01-14 21:00 ` Peter Huewe
2013-01-14 21:00 ` [PATCH 3/8] staging/comedi/ni_mio_cs: " Peter Huewe
` (6 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-14 21:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/ni_daq_dio24.c | 29 +------------------------
1 files changed, 1 insertions(+), 28 deletions(-)
diff --git a/drivers/staging/comedi/drivers/ni_daq_dio24.c b/drivers/staging/comedi/drivers/ni_daq_dio24.c
index 7b33335..dd22691 100644
--- a/drivers/staging/comedi/drivers/ni_daq_dio24.c
+++ b/drivers/staging/comedi/drivers/ni_daq_dio24.c
@@ -318,31 +318,4 @@ static struct pcmcia_driver dio24_cs_driver = {
.name = "ni_daq_dio24",
};
-static int __init init_dio24_cs(void)
-{
- printk("ni_daq_dio24: HOLA SOY YO!\n");
- pcmcia_register_driver(&dio24_cs_driver);
- return 0;
-}
-
-static void __exit exit_dio24_cs(void)
-{
- pcmcia_unregister_driver(&dio24_cs_driver);
-}
-
-int __init init_module(void)
-{
- int ret;
-
- ret = init_dio24_cs();
- if (ret < 0)
- return ret;
-
- return comedi_driver_register(&driver_dio24);
-}
-
-void __exit cleanup_module(void)
-{
- exit_dio24_cs();
- comedi_driver_unregister(&driver_dio24);
-}
+module_comedi_pcmcia_driver(driver_dio24, dio24_cs_driver);
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 3/8] staging/comedi/ni_mio_cs: Convert to module_comedi_pcmcia_driver
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
2013-01-14 21:00 ` [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver Peter Huewe
@ 2013-01-14 21:00 ` Peter Huewe
2013-01-14 21:00 ` [PATCH 4/8] staging/comedi/quatech_daqp_cs: " Peter Huewe
` (5 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-14 21:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Also removed the superflous #ifdef MODULE
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/ni_mio_cs.c | 20 +-------------------
1 files changed, 1 insertions(+), 19 deletions(-)
diff --git a/drivers/staging/comedi/drivers/ni_mio_cs.c b/drivers/staging/comedi/drivers/ni_mio_cs.c
index 76c6a13..b5c5d58 100644
--- a/drivers/staging/comedi/drivers/ni_mio_cs.c
+++ b/drivers/staging/comedi/drivers/ni_mio_cs.c
@@ -408,8 +408,6 @@ static int ni_getboardtype(struct comedi_device *dev,
return 0;
}
-#ifdef MODULE
-
static const struct pcmcia_device_id ni_mio_cs_ids[] = {
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010d), /* DAQCard-ai-16xe-50 */
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010c), /* DAQCard-ai-16e-4 */
@@ -434,20 +432,4 @@ static struct pcmcia_driver ni_mio_cs_driver = {
.name = "ni_mio_cs",
};
-int init_module(void)
-{
- pcmcia_register_driver(&ni_mio_cs_driver);
- comedi_driver_register(&driver_ni_mio_cs);
- return 0;
-}
-
-void cleanup_module(void)
-{
- pcmcia_unregister_driver(&ni_mio_cs_driver);
-#if 0
- while (cur_dev != NULL)
- cs_detach(cur_dev->handle);
-#endif
- comedi_driver_unregister(&driver_ni_mio_cs);
-}
-#endif
+module_comedi_pcmcia_driver(driver_ni_mio_cs, ni_mio_cs_driver);
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 4/8] staging/comedi/quatech_daqp_cs: Convert to module_comedi_pcmcia_driver
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
2013-01-14 21:00 ` [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver Peter Huewe
2013-01-14 21:00 ` [PATCH 3/8] staging/comedi/ni_mio_cs: " Peter Huewe
@ 2013-01-14 21:00 ` Peter Huewe
2013-01-14 21:00 ` [PATCH 5/8] staging/comedi/cb_das16_cs: " Peter Huewe
` (4 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-14 21:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Also removed the superflous #ifdef MODULE
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/quatech_daqp_cs.c | 18 +-----------------
1 files changed, 1 insertions(+), 17 deletions(-)
diff --git a/drivers/staging/comedi/drivers/quatech_daqp_cs.c b/drivers/staging/comedi/drivers/quatech_daqp_cs.c
index ef0cdaa..55d8cc6 100644
--- a/drivers/staging/comedi/drivers/quatech_daqp_cs.c
+++ b/drivers/staging/comedi/drivers/quatech_daqp_cs.c
@@ -1038,9 +1038,6 @@ static int daqp_cs_resume(struct pcmcia_device *link)
}
/*====================================================================*/
-
-#ifdef MODULE
-
static const struct pcmcia_device_id daqp_cs_id_table[] = {
PCMCIA_DEVICE_MANF_CARD(0x0137, 0x0027),
PCMCIA_DEVICE_NULL
@@ -1061,17 +1058,4 @@ static struct pcmcia_driver daqp_cs_driver = {
.name = "quatech_daqp_cs",
};
-int __init init_module(void)
-{
- pcmcia_register_driver(&daqp_cs_driver);
- comedi_driver_register(&driver_daqp);
- return 0;
-}
-
-void __exit cleanup_module(void)
-{
- comedi_driver_unregister(&driver_daqp);
- pcmcia_unregister_driver(&daqp_cs_driver);
-}
-
-#endif
+module_comedi_pcmcia_driver(driver_daqp, daqp_cs_driver);
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 5/8] staging/comedi/cb_das16_cs: Convert to module_comedi_pcmcia_driver
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
` (2 preceding siblings ...)
2013-01-14 21:00 ` [PATCH 4/8] staging/comedi/quatech_daqp_cs: " Peter Huewe
@ 2013-01-14 21:00 ` Peter Huewe
2013-01-14 21:00 ` [PATCH 6/8] staging/comedi/das08_cs: " Peter Huewe
` (3 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-14 21:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/cb_das16_cs.c | 25 +------------------------
1 files changed, 1 insertions(+), 24 deletions(-)
diff --git a/drivers/staging/comedi/drivers/cb_das16_cs.c b/drivers/staging/comedi/drivers/cb_das16_cs.c
index 93731de..e253fc0 100644
--- a/drivers/staging/comedi/drivers/cb_das16_cs.c
+++ b/drivers/staging/comedi/drivers/cb_das16_cs.c
@@ -548,30 +548,7 @@ static struct pcmcia_driver das16cs_driver = {
.id_table = das16cs_id_table,
};
-static int __init das16cs_init(void)
-{
- int ret;
-
- ret = comedi_driver_register(&driver_das16cs);
- if (ret < 0)
- return ret;
-
- ret = pcmcia_register_driver(&das16cs_driver);
- if (ret < 0) {
- comedi_driver_unregister(&driver_das16cs);
- return ret;
- }
-
- return 0;
-}
-module_init(das16cs_init);
-
-static void __exit das16cs_exit(void)
-{
- pcmcia_unregister_driver(&das16cs_driver);
- comedi_driver_unregister(&driver_das16cs);
-}
-module_exit(das16cs_exit);
+module_comedi_pcmcia_driver(driver_das16cs, das16cs_driver);
MODULE_AUTHOR("David A. Schleef <ds@schleef.org>");
MODULE_DESCRIPTION("Comedi driver for Computer Boards PC-CARD DAS16/16");
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 6/8] staging/comedi/das08_cs: Convert to module_comedi_pcmcia_driver
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
` (3 preceding siblings ...)
2013-01-14 21:00 ` [PATCH 5/8] staging/comedi/cb_das16_cs: " Peter Huewe
@ 2013-01-14 21:00 ` Peter Huewe
2013-01-14 21:00 ` [PATCH 7/8] staging/comedi/ni_daq_700: " Peter Huewe
` (2 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-14 21:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/das08_cs.c | 26 +-------------------------
1 files changed, 1 insertions(+), 25 deletions(-)
diff --git a/drivers/staging/comedi/drivers/das08_cs.c b/drivers/staging/comedi/drivers/das08_cs.c
index 0242623..73a2418 100644
--- a/drivers/staging/comedi/drivers/das08_cs.c
+++ b/drivers/staging/comedi/drivers/das08_cs.c
@@ -181,31 +181,7 @@ static struct pcmcia_driver das08_cs_driver = {
.id_table = das08_cs_id_table,
};
-static int __init das08_cs_init_module(void)
-{
- int ret;
-
- ret = comedi_driver_register(&driver_das08_cs);
- if (ret < 0)
- return ret;
-
- ret = pcmcia_register_driver(&das08_cs_driver);
- if (ret < 0) {
- comedi_driver_unregister(&driver_das08_cs);
- return ret;
- }
-
- return 0;
-
-}
-module_init(das08_cs_init_module);
-
-static void __exit das08_cs_exit_module(void)
-{
- pcmcia_unregister_driver(&das08_cs_driver);
- comedi_driver_unregister(&driver_das08_cs);
-}
-module_exit(das08_cs_exit_module);
+module_comedi_pcmcia_driver(driver_das08_cs, das08_cs_driver);
MODULE_AUTHOR("David A. Schleef <ds@schleef.org>, "
"Frank Mori Hess <fmhess@users.sourceforge.net>");
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 7/8] staging/comedi/ni_daq_700: Convert to module_comedi_pcmcia_driver
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
` (4 preceding siblings ...)
2013-01-14 21:00 ` [PATCH 6/8] staging/comedi/das08_cs: " Peter Huewe
@ 2013-01-14 21:00 ` Peter Huewe
2013-01-14 21:00 ` [PATCH 8/8] staging/comedi/ni_labpc_cs: " Peter Huewe
2013-01-15 10:36 ` [PATCH 1/8 v2] staging/comedi: Add macro for registering a comedi PCMCIA driver Ian Abbott
7 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-14 21:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/ni_daq_700.c | 25 +------------------------
1 files changed, 1 insertions(+), 24 deletions(-)
diff --git a/drivers/staging/comedi/drivers/ni_daq_700.c b/drivers/staging/comedi/drivers/ni_daq_700.c
index 68d7c6a..ff0e199 100644
--- a/drivers/staging/comedi/drivers/ni_daq_700.c
+++ b/drivers/staging/comedi/drivers/ni_daq_700.c
@@ -334,30 +334,7 @@ static struct pcmcia_driver daq700_cs_driver = {
.id_table = daq700_cs_ids,
};
-static int __init daq700_cs_init(void)
-{
- int ret;
-
- ret = comedi_driver_register(&daq700_driver);
- if (ret < 0)
- return ret;
-
- ret = pcmcia_register_driver(&daq700_cs_driver);
- if (ret < 0) {
- comedi_driver_unregister(&daq700_driver);
- return ret;
- }
-
- return 0;
-}
-module_init(daq700_cs_init);
-
-static void __exit daq700_cs_exit(void)
-{
- pcmcia_unregister_driver(&daq700_cs_driver);
- comedi_driver_unregister(&daq700_driver);
-}
-module_exit(daq700_cs_exit);
+module_comedi_pcmcia_driver(daq700_driver, daq700_cs_driver);
MODULE_AUTHOR("Fred Brooks <nsaspook@nsaspook.com>");
MODULE_DESCRIPTION(
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 8/8] staging/comedi/ni_labpc_cs: Convert to module_comedi_pcmcia_driver
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
` (5 preceding siblings ...)
2013-01-14 21:00 ` [PATCH 7/8] staging/comedi/ni_daq_700: " Peter Huewe
@ 2013-01-14 21:00 ` Peter Huewe
2013-01-15 10:36 ` [PATCH 1/8 v2] staging/comedi: Add macro for registering a comedi PCMCIA driver Ian Abbott
7 siblings, 0 replies; 19+ messages in thread
From: Peter Huewe @ 2013-01-14 21:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: H Hartley Sweeten, Ian Abbott, Mori Hess, Peter Huewe,
YAMANE Toshiaki, devel, linux-kernel
This patch removes the boring init/exit functions with the new
module_comedi_pcmcia_driver macro.
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
drivers/staging/comedi/drivers/ni_labpc_cs.c | 31 +-------------------------
1 files changed, 1 insertions(+), 30 deletions(-)
diff --git a/drivers/staging/comedi/drivers/ni_labpc_cs.c b/drivers/staging/comedi/drivers/ni_labpc_cs.c
index bfe19fa..b26496d 100644
--- a/drivers/staging/comedi/drivers/ni_labpc_cs.c
+++ b/drivers/staging/comedi/drivers/ni_labpc_cs.c
@@ -282,33 +282,4 @@ static struct pcmcia_driver labpc_cs_driver = {
.name = "daqcard-1200",
};
-static int __init init_labpc_cs(void)
-{
- pcmcia_register_driver(&labpc_cs_driver);
- return 0;
-}
-
-static void __exit exit_labpc_cs(void)
-{
- pcmcia_unregister_driver(&labpc_cs_driver);
-}
-
-static int __init labpc_init_module(void)
-{
- int ret;
-
- ret = init_labpc_cs();
- if (ret < 0)
- return ret;
-
- return comedi_driver_register(&driver_labpc_cs);
-}
-
-static void __exit labpc_exit_module(void)
-{
- exit_labpc_cs();
- comedi_driver_unregister(&driver_labpc_cs);
-}
-
-module_init(labpc_init_module);
-module_exit(labpc_exit_module);
+module_comedi_pcmcia_driver(driver_labpc_cs, labpc_cs_driver);
--
1.7.8.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 1/8 v2] staging/comedi: Add macro for registering a comedi PCMCIA driver
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
` (6 preceding siblings ...)
2013-01-14 21:00 ` [PATCH 8/8] staging/comedi/ni_labpc_cs: " Peter Huewe
@ 2013-01-15 10:36 ` Ian Abbott
7 siblings, 0 replies; 19+ messages in thread
From: Ian Abbott @ 2013-01-15 10:36 UTC (permalink / raw)
To: Peter Huewe
Cc: Greg Kroah-Hartman, H Hartley Sweeten, Ian Abbott, Mori Hess,
YAMANE Toshiaki, devel@driverdev.osuosl.org,
linux-kernel@vger.kernel.org
On 2013-01-14 21:00, Peter Huewe wrote:
> 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>
> ---
> v2:
> Removed unnecessary stuff. Thanks Hartley&Ian
This looks (and builds with and without PCMCIA support) fine. Thanks!
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
(all 8 patches)
>
> drivers/staging/comedi/comedidev.h | 21 +++++++++++++++++++++
> drivers/staging/comedi/drivers.c | 32 ++++++++++++++++++++++++++++++++
> 2 files changed, 53 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/staging/comedi/comedidev.h b/drivers/staging/comedi/comedidev.h
> index 34a85d3..d0248ed 100644
> --- a/drivers/staging/comedi/comedidev.h
> +++ b/drivers/staging/comedi/comedidev.h
> @@ -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 *);
> diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
> index b67a0c9..bd9c678 100644
> --- a/drivers/staging/comedi/drivers.c
> +++ b/drivers/staging/comedi/drivers.c
> @@ -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>
> @@ -954,6 +956,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,
>
--
-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=-
-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2013-01-15 10:36 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-13 2:11 [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Peter Huewe
2013-01-13 2:11 ` [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver Peter Huewe
2013-01-13 2:11 ` [PATCH 3/8] staging/comedi/ni_mio_cs: " Peter Huewe
2013-01-13 2:11 ` [PATCH 4/8] staging/comedi/quatech_daqp_cs: " Peter Huewe
2013-01-13 2:11 ` [PATCH 5/8] staging/comedi/cb_das16_cs: " Peter Huewe
2013-01-13 2:11 ` [PATCH 6/8] staging/comedi/das08_cs: " Peter Huewe
2013-01-13 2:11 ` [PATCH 7/8] staging/comedi/ni_daq_700: " Peter Huewe
2013-01-13 2:11 ` [PATCH 8/8] staging/comedi/ni_labpc_cs: " Peter Huewe
2013-01-14 11:19 ` [PATCH 1/8] staging/comedi: Add macro for registering a comedi PCMCIA driver Ian Abbott
2013-01-14 16:44 ` H Hartley Sweeten
2013-01-14 21:00 ` [PATCH 1/8 v2] " Peter Huewe
2013-01-14 21:00 ` [PATCH 2/8] staging/comedi/ni_daq_dio24: Convert to module_comedi_pcmcia_driver Peter Huewe
2013-01-14 21:00 ` [PATCH 3/8] staging/comedi/ni_mio_cs: " Peter Huewe
2013-01-14 21:00 ` [PATCH 4/8] staging/comedi/quatech_daqp_cs: " Peter Huewe
2013-01-14 21:00 ` [PATCH 5/8] staging/comedi/cb_das16_cs: " Peter Huewe
2013-01-14 21:00 ` [PATCH 6/8] staging/comedi/das08_cs: " Peter Huewe
2013-01-14 21:00 ` [PATCH 7/8] staging/comedi/ni_daq_700: " Peter Huewe
2013-01-14 21:00 ` [PATCH 8/8] staging/comedi/ni_labpc_cs: " Peter Huewe
2013-01-15 10:36 ` [PATCH 1/8 v2] staging/comedi: Add macro for registering a comedi PCMCIA driver Ian Abbott
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.