aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/sl811_cs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/sl811_cs.c')
-rw-r--r--drivers/usb/host/sl811_cs.c41
1 files changed, 24 insertions, 17 deletions
diff --git a/drivers/usb/host/sl811_cs.c b/drivers/usb/host/sl811_cs.c
index 5056b7459994..cb8c2bdbbd04 100644
--- a/drivers/usb/host/sl811_cs.c
+++ b/drivers/usb/host/sl811_cs.c
@@ -323,6 +323,28 @@ cs_failed:
323 } 323 }
324} 324}
325 325
326static int sl811_suspend(struct pcmcia_device *dev)
327{
328 dev_link_t *link = dev_to_instance(dev);
329
330 link->state |= DEV_SUSPEND;
331 if (link->state & DEV_CONFIG)
332 pcmcia_release_configuration(link->handle);
333
334 return 0;
335}
336
337static int sl811_resume(struct pcmcia_device *dev)
338{
339 dev_link_t *link = dev_to_instance(dev);
340
341 link->state &= ~DEV_SUSPEND;
342 if (link->state & DEV_CONFIG)
343 pcmcia_request_configuration(link->handle, &link->conf);
344
345 return 0;
346}
347
326static int 348static int
327sl811_cs_event(event_t event, int priority, event_callback_args_t *args) 349sl811_cs_event(event_t event, int priority, event_callback_args_t *args)
328{ 350{
@@ -341,23 +363,6 @@ sl811_cs_event(event_t event, int priority, event_callback_args_t *args)
341 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; 363 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
342 sl811_cs_config(link); 364 sl811_cs_config(link);
343 break; 365 break;
344
345 case CS_EVENT_PM_SUSPEND:
346 link->state |= DEV_SUSPEND;
347 /* Fall through... */
348 case CS_EVENT_RESET_PHYSICAL:
349 if (link->state & DEV_CONFIG)
350 pcmcia_release_configuration(link->handle);
351 break;
352
353 case CS_EVENT_PM_RESUME:
354 link->state &= ~DEV_SUSPEND;
355 /* Fall through... */
356 case CS_EVENT_CARD_RESET:
357 if (link->state & DEV_CONFIG)
358 pcmcia_request_configuration(link->handle, &link->conf);
359 DBG(0, "reset sl811-hcd here?\n");
360 break;
361 } 366 }
362 return 0; 367 return 0;
363} 368}
@@ -417,6 +422,8 @@ static struct pcmcia_driver sl811_cs_driver = {
417 .event = sl811_cs_event, 422 .event = sl811_cs_event,
418 .detach = sl811_cs_detach, 423 .detach = sl811_cs_detach,
419 .id_table = sl811_ids, 424 .id_table = sl811_ids,
425 .suspend = sl811_suspend,
426 .resume = sl811_resume,
420}; 427};
421 428
422/*====================================================================*/ 429/*====================================================================*/