diff options
| -rw-r--r-- | drivers/mmc/card/block.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index 17d5c0289882..a223cf4b5c44 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -2959,13 +2959,14 @@ static void mmc_blk_cmdq_shutdown(struct mmc_queue *mq) struct mmc_card *card = mq->card; struct mmc_host *host = card->host; + mmc_get_card(card); + mmc_host_clk_hold(host); err = mmc_cmdq_halt(host, true); if (err) { pr_err("%s: halt: failed: %d\n", __func__, err); return; } - mmc_get_card(card); /* disable CQ mode in card */ err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_CMDQ, 0, @@ -2975,9 +2976,12 @@ static void mmc_blk_cmdq_shutdown(struct mmc_queue *mq) __func__, err); goto out; } else { + mmc_card_clr_cmdq(card); + host->cmdq_ops->disable(host, false); host->card->cmdq_init = false; } out: + mmc_host_clk_release(host); mmc_put_card(card); } |
