Message ID | 20230525054535.3181709-1-ji.luo@nxp.com |
---|---|
State | New |
Delegated to: | Peng Fan |
Headers | show |
Series | mmc: rpmb: poll mmc status after sending rpmb request | expand |
On 5/25/2023 1:45 PM, Ji Luo wrote: > polling the mmc status to make sure the rpmb request has been > sent and the mmc is not in BUSY state. This avoids potential > rpmb request failure during rpmb data write. > > Signed-off-by: Ji Luo <ji.luo@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> > --- > drivers/mmc/rpmb.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/mmc/rpmb.c b/drivers/mmc/rpmb.c > index b68d98573c..8bf19fd696 100644 > --- a/drivers/mmc/rpmb.c > +++ b/drivers/mmc/rpmb.c > @@ -94,6 +94,7 @@ static int mmc_rpmb_request(struct mmc *mmc, const struct s_rpmb *s, > struct mmc_cmd cmd = {0}; > struct mmc_data data; > struct sdhci_host *host = mmc->priv; > + int timeout_ms = 1000; > int ret; > > ret = mmc_set_blockcount(mmc, count, is_rel_write); > @@ -123,6 +124,15 @@ static int mmc_rpmb_request(struct mmc *mmc, const struct s_rpmb *s, > #endif > return 1; > } > + > + /* poll for the ready status */ > + if (mmc_poll_for_busy(mmc, timeout_ms)) { > +#ifdef CONFIG_MMC_RPMB_TRACE > + printf("%s:mmc is busy!\n", __func__); > +#endif > + return 1; > + } > + > return 0; > } > static int mmc_rpmb_response(struct mmc *mmc, struct s_rpmb *s,
diff --git a/drivers/mmc/rpmb.c b/drivers/mmc/rpmb.c index b68d98573c..8bf19fd696 100644 --- a/drivers/mmc/rpmb.c +++ b/drivers/mmc/rpmb.c @@ -94,6 +94,7 @@ static int mmc_rpmb_request(struct mmc *mmc, const struct s_rpmb *s, struct mmc_cmd cmd = {0}; struct mmc_data data; struct sdhci_host *host = mmc->priv; + int timeout_ms = 1000; int ret; ret = mmc_set_blockcount(mmc, count, is_rel_write); @@ -123,6 +124,15 @@ static int mmc_rpmb_request(struct mmc *mmc, const struct s_rpmb *s, #endif return 1; } + + /* poll for the ready status */ + if (mmc_poll_for_busy(mmc, timeout_ms)) { +#ifdef CONFIG_MMC_RPMB_TRACE + printf("%s:mmc is busy!\n", __func__); +#endif + return 1; + } + return 0; } static int mmc_rpmb_response(struct mmc *mmc, struct s_rpmb *s,
polling the mmc status to make sure the rpmb request has been sent and the mmc is not in BUSY state. This avoids potential rpmb request failure during rpmb data write. Signed-off-by: Ji Luo <ji.luo@nxp.com> --- drivers/mmc/rpmb.c | 10 ++++++++++ 1 file changed, 10 insertions(+)