mmc: host: sdhci-msm-ice: Support for clearing ice configuration
Adding support for clearing ice configuration. Once mmc request processing is completed, mmc driver has to call config_end to ensure key information is cleared by ICE driver. This call is optional for FDE but required for FBE. Change-Id: I8c225deda782528a7f220f7d1f81c6240caca1ae Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
This commit is contained in:
parent
a7291efc55
commit
f2d322f387
3 changed files with 38 additions and 0 deletions
|
@ -414,6 +414,37 @@ int sdhci_msm_ice_cmdq_cfg(struct sdhci_host *host,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int sdhci_msm_ice_cfg_end(struct sdhci_host *host, struct mmc_request *mrq)
|
||||
{
|
||||
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
|
||||
struct sdhci_msm_host *msm_host = pltfm_host->priv;
|
||||
int err = 0;
|
||||
struct request *req;
|
||||
|
||||
if (!host->is_crypto_en)
|
||||
return 0;
|
||||
|
||||
if (msm_host->ice.state != SDHCI_MSM_ICE_STATE_ACTIVE) {
|
||||
pr_err("%s: ice is in invalid state %d\n",
|
||||
mmc_hostname(host->mmc), msm_host->ice.state);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
req = mrq->req;
|
||||
if (req) {
|
||||
if (msm_host->ice.vops->config_end) {
|
||||
err = msm_host->ice.vops->config_end(req);
|
||||
if (err) {
|
||||
pr_err("%s: ice config end failed %d\n",
|
||||
mmc_hostname(host->mmc), err);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sdhci_msm_ice_reset(struct sdhci_host *host)
|
||||
{
|
||||
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
|
||||
|
|
|
@ -107,6 +107,7 @@ int sdhci_msm_ice_cfg(struct sdhci_host *host, struct mmc_request *mrq,
|
|||
u32 slot);
|
||||
int sdhci_msm_ice_cmdq_cfg(struct sdhci_host *host,
|
||||
struct mmc_request *mrq, u32 slot, u64 *ice_ctx);
|
||||
int sdhci_msm_ice_cfg_end(struct sdhci_host *host, struct mmc_request *mrq);
|
||||
int sdhci_msm_ice_reset(struct sdhci_host *host);
|
||||
int sdhci_msm_ice_resume(struct sdhci_host *host);
|
||||
int sdhci_msm_ice_suspend(struct sdhci_host *host);
|
||||
|
@ -143,6 +144,11 @@ inline int sdhci_msm_ice_cmdq_cfg(struct sdhci_host *host,
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
inline int sdhci_msm_ice_cfg_end(struct sdhci_host *host,
|
||||
struct mmc_request *mrq)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
inline int sdhci_msm_ice_reset(struct sdhci_host *host)
|
||||
{
|
||||
return 0;
|
||||
|
|
|
@ -4008,6 +4008,7 @@ static unsigned int sdhci_msm_get_current_limit(struct sdhci_host *host)
|
|||
static struct sdhci_ops sdhci_msm_ops = {
|
||||
.crypto_engine_cfg = sdhci_msm_ice_cfg,
|
||||
.crypto_engine_cmdq_cfg = sdhci_msm_ice_cmdq_cfg,
|
||||
.crypto_engine_cfg_end = sdhci_msm_ice_cfg_end,
|
||||
.crypto_cfg_reset = sdhci_msm_ice_cfg_reset,
|
||||
.crypto_engine_reset = sdhci_msm_ice_reset,
|
||||
.set_uhs_signaling = sdhci_msm_set_uhs_signaling,
|
||||
|
|
Loading…
Add table
Reference in a new issue