diff options
Diffstat (limited to 'drivers/pcmcia/pcmcia_resource.c')
-rw-r--r-- | drivers/pcmcia/pcmcia_resource.c | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c index cf66b997894..9ed3d4a9b99 100644 --- a/drivers/pcmcia/pcmcia_resource.c +++ b/drivers/pcmcia/pcmcia_resource.c @@ -36,8 +36,6 @@ #include "ds_internal.h" -static const char *release = "Linux Kernel Card Services"; - /* Access speed for IO windows */ static int io_speed = 0; module_param(io_speed, int, 0444); @@ -202,7 +200,18 @@ int pccard_access_configuration_register(struct pcmcia_socket *s, } return CS_SUCCESS; } /* pccard_access_configuration_register */ -EXPORT_SYMBOL(pccard_access_configuration_register); + +int pcmcia_access_configuration_register(client_handle_t handle, + conf_reg_t *reg) +{ + struct pcmcia_socket *s; + if (CHECK_HANDLE(handle)) + return CS_BAD_HANDLE; + s = SOCKET(handle); + return pccard_access_configuration_register(s, handle->Function, reg); +} +EXPORT_SYMBOL(pcmcia_access_configuration_register); + int pccard_get_configuration_info(struct pcmcia_socket *s, @@ -260,31 +269,20 @@ int pccard_get_configuration_info(struct pcmcia_socket *s, return CS_SUCCESS; } /* pccard_get_configuration_info */ -EXPORT_SYMBOL(pccard_get_configuration_info); - -/** pcmcia_get_card_services_info - * - * Return information about this version of Card Services - */ - -int pcmcia_get_card_services_info(servinfo_t *info) +int pcmcia_get_configuration_info(client_handle_t handle, + config_info_t *config) { - unsigned int socket_count = 0; - struct list_head *tmp; - info->Signature[0] = 'C'; - info->Signature[1] = 'S'; - down_read(&pcmcia_socket_list_rwsem); - list_for_each(tmp, &pcmcia_socket_list) - socket_count++; - up_read(&pcmcia_socket_list_rwsem); - info->Count = socket_count; - info->Revision = CS_RELEASE_CODE; - info->CSLevel = 0x0210; - info->VendorString = (char *)release; - return CS_SUCCESS; -} /* get_card_services_info */ -EXPORT_SYMBOL(pcmcia_get_card_services_info); + struct pcmcia_socket *s; + + if ((CHECK_HANDLE(handle)) || !config) + return CS_BAD_HANDLE; + s = SOCKET(handle); + if (!s) + return CS_BAD_HANDLE; + return pccard_get_configuration_info(s, handle->Function, config); +} +EXPORT_SYMBOL(pcmcia_get_configuration_info); /** pcmcia_get_window @@ -379,7 +377,17 @@ int pccard_get_status(struct pcmcia_socket *s, unsigned int function, (val & SS_READY) ? CS_EVENT_READY_CHANGE : 0; return CS_SUCCESS; } /* pccard_get_status */ -EXPORT_SYMBOL(pccard_get_status); + +int pcmcia_get_status(client_handle_t handle, cs_status_t *status) +{ + struct pcmcia_socket *s; + if (CHECK_HANDLE(handle)) + return CS_BAD_HANDLE; + s = SOCKET(handle); + return pccard_get_status(s, handle->Function, status); +} +EXPORT_SYMBOL(pcmcia_get_status); + /** pcmcia_get_mem_page |