mmc: cmdq_hci: Remove runtime PM vote if request issuing fails
Remove the runtime PM vote if command-queue request processing fails. Otherwise, in case command-queue request preparation fails, the runtime PM votes go out of sync and sdhc platform device suspend might get blocked. Change-Id: Ibe95e1653f7558a7994b606922a1625b429d57f6 Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
This commit is contained in:
parent
af5f70355c
commit
17f54d16a1
1 changed files with 18 additions and 2 deletions
|
@ -805,7 +805,7 @@ static int cmdq_request(struct mmc_host *mmc, struct mmc_request *mrq)
|
||||||
if (err) {
|
if (err) {
|
||||||
pr_err("%s: failed to configure crypto: err %d tag %d\n",
|
pr_err("%s: failed to configure crypto: err %d tag %d\n",
|
||||||
mmc_hostname(mmc), err, tag);
|
mmc_hostname(mmc), err, tag);
|
||||||
goto out;
|
goto ice_err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -823,7 +823,7 @@ static int cmdq_request(struct mmc_host *mmc, struct mmc_request *mrq)
|
||||||
if (err) {
|
if (err) {
|
||||||
pr_err("%s: %s: failed to setup tx desc: %d\n",
|
pr_err("%s: %s: failed to setup tx desc: %d\n",
|
||||||
mmc_hostname(mmc), __func__, err);
|
mmc_hostname(mmc), __func__, err);
|
||||||
goto out;
|
goto desc_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
cq_host->mrq_slot[tag] = mrq;
|
cq_host->mrq_slot[tag] = mrq;
|
||||||
|
@ -843,6 +843,22 @@ ring_doorbell:
|
||||||
/* Commit the doorbell write immediately */
|
/* Commit the doorbell write immediately */
|
||||||
wmb();
|
wmb();
|
||||||
|
|
||||||
|
return err;
|
||||||
|
|
||||||
|
desc_err:
|
||||||
|
if (cq_host->ops->crypto_cfg_end) {
|
||||||
|
err = cq_host->ops->crypto_cfg_end(mmc, mrq);
|
||||||
|
if (err) {
|
||||||
|
pr_err("%s: failed to end ice config: err %d tag %d\n",
|
||||||
|
mmc_hostname(mmc), err, tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!(cq_host->caps & CMDQ_CAP_CRYPTO_SUPPORT) &&
|
||||||
|
cq_host->ops->crypto_cfg_reset)
|
||||||
|
cq_host->ops->crypto_cfg_reset(mmc, tag);
|
||||||
|
ice_err:
|
||||||
|
if (err)
|
||||||
|
cmdq_runtime_pm_put(cq_host);
|
||||||
out:
|
out:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue