Add a new config option to control the building of the PCMCIA IOCTL. Currently, it is not yet made public, though the help text is there already. Signed-off-by: Dominik Brodowski Index: 2.6.12-rc6+/drivers/pcmcia/Kconfig =================================================================== --- 2.6.12-rc6+.orig/drivers/pcmcia/Kconfig +++ 2.6.12-rc6+/drivers/pcmcia/Kconfig @@ -14,8 +14,8 @@ config PCCARD Say Y here if you want to attach PCMCIA- or PC-cards to your Linux computer. These are credit-card size devices such as network cards, modems or hard drives often used with laptops computers. There are - actually two varieties of these cards: the older 16 bit PCMCIA cards - and the newer 32 bit CardBus cards. + actually two varieties of these cards: 16 bit PCMCIA and 32 bit + CardBus cards. To compile this driver as modules, choose M here: the module will be called pcmcia_core. @@ -48,10 +48,9 @@ config PCMCIA PC-cards are such 16-bit PCMCIA cards, so unless you know you're only using 32-bit CardBus cards, say Y or M here. - To use 16-bit PCMCIA cards, you will need supporting software from - David Hinds' pcmcia-cs package (see the file - for location). Please also read the PCMCIA-HOWTO, available from - . + To use 16-bit PCMCIA cards, you will need supporting software in + most cases. (see the file for + location and details). To compile this driver as modules, choose M here: the module will be called pcmcia. @@ -72,6 +71,21 @@ config PCMCIA_LOAD_CIS If unsure, say Y. +config PCMCIA_IOCTL + bool + depends on PCMCIA + default y + help + If you say Y here, the deprecated ioctl interface to the PCMCIA + subsystem will be built. It is needed by cardmgr and cardctl + (pcmcia-cs) to function properly. + + If you do not use the new pcmciautils package, and have a + yenta, Cirrus PD6729, i82092, i82365 or tcic compatible bridge, + you need to say Y here to be able to use 16-bit PCMCIA cards. + + If unsure, say Y. + config CARDBUS bool "32-bit CardBus support" depends on PCI @@ -91,8 +105,6 @@ comment "PC-card bridges" config YENTA tristate "CardBus yenta-compatible bridge support" - depends on PCI -#fixme: remove dependendcy on CARDBUS depends on CARDBUS select PCCARD_NONSTATIC ---help--- Index: 2.6.12-rc6+/drivers/pcmcia/ds.c =================================================================== --- 2.6.12-rc6+.orig/drivers/pcmcia/ds.c +++ 2.6.12-rc6+/drivers/pcmcia/ds.c @@ -116,8 +116,13 @@ static struct bus_type pcmcia_bus_type; #define DS_SOCKET_DEAD 0x80 /*====================================================================*/ +#ifdef CONFIG_PCMCIA_IOCTL static int major_dev = -1; +static struct pcmcia_bus_socket * get_socket_info_by_nr(unsigned int nr); +static struct pcmcia_driver * get_pcmcia_driver (dev_info_t *dev_info); + +#endif static int unbind_request(struct pcmcia_bus_socket *s); @@ -356,8 +361,6 @@ static inline int pcmcia_load_firmware(s /*======================================================================*/ -static struct pcmcia_driver * get_pcmcia_driver (dev_info_t *dev_info); -static struct pcmcia_bus_socket * get_socket_info_by_nr(unsigned int nr); static void pcmcia_release_bus_socket(struct kref *refcount) { @@ -411,6 +414,7 @@ void pcmcia_unregister_driver(struct pcm } EXPORT_SYMBOL(pcmcia_unregister_driver); +#ifdef CONFIG_PCMCIA_IOCTL #ifdef CONFIG_PROC_FS static struct proc_dir_entry *proc_pccard = NULL; @@ -443,6 +447,7 @@ static int proc_read_drivers(char *buf, return (p - buf); } #endif +#endif /* pcmcia_device handling */ @@ -997,6 +1002,8 @@ static struct device_attribute pcmcia_de ======================================================================*/ +#ifdef CONFIG_PCMCIA_IOCTL + static int queue_empty(user_info_t *user) { return (user->event_head == user->event_tail); @@ -1023,6 +1030,11 @@ static void handle_event(struct pcmcia_b queue_event(user, event); wake_up_interruptible(&s->queue); } +#else +static inline void handle_event(struct pcmcia_bus_socket *s, event_t event) { return; } +static inline int handle_request(struct pcmcia_bus_socket *s, event_t event) { return CS_SUCCESS; } +#endif + /*====================================================================== @@ -1141,6 +1153,8 @@ static int ds_event(struct pcmcia_socket ======================================================================*/ +#ifdef CONFIG_PCMCIA_IOCTL + static int bind_request(struct pcmcia_bus_socket *s, bind_info_t *bind_info) { struct pcmcia_driver *p_drv; @@ -1236,6 +1250,8 @@ rescan: return (ret); } /* bind_request */ +#endif + int pcmcia_register_client(client_handle_t *handle, client_reg_t *req) { @@ -1333,6 +1349,7 @@ EXPORT_SYMBOL(pcmcia_register_client); /*====================================================================*/ +#ifdef CONFIG_PCMCIA_IOCTL extern struct pci_bus *pcmcia_lookup_bus(struct pcmcia_socket *s); @@ -1421,6 +1438,8 @@ static int get_device_info(struct pcmcia return (ret); } /* get_device_info */ +#endif + /*====================================================================*/ /* unbind _all_ devices attached to a given pcmcia_bus_socket. The @@ -1494,6 +1513,8 @@ EXPORT_SYMBOL(pcmcia_deregister_client); ======================================================================*/ +#ifdef CONFIG_PCMCIA_IOCTL + static int ds_open(struct inode *inode, struct file *file) { socket_t i = iminor(inode); @@ -1854,6 +1875,8 @@ static struct file_operations ds_fops = .poll = ds_poll, }; +#endif + static int __devinit pcmcia_bus_add_socket(struct class_device *class_dev) { struct pcmcia_socket *socket = class_get_devdata(class_dev); @@ -1938,13 +1961,16 @@ static struct bus_type pcmcia_bus_type = static int __init init_pcmcia_bus(void) { +#ifdef CONFIG_PCMCIA_IOCTL int i; +#endif spin_lock_init(&pcmcia_dev_list_lock); bus_register(&pcmcia_bus_type); class_interface_register(&pcmcia_bus_interface); +#ifdef CONFIG_PCMCIA_IOCTL /* Set up character device for user mode clients */ i = register_chrdev(0, "pcmcia", &ds_fops); if (i < 0) @@ -1958,6 +1984,7 @@ static int __init init_pcmcia_bus(void) if (proc_pccard) create_proc_read_entry("drivers",0,proc_pccard,proc_read_drivers,NULL); #endif +#endif return 0; } @@ -1969,6 +1996,7 @@ static void __exit exit_pcmcia_bus(void) { class_interface_unregister(&pcmcia_bus_interface); +#ifdef CONFIG_PCMCIA_IOCTL #ifdef CONFIG_PROC_FS if (proc_pccard) { remove_proc_entry("drivers", proc_pccard); @@ -1977,6 +2005,7 @@ static void __exit exit_pcmcia_bus(void) #endif if (major_dev != -1) unregister_chrdev(major_dev, "pcmcia"); +#endif bus_unregister(&pcmcia_bus_type); } @@ -1985,7 +2014,7 @@ module_exit(exit_pcmcia_bus); /* helpers for backwards-compatible functions */ - +#ifdef CONFIG_PCMCIA_IOCTL static struct pcmcia_bus_socket * get_socket_info_by_nr(unsigned int nr) { struct pcmcia_socket * s = pcmcia_get_socket_by_nr(nr); @@ -2010,5 +2039,6 @@ static struct pcmcia_driver * get_pcmcia return (p_drv); } +#endif MODULE_ALIAS("ds");