[PATCH 1/2] arm nomadik: add hardware RNG driver
Matt Mackall
mpm at selenic.com
Thu Dec 3 14:50:17 EST 2009
On Thu, 2009-12-03 at 13:04 +0100, Alessandro Rubini wrote:
> From: Alessandro Rubini <rubini at unipv.it>
>
> The hardware random number generator by ST is used in both the Nomadik
> 8815 SoC and the U8500. It returns 16 bits every 400ns with automatic
> delay if a read is issued too early. It depends on PLAT_NOMADIK.
> +static int nmk_rng_read(struct hwrng *rng, u32 *buffer)
> +{
> + void __iomem *base = (void __iomem *)rng->priv;
> + /*
> + * We have the low 16 bits as random data. It takes 0.4us to read them
> + * so return only one 32-bit sample (minimum allowed).
> + * High bits are guaranteed to be 0.
> + */
> + *buffer = __raw_readl(base + 8) << 16 | __raw_readl(base + 8);
> + return 4;
Please adjust this to use the new read interface we just introduced:
http://git.kernel.org/?p=linux/kernel/git/herbert/cryptodev-2.6.git;a=blobdiff;f=include/linux/hw_random.h;h=9bede7633f745d7c5bd866d2f46df9a51021f92d;hp=7244456e7e6573466f0534857bef00b8b1dbdad7;hb=9996508b3353063f2d6c48c1a28a84543d72d70b;hpb=2f32bfd834d5d7eb230bcbf39aaacccd2a01d767
(sorry for the git URL awesomeness)
This will actually let us do 8 or 16-bit reads, so we can reduce latency
and even slightly simplify your code.
Otherwise, looks fine.
--
http://selenic.com : development and support for Mercurial and Linux
More information about the linux-arm-kernel
mailing list