Loading drivers/pcmcia/cistpl.c +1 −0 Original line number Diff line number Diff line Loading @@ -385,6 +385,7 @@ int pcmcia_replace_cis(struct pcmcia_socket *s, cisdump_t *cis) memcpy(s->fake_cis, cis->Data, cis->Length); return CS_SUCCESS; } EXPORT_SYMBOL(pcmcia_replace_cis); /*====================================================================== Loading drivers/pcmcia/cs.c +66 −143 Original line number Diff line number Diff line Loading @@ -43,36 +43,11 @@ #include <pcmcia/ds.h> #include "cs_internal.h" #ifdef CONFIG_PCI #define PCI_OPT " [pci]" #else #define PCI_OPT "" #endif #ifdef CONFIG_CARDBUS #define CB_OPT " [cardbus]" #else #define CB_OPT "" #endif #ifdef CONFIG_PM #define PM_OPT " [pm]" #else #define PM_OPT "" #endif #if !defined(CONFIG_CARDBUS) && !defined(CONFIG_PCI) && !defined(CONFIG_PM) #define OPTIONS " none" #else #define OPTIONS PCI_OPT CB_OPT PM_OPT #endif static const char *release = "Linux Kernel Card Services"; static const char *options = "options: " OPTIONS; /*====================================================================*/ /* Module parameters */ MODULE_AUTHOR("David Hinds <dahinds@users.sourceforge.net>"); MODULE_DESCRIPTION("Linux Kernel Card Services\noptions:" OPTIONS); MODULE_DESCRIPTION("Linux Kernel Card Services"); MODULE_LICENSE("GPL"); #define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0444) Loading Loading @@ -100,28 +75,25 @@ int cs_debug_level(int level) } #endif /*====================================================================*/ socket_state_t dead_socket = { .csc_mask = SS_DETECT, }; EXPORT_SYMBOL(dead_socket); /* List of all sockets, protected by a rwsem */ LIST_HEAD(pcmcia_socket_list); DECLARE_RWSEM(pcmcia_socket_list_rwsem); EXPORT_SYMBOL(pcmcia_socket_list); EXPORT_SYMBOL(pcmcia_socket_list_rwsem); /*==================================================================== Low-level PC Card interface drivers need to register with Card Services using these calls. DECLARE_RWSEM(pcmcia_socket_list_rwsem); EXPORT_SYMBOL(pcmcia_socket_list_rwsem); ======================================================================*/ /** * Low-level PCMCIA socket drivers need to register with the PCCard * core using pcmcia_register_socket. * * socket drivers are expected to use the following callbacks in their * .drv struct: * - pcmcia_socket_dev_suspend Loading Loading @@ -332,15 +304,12 @@ struct pcmcia_socket * pcmcia_get_socket_by_nr(unsigned int nr) EXPORT_SYMBOL(pcmcia_get_socket_by_nr); /*====================================================================== socket_setup() and shutdown_socket() are called by the main event handler when card insertion and removal events are received. socket_setup() turns on socket power and resets the socket, in two stages. shutdown_socket() unconfigures a socket and turns off socket power. ======================================================================*/ /** * socket_setup() and shutdown_socket() are called by the main event * handler when card insertion and removal events are received. * socket_setup() turns on socket power and resets the socket, in two stages. * shutdown_socket() unconfigures a socket and turns off socket power. */ static void shutdown_socket(struct pcmcia_socket *s) { cs_dbg(s, 1, "shutdown_socket\n"); Loading Loading @@ -370,16 +339,14 @@ static void shutdown_socket(struct pcmcia_socket *s) } } /* shutdown_socket */ /*====================================================================== The central event handler. Send_event() sends an event to the 16-bit subsystem, which then calls the relevant device drivers. Parse_events() interprets the event bits from a card status change report. Do_shutdown() handles the high priority stuff associated with a card removal. ======================================================================*/ /** * The central event handler. Send_event() sends an event to the * 16-bit subsystem, which then calls the relevant device drivers. * Parse_events() interprets the event bits from * a card status change report. Do_shutdown() handles the high * priority stuff associated with a card removal. */ /* NOTE: send_event needs to be called with skt->sem held. */ Loading Loading @@ -738,27 +705,7 @@ void pcmcia_parse_events(struct pcmcia_socket *s, u_int events) wake_up(&s->thread_wait); } } /* pcmcia_parse_events */ /*===================================================================== Return the PCI device associated with a card.. ======================================================================*/ #ifdef CONFIG_CARDBUS struct pci_bus *pcmcia_lookup_bus(struct pcmcia_socket *s) { if (!s || !(s->state & SOCKET_CARDBUS)) return NULL; return s->cb_dev->subordinate; } EXPORT_SYMBOL(pcmcia_lookup_bus); #endif EXPORT_SYMBOL(pcmcia_parse_events); /* register pcmcia_callback */ Loading Loading @@ -790,13 +737,10 @@ int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c) EXPORT_SYMBOL(pccard_register_pcmcia); /*====================================================================== I'm not sure which "reset" function this is supposed to use, but for now, it uses the low-level interface's reset, not the CIS register. ======================================================================*/ /* I'm not sure which "reset" function this is supposed to use, * but for now, it uses the low-level interface's reset, not the * CIS register. */ int pccard_reset_card(struct pcmcia_socket *skt) { Loading Loading @@ -834,13 +778,10 @@ int pccard_reset_card(struct pcmcia_socket *skt) } /* reset_card */ EXPORT_SYMBOL(pccard_reset_card); /*====================================================================== These shut down or wake up a socket. They are sort of user initiated versions of the APM suspend and resume actions. ======================================================================*/ /* These shut down or wake up a socket. They are sort of user * initiated versions of the APM suspend and resume actions. */ int pcmcia_suspend_card(struct pcmcia_socket *skt) { int ret; Loading @@ -863,6 +804,8 @@ int pcmcia_suspend_card(struct pcmcia_socket *skt) return ret; } /* suspend_card */ EXPORT_SYMBOL(pcmcia_suspend_card); int pcmcia_resume_card(struct pcmcia_socket *skt) { Loading @@ -886,13 +829,10 @@ int pcmcia_resume_card(struct pcmcia_socket *skt) return ret; } /* resume_card */ EXPORT_SYMBOL(pcmcia_resume_card); /*====================================================================== These handle user requests to eject or insert a card. ======================================================================*/ /* These handle user requests to eject or insert a card. */ int pcmcia_eject_card(struct pcmcia_socket *skt) { int ret; Loading @@ -919,6 +859,8 @@ int pcmcia_eject_card(struct pcmcia_socket *skt) return ret; } /* eject_card */ EXPORT_SYMBOL(pcmcia_eject_card); int pcmcia_insert_card(struct pcmcia_socket *skt) { Loading @@ -942,6 +884,8 @@ int pcmcia_insert_card(struct pcmcia_socket *skt) return ret; } /* insert_card */ EXPORT_SYMBOL(pcmcia_insert_card); static int pcmcia_socket_hotplug(struct class_device *dev, char **envp, int num_envp, char *buffer, int buffer_size) Loading @@ -958,20 +902,6 @@ static int pcmcia_socket_hotplug(struct class_device *dev, char **envp, return 0; } /*====================================================================== OS-specific module glue goes here ======================================================================*/ /* in alpha order */ EXPORT_SYMBOL(pcmcia_eject_card); EXPORT_SYMBOL(pcmcia_insert_card); EXPORT_SYMBOL(pcmcia_replace_cis); EXPORT_SYMBOL(pcmcia_resume_card); EXPORT_SYMBOL(pcmcia_suspend_card); EXPORT_SYMBOL(dead_socket); EXPORT_SYMBOL(pcmcia_parse_events); struct class pcmcia_socket_class = { .name = "pcmcia_socket", Loading @@ -983,11 +913,7 @@ EXPORT_SYMBOL(pcmcia_socket_class); static int __init init_pcmcia_cs(void) { int ret; printk(KERN_INFO "%s\n", release); printk(KERN_INFO " %s\n", options); ret = class_register(&pcmcia_socket_class); int ret = class_register(&pcmcia_socket_class); if (ret) return (ret); return class_interface_register(&pccard_sysfs_interface); Loading @@ -995,7 +921,6 @@ static int __init init_pcmcia_cs(void) static void __exit exit_pcmcia_cs(void) { printk(KERN_INFO "unloading Kernel Card Services\n"); class_interface_unregister(&pccard_sysfs_interface); class_unregister(&pcmcia_socket_class); } Loading @@ -1003,5 +928,3 @@ static void __exit exit_pcmcia_cs(void) subsys_initcall(init_pcmcia_cs); module_exit(exit_pcmcia_cs); /*====================================================================*/ drivers/pcmcia/pcmcia_ioctl.c +9 −1 Original line number Diff line number Diff line Loading @@ -275,8 +275,16 @@ static int bind_request(struct pcmcia_socket *s, bind_info_t *bind_info) return (ret); } /* bind_request */ #ifdef CONFIG_CARDBUS static struct pci_bus *pcmcia_lookup_bus(struct pcmcia_socket *s) { if (!s || !(s->state & SOCKET_CARDBUS)) return NULL; extern struct pci_bus *pcmcia_lookup_bus(struct pcmcia_socket *s); return s->cb_dev->subordinate; } #endif static int get_device_info(struct pcmcia_socket *s, bind_info_t *bind_info, int first) { Loading Loading
drivers/pcmcia/cistpl.c +1 −0 Original line number Diff line number Diff line Loading @@ -385,6 +385,7 @@ int pcmcia_replace_cis(struct pcmcia_socket *s, cisdump_t *cis) memcpy(s->fake_cis, cis->Data, cis->Length); return CS_SUCCESS; } EXPORT_SYMBOL(pcmcia_replace_cis); /*====================================================================== Loading
drivers/pcmcia/cs.c +66 −143 Original line number Diff line number Diff line Loading @@ -43,36 +43,11 @@ #include <pcmcia/ds.h> #include "cs_internal.h" #ifdef CONFIG_PCI #define PCI_OPT " [pci]" #else #define PCI_OPT "" #endif #ifdef CONFIG_CARDBUS #define CB_OPT " [cardbus]" #else #define CB_OPT "" #endif #ifdef CONFIG_PM #define PM_OPT " [pm]" #else #define PM_OPT "" #endif #if !defined(CONFIG_CARDBUS) && !defined(CONFIG_PCI) && !defined(CONFIG_PM) #define OPTIONS " none" #else #define OPTIONS PCI_OPT CB_OPT PM_OPT #endif static const char *release = "Linux Kernel Card Services"; static const char *options = "options: " OPTIONS; /*====================================================================*/ /* Module parameters */ MODULE_AUTHOR("David Hinds <dahinds@users.sourceforge.net>"); MODULE_DESCRIPTION("Linux Kernel Card Services\noptions:" OPTIONS); MODULE_DESCRIPTION("Linux Kernel Card Services"); MODULE_LICENSE("GPL"); #define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0444) Loading Loading @@ -100,28 +75,25 @@ int cs_debug_level(int level) } #endif /*====================================================================*/ socket_state_t dead_socket = { .csc_mask = SS_DETECT, }; EXPORT_SYMBOL(dead_socket); /* List of all sockets, protected by a rwsem */ LIST_HEAD(pcmcia_socket_list); DECLARE_RWSEM(pcmcia_socket_list_rwsem); EXPORT_SYMBOL(pcmcia_socket_list); EXPORT_SYMBOL(pcmcia_socket_list_rwsem); /*==================================================================== Low-level PC Card interface drivers need to register with Card Services using these calls. DECLARE_RWSEM(pcmcia_socket_list_rwsem); EXPORT_SYMBOL(pcmcia_socket_list_rwsem); ======================================================================*/ /** * Low-level PCMCIA socket drivers need to register with the PCCard * core using pcmcia_register_socket. * * socket drivers are expected to use the following callbacks in their * .drv struct: * - pcmcia_socket_dev_suspend Loading Loading @@ -332,15 +304,12 @@ struct pcmcia_socket * pcmcia_get_socket_by_nr(unsigned int nr) EXPORT_SYMBOL(pcmcia_get_socket_by_nr); /*====================================================================== socket_setup() and shutdown_socket() are called by the main event handler when card insertion and removal events are received. socket_setup() turns on socket power and resets the socket, in two stages. shutdown_socket() unconfigures a socket and turns off socket power. ======================================================================*/ /** * socket_setup() and shutdown_socket() are called by the main event * handler when card insertion and removal events are received. * socket_setup() turns on socket power and resets the socket, in two stages. * shutdown_socket() unconfigures a socket and turns off socket power. */ static void shutdown_socket(struct pcmcia_socket *s) { cs_dbg(s, 1, "shutdown_socket\n"); Loading Loading @@ -370,16 +339,14 @@ static void shutdown_socket(struct pcmcia_socket *s) } } /* shutdown_socket */ /*====================================================================== The central event handler. Send_event() sends an event to the 16-bit subsystem, which then calls the relevant device drivers. Parse_events() interprets the event bits from a card status change report. Do_shutdown() handles the high priority stuff associated with a card removal. ======================================================================*/ /** * The central event handler. Send_event() sends an event to the * 16-bit subsystem, which then calls the relevant device drivers. * Parse_events() interprets the event bits from * a card status change report. Do_shutdown() handles the high * priority stuff associated with a card removal. */ /* NOTE: send_event needs to be called with skt->sem held. */ Loading Loading @@ -738,27 +705,7 @@ void pcmcia_parse_events(struct pcmcia_socket *s, u_int events) wake_up(&s->thread_wait); } } /* pcmcia_parse_events */ /*===================================================================== Return the PCI device associated with a card.. ======================================================================*/ #ifdef CONFIG_CARDBUS struct pci_bus *pcmcia_lookup_bus(struct pcmcia_socket *s) { if (!s || !(s->state & SOCKET_CARDBUS)) return NULL; return s->cb_dev->subordinate; } EXPORT_SYMBOL(pcmcia_lookup_bus); #endif EXPORT_SYMBOL(pcmcia_parse_events); /* register pcmcia_callback */ Loading Loading @@ -790,13 +737,10 @@ int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c) EXPORT_SYMBOL(pccard_register_pcmcia); /*====================================================================== I'm not sure which "reset" function this is supposed to use, but for now, it uses the low-level interface's reset, not the CIS register. ======================================================================*/ /* I'm not sure which "reset" function this is supposed to use, * but for now, it uses the low-level interface's reset, not the * CIS register. */ int pccard_reset_card(struct pcmcia_socket *skt) { Loading Loading @@ -834,13 +778,10 @@ int pccard_reset_card(struct pcmcia_socket *skt) } /* reset_card */ EXPORT_SYMBOL(pccard_reset_card); /*====================================================================== These shut down or wake up a socket. They are sort of user initiated versions of the APM suspend and resume actions. ======================================================================*/ /* These shut down or wake up a socket. They are sort of user * initiated versions of the APM suspend and resume actions. */ int pcmcia_suspend_card(struct pcmcia_socket *skt) { int ret; Loading @@ -863,6 +804,8 @@ int pcmcia_suspend_card(struct pcmcia_socket *skt) return ret; } /* suspend_card */ EXPORT_SYMBOL(pcmcia_suspend_card); int pcmcia_resume_card(struct pcmcia_socket *skt) { Loading @@ -886,13 +829,10 @@ int pcmcia_resume_card(struct pcmcia_socket *skt) return ret; } /* resume_card */ EXPORT_SYMBOL(pcmcia_resume_card); /*====================================================================== These handle user requests to eject or insert a card. ======================================================================*/ /* These handle user requests to eject or insert a card. */ int pcmcia_eject_card(struct pcmcia_socket *skt) { int ret; Loading @@ -919,6 +859,8 @@ int pcmcia_eject_card(struct pcmcia_socket *skt) return ret; } /* eject_card */ EXPORT_SYMBOL(pcmcia_eject_card); int pcmcia_insert_card(struct pcmcia_socket *skt) { Loading @@ -942,6 +884,8 @@ int pcmcia_insert_card(struct pcmcia_socket *skt) return ret; } /* insert_card */ EXPORT_SYMBOL(pcmcia_insert_card); static int pcmcia_socket_hotplug(struct class_device *dev, char **envp, int num_envp, char *buffer, int buffer_size) Loading @@ -958,20 +902,6 @@ static int pcmcia_socket_hotplug(struct class_device *dev, char **envp, return 0; } /*====================================================================== OS-specific module glue goes here ======================================================================*/ /* in alpha order */ EXPORT_SYMBOL(pcmcia_eject_card); EXPORT_SYMBOL(pcmcia_insert_card); EXPORT_SYMBOL(pcmcia_replace_cis); EXPORT_SYMBOL(pcmcia_resume_card); EXPORT_SYMBOL(pcmcia_suspend_card); EXPORT_SYMBOL(dead_socket); EXPORT_SYMBOL(pcmcia_parse_events); struct class pcmcia_socket_class = { .name = "pcmcia_socket", Loading @@ -983,11 +913,7 @@ EXPORT_SYMBOL(pcmcia_socket_class); static int __init init_pcmcia_cs(void) { int ret; printk(KERN_INFO "%s\n", release); printk(KERN_INFO " %s\n", options); ret = class_register(&pcmcia_socket_class); int ret = class_register(&pcmcia_socket_class); if (ret) return (ret); return class_interface_register(&pccard_sysfs_interface); Loading @@ -995,7 +921,6 @@ static int __init init_pcmcia_cs(void) static void __exit exit_pcmcia_cs(void) { printk(KERN_INFO "unloading Kernel Card Services\n"); class_interface_unregister(&pccard_sysfs_interface); class_unregister(&pcmcia_socket_class); } Loading @@ -1003,5 +928,3 @@ static void __exit exit_pcmcia_cs(void) subsys_initcall(init_pcmcia_cs); module_exit(exit_pcmcia_cs); /*====================================================================*/
drivers/pcmcia/pcmcia_ioctl.c +9 −1 Original line number Diff line number Diff line Loading @@ -275,8 +275,16 @@ static int bind_request(struct pcmcia_socket *s, bind_info_t *bind_info) return (ret); } /* bind_request */ #ifdef CONFIG_CARDBUS static struct pci_bus *pcmcia_lookup_bus(struct pcmcia_socket *s) { if (!s || !(s->state & SOCKET_CARDBUS)) return NULL; extern struct pci_bus *pcmcia_lookup_bus(struct pcmcia_socket *s); return s->cb_dev->subordinate; } #endif static int get_device_info(struct pcmcia_socket *s, bind_info_t *bind_info, int first) { Loading