diff options
Diffstat (limited to 'drivers/serial/serial_cs.c')
-rw-r--r-- | drivers/serial/serial_cs.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c index 3487ee9eab1d..a95366366504 100644 --- a/drivers/serial/serial_cs.c +++ b/drivers/serial/serial_cs.c | |||
@@ -120,7 +120,7 @@ static int serial_event(event_t event, int priority, | |||
120 | static dev_info_t dev_info = "serial_cs"; | 120 | static dev_info_t dev_info = "serial_cs"; |
121 | 121 | ||
122 | static dev_link_t *serial_attach(void); | 122 | static dev_link_t *serial_attach(void); |
123 | static void serial_detach(dev_link_t *); | 123 | static void serial_detach(struct pcmcia_device *p_dev); |
124 | 124 | ||
125 | static dev_link_t *dev_list = NULL; | 125 | static dev_link_t *dev_list = NULL; |
126 | 126 | ||
@@ -242,7 +242,7 @@ static dev_link_t *serial_attach(void) | |||
242 | ret = pcmcia_register_client(&link->handle, &client_reg); | 242 | ret = pcmcia_register_client(&link->handle, &client_reg); |
243 | if (ret != CS_SUCCESS) { | 243 | if (ret != CS_SUCCESS) { |
244 | cs_error(link->handle, RegisterClient, ret); | 244 | cs_error(link->handle, RegisterClient, ret); |
245 | serial_detach(link); | 245 | serial_detach(link->handle); |
246 | return NULL; | 246 | return NULL; |
247 | } | 247 | } |
248 | 248 | ||
@@ -258,11 +258,11 @@ static dev_link_t *serial_attach(void) | |||
258 | 258 | ||
259 | ======================================================================*/ | 259 | ======================================================================*/ |
260 | 260 | ||
261 | static void serial_detach(dev_link_t * link) | 261 | static void serial_detach(struct pcmcia_device *p_dev) |
262 | { | 262 | { |
263 | dev_link_t *link = dev_to_instance(p_dev); | ||
263 | struct serial_info *info = link->priv; | 264 | struct serial_info *info = link->priv; |
264 | dev_link_t **linkp; | 265 | dev_link_t **linkp; |
265 | int ret; | ||
266 | 266 | ||
267 | DEBUG(0, "serial_detach(0x%p)\n", link); | 267 | DEBUG(0, "serial_detach(0x%p)\n", link); |
268 | 268 | ||
@@ -283,12 +283,6 @@ static void serial_detach(dev_link_t * link) | |||
283 | */ | 283 | */ |
284 | serial_remove(link); | 284 | serial_remove(link); |
285 | 285 | ||
286 | if (link->handle) { | ||
287 | ret = pcmcia_deregister_client(link->handle); | ||
288 | if (ret != CS_SUCCESS) | ||
289 | cs_error(link->handle, DeregisterClient, ret); | ||
290 | } | ||
291 | |||
292 | /* Unlink device structure, free bits */ | 286 | /* Unlink device structure, free bits */ |
293 | *linkp = link->next; | 287 | *linkp = link->next; |
294 | kfree(info); | 288 | kfree(info); |
@@ -741,9 +735,6 @@ serial_event(event_t event, int priority, event_callback_args_t * args) | |||
741 | DEBUG(1, "serial_event(0x%06x)\n", event); | 735 | DEBUG(1, "serial_event(0x%06x)\n", event); |
742 | 736 | ||
743 | switch (event) { | 737 | switch (event) { |
744 | case CS_EVENT_CARD_REMOVAL: | ||
745 | serial_remove(link); | ||
746 | break; | ||
747 | 738 | ||
748 | case CS_EVENT_CARD_INSERTION: | 739 | case CS_EVENT_CARD_INSERTION: |
749 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | 740 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; |
@@ -866,7 +857,7 @@ static struct pcmcia_driver serial_cs_driver = { | |||
866 | }, | 857 | }, |
867 | .attach = serial_attach, | 858 | .attach = serial_attach, |
868 | .event = serial_event, | 859 | .event = serial_event, |
869 | .detach = serial_detach, | 860 | .remove = serial_detach, |
870 | .id_table = serial_ids, | 861 | .id_table = serial_ids, |
871 | .suspend = serial_suspend, | 862 | .suspend = serial_suspend, |
872 | .resume = serial_resume, | 863 | .resume = serial_resume, |