Commit c2fb6446 authored by Tomer Maimon's avatar Tomer Maimon Committed by Herbert Xu

hwrng: npcm - modify readl to readb

Modify the read size to the correct HW random
registers size, 8bit.
The incorrect read size caused and faulty
HW random value.
Signed-off-by: default avatarTomer Maimon <tmaimon77@gmail.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 00c9211f
...@@ -58,24 +58,24 @@ static int npcm_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) ...@@ -58,24 +58,24 @@ static int npcm_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait)
pm_runtime_get_sync((struct device *)priv->rng.priv); pm_runtime_get_sync((struct device *)priv->rng.priv);
while (max >= sizeof(u32)) { while (max) {
if (wait) { if (wait) {
if (readl_poll_timeout(priv->base + NPCM_RNGCS_REG, if (readb_poll_timeout(priv->base + NPCM_RNGCS_REG,
ready, ready,
ready & NPCM_RNG_DATA_VALID, ready & NPCM_RNG_DATA_VALID,
NPCM_RNG_POLL_USEC, NPCM_RNG_POLL_USEC,
NPCM_RNG_TIMEOUT_USEC)) NPCM_RNG_TIMEOUT_USEC))
break; break;
} else { } else {
if ((readl(priv->base + NPCM_RNGCS_REG) & if ((readb(priv->base + NPCM_RNGCS_REG) &
NPCM_RNG_DATA_VALID) == 0) NPCM_RNG_DATA_VALID) == 0)
break; break;
} }
*(u32 *)buf = readl(priv->base + NPCM_RNGD_REG); *(u8 *)buf = readb(priv->base + NPCM_RNGD_REG);
retval += sizeof(u32); retval++;
buf += sizeof(u32); buf++;
max -= sizeof(u32); max--;
} }
pm_runtime_mark_last_busy((struct device *)priv->rng.priv); pm_runtime_mark_last_busy((struct device *)priv->rng.priv);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment