diff options
author | Marcin Niestroj <m.niestroj@grinn-global.com> | 2018-09-03 13:23:51 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-09-04 10:03:49 +0200 |
commit | b8f94c6d5e20d7a5c605fe2e08dc495cbb175e88 (patch) | |
tree | 109a6bfae816039c2b16b2578c17d14405913451 /drivers/crypto | |
parent | e3e55fa3aa698bb92fa4362a36e102749c13c124 (diff) | |
download | barebox-b8f94c6d5e20d7a5c605fe2e08dc495cbb175e88.tar.gz barebox-b8f94c6d5e20d7a5c605fe2e08dc495cbb175e88.tar.xz |
crypto: caam - fix RNG init descriptor ret. code checking
Pick commit 62743a4145bb9c3fe090a48e10ddc0ebae85bfbf from Linux
upstream.
crypto: caam - fix RNG init descriptor ret. code checking
When successful, the descriptor that performs RNG initialization
is allowed to return a status code of 7000_0000h, since last command
in the descriptor is a JUMP HALT.
Signed-off-by: Horia Geant? <horia.geanta@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/crypto')
-rw-r--r-- | drivers/crypto/caam/ctrl.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index 4deed8a195..eafff8ef0a 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -170,7 +170,7 @@ static int instantiate_rng(struct device_d *ctrldev, int state_handle_mask, { struct caam_drv_private *ctrlpriv = ctrldev->priv; struct caam_ctrl __iomem *ctrl; - u32 *desc, status, rdsta_val; + u32 *desc, status = 0, rdsta_val; int ret = 0, sh_idx; ctrl = (struct caam_ctrl __iomem *)ctrlpriv->ctrl; @@ -200,7 +200,8 @@ static int instantiate_rng(struct device_d *ctrldev, int state_handle_mask, * CAAM eras), then try again. */ rdsta_val = readl(&ctrl->r4tst[0].rdsta) & RDSTA_IFMASK; - if (status || !(rdsta_val & (1 << sh_idx))) + if ((status && status != JRSTA_SSRC_JUMP_HALT_CC) || + !(rdsta_val & (1 << sh_idx))) ret = -EAGAIN; if (ret) break; |