hwrng: npcm - modify readl to readb
authorTomer Maimon <tmaimon77@gmail.com>
Wed, 23 Sep 2020 21:23:05 +0000 (00:23 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 2 Oct 2020 08:02:13 +0000 (18:02 +1000)
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: Tomer Maimon <tmaimon77@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/char/hw_random/npcm-rng.c

index 5d0d13f..1ec5f26 100644 (file)
@@ -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);
 
-       while (max >= sizeof(u32)) {
+       while (max) {
                if (wait) {
-                       if (readl_poll_timeout(priv->base + NPCM_RNGCS_REG,
+                       if (readb_poll_timeout(priv->base + NPCM_RNGCS_REG,
                                               ready,
                                               ready & NPCM_RNG_DATA_VALID,
                                               NPCM_RNG_POLL_USEC,
                                               NPCM_RNG_TIMEOUT_USEC))
                                break;
                } else {
-                       if ((readl(priv->base + NPCM_RNGCS_REG) &
+                       if ((readb(priv->base + NPCM_RNGCS_REG) &
                            NPCM_RNG_DATA_VALID) == 0)
                                break;
                }
 
-               *(u32 *)buf = readl(priv->base + NPCM_RNGD_REG);
-               retval += sizeof(u32);
-               buf += sizeof(u32);
-               max -= sizeof(u32);
+               *(u8 *)buf = readb(priv->base + NPCM_RNGD_REG);
+               retval++;
+               buf++;
+               max--;
        }
 
        pm_runtime_mark_last_busy((struct device *)priv->rng.priv);