From: Dominik Brodowski <linux@dominikbrodowski.net>

struct pcmcia_callback isn't needed for each socket, one is enough for all
sockets.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/pcmcia/ds.c          |   12 +++++++-----
 drivers/pcmcia/ds_internal.h |    1 -
 2 files changed, 7 insertions(+), 6 deletions(-)

diff -puN drivers/pcmcia/ds.c~pcmcia-clean-up-cs-ds-callback drivers/pcmcia/ds.c
--- 25/drivers/pcmcia/ds.c~pcmcia-clean-up-cs-ds-callback	Mon Jun 20 17:04:14 2005
+++ 25-akpm/drivers/pcmcia/ds.c	Mon Jun 20 17:04:16 2005
@@ -1167,6 +1167,12 @@ int pcmcia_deregister_client(client_hand
 } /* deregister_client */
 EXPORT_SYMBOL(pcmcia_deregister_client);
 
+static struct pcmcia_callback pcmcia_bus_callback = {
+	.owner = THIS_MODULE,
+	.event = ds_event,
+	.requery = pcmcia_bus_rescan,
+};
+
 static int __devinit pcmcia_bus_add_socket(struct class_device *class_dev)
 {
 	struct pcmcia_socket *socket = class_get_devdata(class_dev);
@@ -1201,12 +1207,9 @@ static int __devinit pcmcia_bus_add_sock
 	INIT_WORK(&s->device_add, pcmcia_delayed_add_pseudo_device, s);
 
 	/* Set up hotline to Card Services */
-	s->callback.owner = THIS_MODULE;
-	s->callback.event = &ds_event;
-	s->callback.requery = &pcmcia_bus_rescan;
 	socket->pcmcia = s;
 
-	ret = pccard_register_pcmcia(socket, &s->callback);
+	ret = pccard_register_pcmcia(socket, &pcmcia_bus_callback);
 	if (ret) {
 		printk(KERN_ERR "PCMCIA registration PCCard core failed for socket %p\n", socket);
 		pcmcia_put_bus_socket(s);
@@ -1217,7 +1220,6 @@ static int __devinit pcmcia_bus_add_sock
 	return 0;
 }
 
-
 static void pcmcia_bus_remove_socket(struct class_device *class_dev)
 {
 	struct pcmcia_socket *socket = class_get_devdata(class_dev);
diff -puN drivers/pcmcia/ds_internal.h~pcmcia-clean-up-cs-ds-callback drivers/pcmcia/ds_internal.h
--- 25/drivers/pcmcia/ds_internal.h~pcmcia-clean-up-cs-ds-callback	Mon Jun 20 17:04:14 2005
+++ 25-akpm/drivers/pcmcia/ds_internal.h	Mon Jun 20 17:04:14 2005
@@ -5,7 +5,6 @@ struct user_info_t;
 /* Socket state information */
 struct pcmcia_bus_socket {
 	struct kref		refcount;
-	struct pcmcia_callback	callback;
 	int			state;
 	struct pcmcia_socket	*parent;
 
_