]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] pcmcia: add pcmcia_(put,get)_socket
authorDominik Brodowski <linux@dominikbrodowski.de>
Tue, 11 Jan 2005 11:21:40 +0000 (03:21 -0800)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 11 Jan 2005 11:21:40 +0000 (03:21 -0800)
Add pcmcia_{put,get}_socket

Signed-off-by: Dominik Brodowski <linux@brodo.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/pcmcia/cs.c
include/pcmcia/cs.h

index 192ffc4540cfb59bbbddefb56a1250e04a1f8b2f..c7827c26db94e6e5242091f4ab58d1bceb3646b3 100644 (file)
@@ -172,6 +172,29 @@ int pcmcia_socket_dev_resume(struct device *dev)
 EXPORT_SYMBOL(pcmcia_socket_dev_resume);
 
 
+struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt)
+{
+       struct class_device *cl_dev = class_device_get(&skt->dev);
+       if (!cl_dev)
+               return NULL;
+       skt = class_get_devdata(cl_dev);
+       if (!try_module_get(skt->owner)) {
+               class_device_put(&skt->dev);
+               return NULL;
+       }
+       return (skt);
+}
+EXPORT_SYMBOL(pcmcia_get_socket);
+
+
+void pcmcia_put_socket(struct pcmcia_socket *skt)
+{
+       module_put(skt->owner);
+       class_device_put(&skt->dev);
+}
+EXPORT_SYMBOL(pcmcia_put_socket);
+
+
 static void pcmcia_release_socket(struct class_device *class_dev)
 {
        struct pcmcia_socket *socket = class_get_devdata(class_dev);
index 8bd6081c5f8f983e443fb5961bee13533854198a..bcc0abee07ebe835ca9c2fbaa7fea3c6cc4f8c08 100644 (file)
@@ -426,6 +426,9 @@ int pcmcia_modify_window(window_handle_t win, modwin_t *req);
 int pcmcia_set_event_mask(client_handle_t handle, eventmask_t *mask);
 #endif
 
+struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt);
+void pcmcia_put_socket(struct pcmcia_socket *skt);
+
 #endif /* __KERNEL__ */
 
 #endif /* _LINUX_CS_H */