aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/bluecard_cs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/bluetooth/bluecard_cs.c')
-rw-r--r--drivers/bluetooth/bluecard_cs.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c
index 5b24131e5430..f5088cb3812b 100644
--- a/drivers/bluetooth/bluecard_cs.c
+++ b/drivers/bluetooth/bluecard_cs.c
@@ -92,7 +92,7 @@ static int bluecard_event(event_t event, int priority, event_callback_args_t *ar
92static dev_info_t dev_info = "bluecard_cs"; 92static dev_info_t dev_info = "bluecard_cs";
93 93
94static dev_link_t *bluecard_attach(void); 94static dev_link_t *bluecard_attach(void);
95static void bluecard_detach(dev_link_t *); 95static void bluecard_detach(struct pcmcia_device *p_dev);
96 96
97static dev_link_t *dev_list = NULL; 97static dev_link_t *dev_list = NULL;
98 98
@@ -899,7 +899,7 @@ static dev_link_t *bluecard_attach(void)
899 ret = pcmcia_register_client(&link->handle, &client_reg); 899 ret = pcmcia_register_client(&link->handle, &client_reg);
900 if (ret != CS_SUCCESS) { 900 if (ret != CS_SUCCESS) {
901 cs_error(link->handle, RegisterClient, ret); 901 cs_error(link->handle, RegisterClient, ret);
902 bluecard_detach(link); 902 bluecard_detach(link->handle);
903 return NULL; 903 return NULL;
904 } 904 }
905 905
@@ -907,11 +907,11 @@ static dev_link_t *bluecard_attach(void)
907} 907}
908 908
909 909
910static void bluecard_detach(dev_link_t *link) 910static void bluecard_detach(struct pcmcia_device *p_dev)
911{ 911{
912 dev_link_t *link = dev_to_instance(p_dev);
912 bluecard_info_t *info = link->priv; 913 bluecard_info_t *info = link->priv;
913 dev_link_t **linkp; 914 dev_link_t **linkp;
914 int ret;
915 915
916 /* Locate device structure */ 916 /* Locate device structure */
917 for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) 917 for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
@@ -924,12 +924,6 @@ static void bluecard_detach(dev_link_t *link)
924 if (link->state & DEV_CONFIG) 924 if (link->state & DEV_CONFIG)
925 bluecard_release(link); 925 bluecard_release(link);
926 926
927 if (link->handle) {
928 ret = pcmcia_deregister_client(link->handle);
929 if (ret != CS_SUCCESS)
930 cs_error(link->handle, DeregisterClient, ret);
931 }
932
933 /* Unlink device structure, free bits */ 927 /* Unlink device structure, free bits */
934 *linkp = link->next; 928 *linkp = link->next;
935 929
@@ -1070,16 +1064,8 @@ static int bluecard_resume(struct pcmcia_device *dev)
1070static int bluecard_event(event_t event, int priority, event_callback_args_t *args) 1064static int bluecard_event(event_t event, int priority, event_callback_args_t *args)
1071{ 1065{
1072 dev_link_t *link = args->client_data; 1066 dev_link_t *link = args->client_data;
1073 bluecard_info_t *info = link->priv;
1074 1067
1075 switch (event) { 1068 switch (event) {
1076 case CS_EVENT_CARD_REMOVAL:
1077 link->state &= ~DEV_PRESENT;
1078 if (link->state & DEV_CONFIG) {
1079 bluecard_close(info);
1080 bluecard_release(link);
1081 }
1082 break;
1083 case CS_EVENT_CARD_INSERTION: 1069 case CS_EVENT_CARD_INSERTION:
1084 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; 1070 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
1085 bluecard_config(link); 1071 bluecard_config(link);
@@ -1104,7 +1090,7 @@ static struct pcmcia_driver bluecard_driver = {
1104 }, 1090 },
1105 .attach = bluecard_attach, 1091 .attach = bluecard_attach,
1106 .event = bluecard_event, 1092 .event = bluecard_event,
1107 .detach = bluecard_detach, 1093 .remove = bluecard_detach,
1108 .id_table = bluecard_ids, 1094 .id_table = bluecard_ids,
1109 .suspend = bluecard_suspend, 1095 .suspend = bluecard_suspend,
1110 .resume = bluecard_resume, 1096 .resume = bluecard_resume,