summary refs log tree commit diff stats
path: root/include/hw/misc/imx_rngc.h
diff options
context:
space:
mode:
authorMartin Kaiser <martin@kaiser.cx>2020-01-17 14:09:31 +0000
committerPeter Maydell <peter.maydell@linaro.org>2020-01-17 14:27:16 +0000
commitf03965490e4e4223903e79a4ec97139ccdd48e1b (patch)
tree55142acbe23b9f4057732cd4cca267446bff56a8 /include/hw/misc/imx_rngc.h
parent21bf9b06cb6d07c6cc437dfd47b47b28c2bb79db (diff)
downloadfocaccia-qemu-f03965490e4e4223903e79a4ec97139ccdd48e1b.tar.gz
focaccia-qemu-f03965490e4e4223903e79a4ec97139ccdd48e1b.zip
i.MX: add an emulation for RNGC
Add an emulation for the RNGC random number generator and the compatible
RNGB variant. These peripherals are included (at least) in imx25 and
imx35 chipsets.

The emulation supports the initial self test, reseeding the prng and
reading random numbers.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/hw/misc/imx_rngc.h')
-rw-r--r--include/hw/misc/imx_rngc.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/include/hw/misc/imx_rngc.h b/include/hw/misc/imx_rngc.h
new file mode 100644
index 0000000000..f0d2b44d4f
--- /dev/null
+++ b/include/hw/misc/imx_rngc.h
@@ -0,0 +1,35 @@
+/*
+ * Freescale i.MX RNGC emulation
+ *
+ * Copyright (C) 2020 Martin Kaiser <martin@kaiser.cx>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#ifndef IMX_RNGC_H
+#define IMX_RNGC_H
+
+#include "hw/sysbus.h"
+
+#define TYPE_IMX_RNGC "imx.rngc"
+#define IMX_RNGC(obj) OBJECT_CHECK(IMXRNGCState, (obj), TYPE_IMX_RNGC)
+
+typedef struct IMXRNGCState {
+    /*< private >*/
+    SysBusDevice parent_obj;
+
+    /*< public >*/
+    MemoryRegion  iomem;
+
+    uint8_t op_self_test;
+    uint8_t op_seed;
+    uint8_t mask;
+    bool    auto_seed;
+
+    QEMUBH *self_test_bh;
+    QEMUBH *seed_bh;
+    qemu_irq irq;
+} IMXRNGCState;
+
+#endif /* IMX_RNGC_H */