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

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
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -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);