Add pcmcia_{put,get}_socket drivers/pcmcia/cs.c | 23 +++++++++++++++++++++++ include/pcmcia/cs.h | 3 +++ 2 files changed, 26 insertions(+) diff -ruN linux-original/drivers/pcmcia/cs.c linux/drivers/pcmcia/cs.c --- linux-original/drivers/pcmcia/cs.c 2004-10-22 12:12:41.010677816 +0200 +++ linux/drivers/pcmcia/cs.c 2004-10-22 15:23:34.968411568 +0200 @@ -172,6 +172,29 @@ 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); diff -ruN linux-original/include/pcmcia/cs.h linux/include/pcmcia/cs.h --- linux-original/include/pcmcia/cs.h 2004-10-22 12:12:41.000000000 +0200 +++ linux/include/pcmcia/cs.h 2004-10-22 15:23:35.015404424 +0200 @@ -426,6 +426,9 @@ 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 */