diff options
author | Ulf Hansson <ulf.hansson@linaro.org> | 2013-06-10 11:03:40 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2013-06-27 12:39:18 -0400 |
commit | 7628774851751e55362ec7d9d57c9334e656a655 (patch) | |
tree | 54a8d24423250ceec0fd3468aeef20465941085a /drivers/mmc/card/block.c | |
parent | 986892ca78eeddd9d6b629050fea432979ddd321 (diff) |
mmc: core: Handle card shutdown from mmc_bus
Considering shutdown of the card, the responsibility to initate this
sequence shall be driven from the mmc_bus.
This patch enables the mmc_bus to handle this sequence properly. A new
.shutdown callback is added in the mmc_driver struct which is used to
shutdown the blk device.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/card/block.c')
-rw-r--r-- | drivers/mmc/card/block.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index 5411bf447369..cd0b7f4a1ff2 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c | |||
@@ -2403,8 +2403,7 @@ static void mmc_blk_remove(struct mmc_card *card) | |||
2403 | mmc_set_drvdata(card, NULL); | 2403 | mmc_set_drvdata(card, NULL); |
2404 | } | 2404 | } |
2405 | 2405 | ||
2406 | #ifdef CONFIG_PM | 2406 | static int _mmc_blk_suspend(struct mmc_card *card) |
2407 | static int mmc_blk_suspend(struct mmc_card *card) | ||
2408 | { | 2407 | { |
2409 | struct mmc_blk_data *part_md; | 2408 | struct mmc_blk_data *part_md; |
2410 | struct mmc_blk_data *md = mmc_get_drvdata(card); | 2409 | struct mmc_blk_data *md = mmc_get_drvdata(card); |
@@ -2419,6 +2418,17 @@ static int mmc_blk_suspend(struct mmc_card *card) | |||
2419 | return 0; | 2418 | return 0; |
2420 | } | 2419 | } |
2421 | 2420 | ||
2421 | static void mmc_blk_shutdown(struct mmc_card *card) | ||
2422 | { | ||
2423 | _mmc_blk_suspend(card); | ||
2424 | } | ||
2425 | |||
2426 | #ifdef CONFIG_PM | ||
2427 | static int mmc_blk_suspend(struct mmc_card *card) | ||
2428 | { | ||
2429 | return _mmc_blk_suspend(card); | ||
2430 | } | ||
2431 | |||
2422 | static int mmc_blk_resume(struct mmc_card *card) | 2432 | static int mmc_blk_resume(struct mmc_card *card) |
2423 | { | 2433 | { |
2424 | struct mmc_blk_data *part_md; | 2434 | struct mmc_blk_data *part_md; |
@@ -2451,6 +2461,7 @@ static struct mmc_driver mmc_driver = { | |||
2451 | .remove = mmc_blk_remove, | 2461 | .remove = mmc_blk_remove, |
2452 | .suspend = mmc_blk_suspend, | 2462 | .suspend = mmc_blk_suspend, |
2453 | .resume = mmc_blk_resume, | 2463 | .resume = mmc_blk_resume, |
2464 | .shutdown = mmc_blk_shutdown, | ||
2454 | }; | 2465 | }; |
2455 | 2466 | ||
2456 | static int __init mmc_blk_init(void) | 2467 | static int __init mmc_blk_init(void) |