On Mon, Jan 30, 2023 at 11:42:42PM +0800, Jia Jie Ho wrote: > > +static inline int starfive_hash_wait_hmac_done(struct starfive_cryp_ctx *ctx) > +{ > + struct starfive_cryp_dev *cryp = ctx->cryp; > + u32 status; > + > + return readl_relaxed_poll_timeout(cryp->base + STARFIVE_HASH_SHACSR, status, > + (status & STARFIVE_HASH_HMAC_DONE), 10, 100000); > +} > + > +static inline int starfive_hash_wait_busy(struct starfive_cryp_ctx *ctx) > +{ > + struct starfive_cryp_dev *cryp = ctx->cryp; > + u32 status; > + > + return readl_relaxed_poll_timeout(cryp->base + STARFIVE_HASH_SHACSR, status, > + !(status & STARFIVE_HASH_BUSY), 10, 100000); > +} > + > +static inline int starfive_hash_wait_key_done(struct starfive_cryp_ctx *ctx) > +{ > + struct starfive_cryp_dev *cryp = ctx->cryp; > + u32 status; > + > + return readl_relaxed_poll_timeout(cryp->base + STARFIVE_HASH_SHACSR, status, > + (status & STARFIVE_HASH_KEY_DONE), 10, 100000); > +} Is there no IRQ mechanism for this? Cheers, -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt