diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index da185cbdfc36..f98e2d7bd923 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -1488,8 +1488,16 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq) pr_debug("%s: CQE recovery start\n", mmc_hostname(host)); err = mmc_cqe_recovery(host); +#if defined(CONFIG_SDC_QTI) + if (err || host->need_hw_reset) { + mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY); + if (host->need_hw_reset) + host->need_hw_reset = false; + } +#else if (err) mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY); +#endif mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY); pr_debug("%s: CQE recovery done\n", mmc_hostname(host));