summaryrefslogtreecommitdiff
path: root/include/linux/timeriomem-rng.h
diff options
context:
space:
mode:
authorAlexander Clouter <alex@digriz.org.uk>2009-02-22 07:03:56 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2009-02-22 07:03:56 +0300
commit9c3c133b1ed6e6d01bfabb6de29bf3d0f0886354 (patch)
tree2e6b7184477f75820ce0947df0786920880e4d42 /include/linux/timeriomem-rng.h
parent0a2e821d627ad5ced23cf31137625b81cc205e0f (diff)
downloadlinux-9c3c133b1ed6e6d01bfabb6de29bf3d0f0886354.tar.xz
hwrng: timeriomem - New driver
Some hardware platforms, the TS-7800[1] is one for example, can supply the kernel with an entropy source, albeit a slow one for TS-7800 users, by just reading a particular IO address. This source must not be read above a certain rate otherwise the quality suffers. The driver is then hooked into by calling platform_device_(register|add|del) passing a structure similar to: ------ static struct timeriomem_rng_data ts78xx_ts_rng_data = { .address = (u32 *__iomem) TS_RNG, .period = 1000000, /* one second */ }; static struct platform_device ts78xx_ts_rng_device = { .name = "timeriomem_rng", .id = -1, .dev = { .platform_data = &ts78xx_ts_rng_data, }, .num_resources = 0, }; ------ [1] http://www.embeddedarm.com/products/board-detail.php?product=TS-7800 Signed-off-by: Alexander Clouter <alex@digriz.org.uk> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'include/linux/timeriomem-rng.h')
-rw-r--r--include/linux/timeriomem-rng.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/timeriomem-rng.h b/include/linux/timeriomem-rng.h
new file mode 100644
index 000000000000..dd253177f65f
--- /dev/null
+++ b/include/linux/timeriomem-rng.h
@@ -0,0 +1,21 @@
+/*
+ * linux/include/linux/timeriomem-rng.h
+ *
+ * Copyright (c) 2009 Alexander Clouter <alex@digriz.org.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/completion.h>
+
+struct timeriomem_rng_data {
+ struct completion completion;
+ unsigned int present:1;
+
+ u32 __iomem *address;
+
+ /* measures in usecs */
+ unsigned int period;
+};