[PATCH] pcmcia: remove old detach mechanism
Dominik Brodowski [Mon, 14 Nov 2005 20:25:23 +0000 (21:25 +0100)]
Remove the old "detach" mechanism as it is unused now.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

drivers/pcmcia/ds.c
include/pcmcia/cs.h
include/pcmcia/ds.h

index 32b4d6b..8eff55b 100644 (file)
@@ -402,43 +402,29 @@ static int pcmcia_device_remove(struct device * dev)
        /* detach the "instance" */
        p_dev = to_pcmcia_dev(dev);
        p_drv = to_pcmcia_drv(dev->driver);
+       if (!p_drv)
+               return 0;
 
-       /* the likely, new path */
-       if (p_drv && p_drv->remove) {
+       if (p_drv->remove)
                p_drv->remove(p_dev);
 
-               /* check for proper unloading */
-               if (p_dev->state & (CLIENT_IRQ_REQ|CLIENT_IO_REQ|CLIENT_CONFIG_LOCKED))
-                       printk(KERN_INFO "pcmcia: driver %s did not release config properly\n",
-                              p_drv->drv.name);
-
-               for (i = 0; i < MAX_WIN; i++)
-                       if (p_dev->state & CLIENT_WIN_REQ(i))
-                               printk(KERN_INFO "pcmcia: driver %s did not release windows properly\n",
-                                      p_drv->drv.name);
-
-               /* undo pcmcia_register_client */
-               p_dev->state = CLIENT_UNBOUND;
-               pcmcia_put_dev(p_dev);
-
-               /* references from pcmcia_probe_device */
-               pcmcia_put_dev(p_dev);
-               module_put(p_drv->owner);
+       /* check for proper unloading */
+       if (p_dev->state & (CLIENT_IRQ_REQ|CLIENT_IO_REQ|CLIENT_CONFIG_LOCKED))
+               printk(KERN_INFO "pcmcia: driver %s did not release config properly\n",
+                      p_drv->drv.name);
 
-               return 0;
-       }
+       for (i = 0; i < MAX_WIN; i++)
+               if (p_dev->state & CLIENT_WIN_REQ(i))
+                       printk(KERN_INFO "pcmcia: driver %s did not release windows properly\n",
+                              p_drv->drv.name);
 
-       /* old path */
-       if (p_drv) {
-               if ((p_drv->detach) && (p_dev->instance)) {
-                       printk(KERN_INFO "pcmcia: using deprecated detach mechanism. Fix the driver!\n");
+       /* undo pcmcia_register_client */
+       p_dev->state = CLIENT_UNBOUND;
+       pcmcia_put_dev(p_dev);
 
-                       p_drv->detach(p_dev->instance);
-                       /* from pcmcia_probe_device */
-                       put_device(&p_dev->dev);
-               }
-               module_put(p_drv->owner);
-       }
+       /* references from pcmcia_probe_device */
+       pcmcia_put_dev(p_dev);
+       module_put(p_drv->owner);
 
        return 0;
 }
@@ -1234,35 +1220,6 @@ int pcmcia_register_client(struct pcmcia_device **handle, client_reg_t *req)
 EXPORT_SYMBOL(pcmcia_register_client);
 
 
-int pcmcia_deregister_client(struct pcmcia_device *p_dev)
-{
-       struct pcmcia_socket *s;
-       int i;
-
-       s = p_dev->socket;
-       ds_dbg(1, "deregister_client(%p)\n", p_dev);
-
-       if (p_dev->state & (CLIENT_IRQ_REQ|CLIENT_IO_REQ|CLIENT_CONFIG_LOCKED))
-               goto warn_out;
-       for (i = 0; i < MAX_WIN; i++)
-               if (p_dev->state & CLIENT_WIN_REQ(i))
-                       goto warn_out;
-
-       if (p_dev->state & CLIENT_STALE) {
-               p_dev->state &= ~CLIENT_STALE;
-               pcmcia_put_dev(p_dev);
-       } else {
-               p_dev->state = CLIENT_UNBOUND;
-       }
-
-       return CS_SUCCESS;
- warn_out:
-       printk(KERN_WARNING "ds: deregister_client was called too early.\n");
-       return CS_IN_USE;
-} /* deregister_client */
-EXPORT_SYMBOL(pcmcia_deregister_client);
-
-
 static struct pcmcia_callback pcmcia_bus_callback = {
        .owner = THIS_MODULE,
        .event = ds_event,
index 2cab39f..a751251 100644 (file)
@@ -382,7 +382,6 @@ enum service {
 struct pcmcia_socket;
 
 int pcmcia_access_configuration_register(struct pcmcia_device *p_dev, conf_reg_t *reg);
-int pcmcia_deregister_client(struct pcmcia_device *p_dev);
 int pcmcia_get_configuration_info(struct pcmcia_device *p_dev, config_info_t *config);
 int pcmcia_get_first_window(window_handle_t *win, win_req_t *req);
 int pcmcia_get_next_window(window_handle_t *win, win_req_t *req);
index 2869283..c53a060 100644 (file)
@@ -136,7 +136,6 @@ struct pcmcia_driver {
        dev_link_t              *(*attach)(void);
        int (*event)            (event_t event, int priority,
                                 event_callback_args_t *);
-       void                    (*detach)(dev_link_t *);
 
        void (*remove)          (struct pcmcia_device *dev);