aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/card/block.c
diff options
context:
space:
mode:
authorUlf Hansson <ulf.hansson@linaro.org>2013-06-10 11:03:40 -0400
committerChris Ball <cjb@laptop.org>2013-06-27 12:39:18 -0400
commit7628774851751e55362ec7d9d57c9334e656a655 (patch)
tree54a8d24423250ceec0fd3468aeef20465941085a /drivers/mmc/card/block.c
parent986892ca78eeddd9d6b629050fea432979ddd321 (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.c15
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 2406static int _mmc_blk_suspend(struct mmc_card *card)
2407static 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
2421static void mmc_blk_shutdown(struct mmc_card *card)
2422{
2423 _mmc_blk_suspend(card);
2424}
2425
2426#ifdef CONFIG_PM
2427static int mmc_blk_suspend(struct mmc_card *card)
2428{
2429 return _mmc_blk_suspend(card);
2430}
2431
2422static int mmc_blk_resume(struct mmc_card *card) 2432static 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
2456static int __init mmc_blk_init(void) 2467static int __init mmc_blk_init(void)