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

Commit 78337e6b authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "mmc: core: Reset on error during deferred resume"

parents 9a9a759c 8e75e263
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -3239,20 +3239,31 @@ int mmc_resume_bus(struct mmc_host *host)
	if (host->bus_ops && !host->bus_dead && host->card) {
		mmc_power_up(host, host->card->ocr);
		BUG_ON(!host->bus_ops->resume);
		host->bus_ops->resume(host);
		err = host->bus_ops->resume(host);
		if (err) {
			pr_err("%s: bus resume: failed: %d\n",
			       mmc_hostname(host), err);
			err = mmc_hw_reset(host);
			if (err) {
				pr_err("%s: reset: failed: %d\n",
				       mmc_hostname(host), err);
				goto err_reset;
			} else {
				mmc_card_clr_suspended(host->card);
			}
		}
		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);
		}
	}

err_reset:
	mmc_bus_put(host);
	pr_debug("%s: Deferred resume completed\n", mmc_hostname(host));
	return 0;
	return err;
}
EXPORT_SYMBOL(mmc_resume_bus);