diff options
Diffstat (limited to 'drivers/memstick/core/memstick.c')
-rw-r--r-- | drivers/memstick/core/memstick.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/memstick/core/memstick.c b/drivers/memstick/core/memstick.c index 61b98c333cb0..3c7d9a79c1ea 100644 --- a/drivers/memstick/core/memstick.c +++ b/drivers/memstick/core/memstick.c | |||
@@ -415,10 +415,14 @@ err_out: | |||
415 | return NULL; | 415 | return NULL; |
416 | } | 416 | } |
417 | 417 | ||
418 | static void memstick_power_on(struct memstick_host *host) | 418 | static int memstick_power_on(struct memstick_host *host) |
419 | { | 419 | { |
420 | host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); | 420 | int rc = host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); |
421 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); | 421 | |
422 | if (!rc) | ||
423 | rc = host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); | ||
424 | |||
425 | return rc; | ||
422 | } | 426 | } |
423 | 427 | ||
424 | static void memstick_check(struct work_struct *work) | 428 | static void memstick_check(struct work_struct *work) |
@@ -573,11 +577,15 @@ EXPORT_SYMBOL(memstick_suspend_host); | |||
573 | */ | 577 | */ |
574 | void memstick_resume_host(struct memstick_host *host) | 578 | void memstick_resume_host(struct memstick_host *host) |
575 | { | 579 | { |
580 | int rc = 0; | ||
581 | |||
576 | mutex_lock(&host->lock); | 582 | mutex_lock(&host->lock); |
577 | if (host->card) | 583 | if (host->card) |
578 | memstick_power_on(host); | 584 | rc = memstick_power_on(host); |
579 | mutex_unlock(&host->lock); | 585 | mutex_unlock(&host->lock); |
580 | memstick_detect_change(host); | 586 | |
587 | if (!rc) | ||
588 | memstick_detect_change(host); | ||
581 | } | 589 | } |
582 | EXPORT_SYMBOL(memstick_resume_host); | 590 | EXPORT_SYMBOL(memstick_resume_host); |
583 | 591 | ||