Lines Matching +full:- +full:seed

7  * See the COPYING file in the top-level directory.
9 * This driver provides the minimum functionality to initialize and seed
15 #include "qemu/main-loop.h"
17 #include "qemu/guest-random.h"
45 /* the current status for self-test and seed operations */
61 if (s->op_seed == OP_RUN) { in imx_rngc_read()
64 if (s->op_self_test == OP_RUN) { in imx_rngc_read()
74 val |= s->mask; in imx_rngc_read()
75 if (s->auto_seed) { in imx_rngc_read()
87 * We never report any statistics test or self-test errors or any in imx_rngc_read()
93 * report back the default fifo size (5 32-bit words) and in imx_rngc_read()
98 /* We always have a new seed available. */ in imx_rngc_read()
101 if (s->op_seed == OP_DONE) { in imx_rngc_read()
104 if (s->op_self_test == OP_DONE) { in imx_rngc_read()
107 if (s->op_seed == OP_RUN || s->op_self_test == OP_RUN) { in imx_rngc_read()
109 * We're busy if self-test is running or if we're in imx_rngc_read()
132 s->op_self_test = OP_IDLE; in imx_rngc_do_reset()
133 s->op_seed = OP_IDLE; in imx_rngc_do_reset()
134 s->mask = 0; in imx_rngc_do_reset()
135 s->auto_seed = false; in imx_rngc_do_reset()
154 qemu_irq_lower(s->irq); in imx_rngc_write()
158 s->op_seed = OP_RUN; in imx_rngc_write()
159 qemu_bh_schedule(s->seed_bh); in imx_rngc_write()
163 s->op_self_test = OP_RUN; in imx_rngc_write()
164 qemu_bh_schedule(s->self_test_bh); in imx_rngc_write()
175 s->mask |= RNGC_CTRL_BIT_MASK_ERR; in imx_rngc_write()
177 s->mask &= ~RNGC_CTRL_BIT_MASK_ERR; in imx_rngc_write()
181 s->mask |= RNGC_CTRL_BIT_MASK_DONE; in imx_rngc_write()
183 s->mask &= ~RNGC_CTRL_BIT_MASK_DONE; in imx_rngc_write()
187 s->auto_seed = true; in imx_rngc_write()
189 s->auto_seed = false; in imx_rngc_write()
205 s->op_self_test = OP_DONE; in imx_rngc_self_test()
206 if (!(s->mask & RNGC_CTRL_BIT_MASK_DONE)) { in imx_rngc_self_test()
207 qemu_irq_raise(s->irq); in imx_rngc_self_test()
215 s->op_seed = OP_DONE; in imx_rngc_seed()
216 if (!(s->mask & RNGC_CTRL_BIT_MASK_DONE)) { in imx_rngc_seed()
217 qemu_irq_raise(s->irq); in imx_rngc_seed()
226 memory_region_init_io(&s->iomem, OBJECT(s), &imx_rngc_ops, s, in imx_rngc_realize()
228 sysbus_init_mmio(sbd, &s->iomem); in imx_rngc_realize()
230 sysbus_init_irq(sbd, &s->irq); in imx_rngc_realize()
231 s->self_test_bh = qemu_bh_new_guarded(imx_rngc_self_test, s, in imx_rngc_realize()
232 &dev->mem_reentrancy_guard); in imx_rngc_realize()
233 s->seed_bh = qemu_bh_new_guarded(imx_rngc_seed, s, in imx_rngc_realize()
234 &dev->mem_reentrancy_guard); in imx_rngc_realize()
261 dc->realize = imx_rngc_realize; in imx_rngc_class_init()
263 dc->desc = RNGC_NAME, in imx_rngc_class_init()
264 dc->vmsd = &vmstate_imx_rngc; in imx_rngc_class_init()