[patch 6/19] pcmcia: add a config option for the PCMICA ioctl
Dominik Brodowski
linux at dominikbrodowski.net
Sun Mar 20 05:43:25 EST 2005
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 <linux at dominikbrodowksi.net>
Index: 2.6.12-rc1/drivers/pcmcia/Kconfig
===================================================================
--- 2.6.12-rc1.orig/drivers/pcmcia/Kconfig 2005-03-19 11:56:15.000000000 +0100
+++ 2.6.12-rc1/drivers/pcmcia/Kconfig 2005-03-19 11:56:32.000000000 +0100
@@ -14,8 +14,8 @@
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 @@
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 <file:Documentation/Changes>
- for location). Please also read the PCMCIA-HOWTO, available from
- <http://www.tldp.org/docs.html#howto>.
+ To use 16-bit PCMCIA cards, you will need supporting software in
+ most cases. (see the file <file:Documentation/Changes> for
+ location and details).
To compile this driver as modules, choose M here: the
module will be called pcmcia.
@@ -72,6 +71,21 @@
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 @@
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-rc1/drivers/pcmcia/ds.c
===================================================================
--- 2.6.12-rc1.orig/drivers/pcmcia/ds.c 2005-03-19 11:56:15.000000000 +0100
+++ 2.6.12-rc1/drivers/pcmcia/ds.c 2005-03-19 11:56:32.000000000 +0100
@@ -116,8 +116,13 @@
#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 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 @@
}
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 @@
return (p - buf);
}
#endif
+#endif
/* pcmcia_device handling */
@@ -997,6 +1002,8 @@
======================================================================*/
+#ifdef CONFIG_PCMCIA_IOCTL
+
static int queue_empty(user_info_t *user)
{
return (user->event_head == user->event_tail);
@@ -1023,6 +1030,11 @@
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 @@
======================================================================*/
+#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 @@
return (ret);
} /* bind_request */
+#endif
+
int pcmcia_register_client(client_handle_t *handle, client_reg_t *req)
{
@@ -1333,6 +1349,7 @@
/*====================================================================*/
+#ifdef CONFIG_PCMCIA_IOCTL
extern struct pci_bus *pcmcia_lookup_bus(struct pcmcia_socket *s);
@@ -1421,6 +1438,8 @@
return (ret);
} /* get_device_info */
+#endif
+
/*====================================================================*/
/* unbind _all_ devices attached to a given pcmcia_bus_socket. The
@@ -1494,6 +1513,8 @@
======================================================================*/
+#ifdef CONFIG_PCMCIA_IOCTL
+
static int ds_open(struct inode *inode, struct file *file)
{
socket_t i = iminor(inode);
@@ -1854,6 +1875,8 @@
.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 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 == -EBUSY)
@@ -1958,6 +1984,7 @@
if (proc_pccard)
create_proc_read_entry("drivers",0,proc_pccard,proc_read_drivers,NULL);
#endif
+#endif
return 0;
}
@@ -1969,6 +1996,7 @@
{
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 @@
#endif
if (major_dev != -1)
unregister_chrdev(major_dev, "pcmcia");
+#endif
bus_unregister(&pcmcia_bus_type);
}
@@ -1985,7 +2014,7 @@
/* 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 @@
return (p_drv);
}
+#endif
MODULE_ALIAS("ds");
More information about the linux-pcmcia
mailing list