Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: comedi: conditionally build in PCMCIA driver support

Separate the comedi_pcmcia_* functions out of drivers.c into a new
source file, comedi_pcmcia.c. This allows conditionally building
support for comedi pcmcia drivers into the comedi core without the
need for the #if'defery. Fix the Kconfig and Makefile appropriately.

Group all the comedi_pcmcia_* prototypes into one place in comedidev.h.
Protect these prototypes with an #ifdef so that building a comedi
pcmcia driver without PCMCIA support will cause a build error. This
will normally not happen as long as the comedi pcmcia driver is placed
in the proper group in the Kconfig.

Remove the #include <pcmcia/*.h> from drivers.c. These includes are only
needed by the comedi pcmcia driver support code and the pcmcia drivers.
The include should occur in those files.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

H Hartley Sweeten and committed by
Greg Kroah-Hartman
309231d7 33782dd5

+102 -58
+1 -5
drivers/staging/comedi/Kconfig
··· 1090 1090 bool "Comedi PCMCIA drivers" 1091 1091 depends on PCMCIA 1092 1092 ---help--- 1093 - Enable comedi PCMCIA and PCCARD drivers to be built 1094 - 1095 - Note that the answer to this question won't directly affect the 1096 - kernel: saying N will just cause the configurator to skip all 1097 - the questions about PCMCIA comedi drivers. 1093 + Enable support for comedi PCMCIA drivers. 1098 1094 1099 1095 if COMEDI_PCMCIA_DRIVERS 1100 1096
+1
drivers/staging/comedi/Makefile
··· 1 1 comedi-y := comedi_fops.o range.o drivers.o \ 2 2 comedi_buf.o 3 3 comedi-$(CONFIG_COMEDI_PCI_DRIVERS) += comedi_pci.o 4 + comedi-$(CONFIG_COMEDI_PCMCIA_DRIVERS) += comedi_pcmcia.o 4 5 comedi-$(CONFIG_COMEDI_USB_DRIVERS) += comedi_usb.o 5 6 comedi-$(CONFIG_PROC_FS) += proc.o 6 7 comedi-$(CONFIG_COMPAT) += comedi_compat32.o
+73
drivers/staging/comedi/comedi_pcmcia.c
··· 1 + /* 2 + * comedi_pcmcia.c 3 + * Comedi PCMCIA driver specific functions. 4 + * 5 + * COMEDI - Linux Control and Measurement Device Interface 6 + * Copyright (C) 1997-2000 David A. Schleef <ds@schleef.org> 7 + * 8 + * This program is free software; you can redistribute it and/or modify 9 + * it under the terms of the GNU General Public License as published by 10 + * the Free Software Foundation; either version 2 of the License, or 11 + * (at your option) any later version. 12 + * 13 + * This program is distributed in the hope that it will be useful, 14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 + * GNU General Public License for more details. 17 + * 18 + * You should have received a copy of the GNU General Public License 19 + * along with this program; if not, write to the Free Software 20 + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 + */ 22 + 23 + #include <linux/kernel.h> 24 + 25 + #include <pcmcia/cistpl.h> 26 + #include <pcmcia/ds.h> 27 + 28 + #include "comedidev.h" 29 + 30 + /** 31 + * comedi_pcmcia_driver_register() - Register a comedi PCMCIA driver. 32 + * @comedi_driver: comedi_driver struct 33 + * @pcmcia_driver: pcmcia_driver struct 34 + * 35 + * This function is used for the module_init() of comedi USB drivers. 36 + * Do not call it directly, use the module_comedi_pcmcia_driver() helper 37 + * macro instead. 38 + */ 39 + int comedi_pcmcia_driver_register(struct comedi_driver *comedi_driver, 40 + struct pcmcia_driver *pcmcia_driver) 41 + { 42 + int ret; 43 + 44 + ret = comedi_driver_register(comedi_driver); 45 + if (ret < 0) 46 + return ret; 47 + 48 + ret = pcmcia_register_driver(pcmcia_driver); 49 + if (ret < 0) { 50 + comedi_driver_unregister(comedi_driver); 51 + return ret; 52 + } 53 + 54 + return 0; 55 + } 56 + EXPORT_SYMBOL_GPL(comedi_pcmcia_driver_register); 57 + 58 + /** 59 + * comedi_pcmcia_driver_unregister() - Unregister a comedi PCMCIA driver. 60 + * @comedi_driver: comedi_driver struct 61 + * @pcmcia_driver: pcmcia_driver struct 62 + * 63 + * This function is used for the module_exit() of comedi PCMCIA drivers. 64 + * Do not call it directly, use the module_comedi_pcmcia_driver() helper 65 + * macro instead. 66 + */ 67 + void comedi_pcmcia_driver_unregister(struct comedi_driver *comedi_driver, 68 + struct pcmcia_driver *pcmcia_driver) 69 + { 70 + pcmcia_unregister_driver(pcmcia_driver); 71 + comedi_driver_unregister(comedi_driver); 72 + } 73 + EXPORT_SYMBOL_GPL(comedi_pcmcia_driver_unregister);
+27 -21
drivers/staging/comedi/comedidev.h
··· 278 278 module_driver(__comedi_driver, comedi_driver_register, \ 279 279 comedi_driver_unregister) 280 280 281 - struct pcmcia_driver; 282 - 283 - int comedi_pcmcia_driver_register(struct comedi_driver *, 284 - struct pcmcia_driver *); 285 - void comedi_pcmcia_driver_unregister(struct comedi_driver *, 286 - struct pcmcia_driver *); 287 - 288 - /** 289 - * module_comedi_pcmcia_driver() - Helper macro for registering a comedi PCMCIA driver 290 - * @__comedi_driver: comedi_driver struct 291 - * @__pcmcia_driver: pcmcia_driver struct 292 - * 293 - * Helper macro for comedi PCMCIA drivers which do not do anything special 294 - * in module init/exit. This eliminates a lot of boilerplate. Each 295 - * module may only use this macro once, and calling it replaces 296 - * module_init() and module_exit() 297 - */ 298 - #define module_comedi_pcmcia_driver(__comedi_driver, __pcmcia_driver) \ 299 - module_driver(__comedi_driver, comedi_pcmcia_driver_register, \ 300 - comedi_pcmcia_driver_unregister, &(__pcmcia_driver)) 301 - 302 281 void init_polling(void); 303 282 void cleanup_polling(void); 304 283 void start_polling(struct comedi_device *); ··· 459 480 } 460 481 461 482 #endif /* CONFIG_COMEDI_PCI_DRIVERS */ 483 + 484 + #ifdef CONFIG_COMEDI_PCMCIA_DRIVERS 485 + 486 + /* comedi_pcmcia.c - comedi PCMCIA driver specific functions */ 487 + 488 + struct pcmcia_driver; 489 + 490 + int comedi_pcmcia_driver_register(struct comedi_driver *, 491 + struct pcmcia_driver *); 492 + void comedi_pcmcia_driver_unregister(struct comedi_driver *, 493 + struct pcmcia_driver *); 494 + 495 + /** 496 + * module_comedi_pcmcia_driver() - Helper macro for registering a comedi PCMCIA driver 497 + * @__comedi_driver: comedi_driver struct 498 + * @__pcmcia_driver: pcmcia_driver struct 499 + * 500 + * Helper macro for comedi PCMCIA drivers which do not do anything special 501 + * in module init/exit. This eliminates a lot of boilerplate. Each 502 + * module may only use this macro once, and calling it replaces 503 + * module_init() and module_exit() 504 + */ 505 + #define module_comedi_pcmcia_driver(__comedi_driver, __pcmcia_driver) \ 506 + module_driver(__comedi_driver, comedi_pcmcia_driver_register, \ 507 + comedi_pcmcia_driver_unregister, &(__pcmcia_driver)) 508 + 509 + #endif /* CONFIG_COMEDI_PCMCIA_DRIVERS */ 462 510 463 511 #ifdef CONFIG_COMEDI_USB_DRIVERS 464 512
-32
drivers/staging/comedi/drivers.c
··· 23 23 24 24 #include <linux/device.h> 25 25 #include <linux/module.h> 26 - #include <pcmcia/cistpl.h> 27 - #include <pcmcia/ds.h> 28 26 #include <linux/errno.h> 29 27 #include <linux/kconfig.h> 30 28 #include <linux/kernel.h> ··· 492 494 comedi_free_board_minor(minor); 493 495 } 494 496 EXPORT_SYMBOL_GPL(comedi_auto_unconfig); 495 - 496 - #if IS_ENABLED(CONFIG_PCMCIA) 497 - int comedi_pcmcia_driver_register(struct comedi_driver *comedi_driver, 498 - struct pcmcia_driver *pcmcia_driver) 499 - { 500 - int ret; 501 - 502 - ret = comedi_driver_register(comedi_driver); 503 - if (ret < 0) 504 - return ret; 505 - 506 - ret = pcmcia_register_driver(pcmcia_driver); 507 - if (ret < 0) { 508 - comedi_driver_unregister(comedi_driver); 509 - return ret; 510 - } 511 - 512 - return 0; 513 - } 514 - EXPORT_SYMBOL_GPL(comedi_pcmcia_driver_register); 515 - 516 - void comedi_pcmcia_driver_unregister(struct comedi_driver *comedi_driver, 517 - struct pcmcia_driver *pcmcia_driver) 518 - { 519 - pcmcia_unregister_driver(pcmcia_driver); 520 - comedi_driver_unregister(comedi_driver); 521 - } 522 - EXPORT_SYMBOL_GPL(comedi_pcmcia_driver_unregister); 523 - 524 - #endif