Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 889736a7 authored by Asutosh Das's avatar Asutosh Das
Browse files

mmc: core: Add deferred resume support to CQ



Defer the resume of the device until a request actually
arrives, thus mandating the use of the device.

CRs-fixed: 987918
Change-Id: I41cf8908dd0f129c54b941c318e938ad7e9d36c9
Signed-off-by: default avatarAsutosh Das <asutoshd@codeaurora.org>
parent 859ba6e3
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3477,6 +3477,10 @@ static int mmc_blk_cmdq_issue_rq(struct mmc_queue *mq, struct request *req)

	mmc_get_card(card);

#ifdef CONFIG_MMC_BLOCK_DEFERRED_RESUME
	if (mmc_bus_needs_resume(card->host))
		mmc_resume_bus(card->host);
#endif
	if (!card->host->cmdq_ctx.active_reqs && mmc_card_doing_bkops(card)) {
		ret = mmc_cmdq_halt(card->host, true);
		if (ret)
+9 −0
Original line number Diff line number Diff line
@@ -2760,6 +2760,7 @@ static inline void mmc_bus_put(struct mmc_host *host)
int mmc_resume_bus(struct mmc_host *host)
{
	unsigned long flags;
	int err = 0;

	if (!mmc_bus_needs_resume(host))
		return -EINVAL;
@@ -2775,6 +2776,14 @@ int mmc_resume_bus(struct mmc_host *host)
		mmc_power_up(host, host->card->ocr);
		BUG_ON(!host->bus_ops->resume);
		host->bus_ops->resume(host);
		if (mmc_card_cmdq(host->card)) {
			err = mmc_cmdq_halt(host, false);
			if (err)
				pr_err("%s: %s: unhalt failed: %d\n",
				       mmc_hostname(host), __func__, err);
			else
				mmc_card_clr_suspended(host->card);
		}
	}

	if (host->bus_ops->detect && !host->bus_dead)