mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-09 00:51:29 +00:00
Update TRNG handling.
Enable post processing and churn. Slice low 2 bits. Increase timeout and retry counters. BRANCH=none BUG=none TEST=tcg_tests pass Change-Id: I3a8a6d14d4b113fb6831a5c8b253e5544ce70f8e Reviewed-on: https://chromium-review.googlesource.com/394130 Commit-Ready: Marius Schilder <mschilder@chromium.org> Tested-by: Marius Schilder <mschilder@chromium.org> Reviewed-by: Marius Schilder <mschilder@chromium.org> Reviewed-by: William Wesson <wesson@google.com> Reviewed-by: Bill Richardson <wfrichar@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
36c4e34bea
commit
02915f491f
@@ -7,22 +7,25 @@
|
||||
|
||||
void init_trng(void)
|
||||
{
|
||||
GWRITE(TRNG, POST_PROCESSING_CTRL,
|
||||
GC_TRNG_POST_PROCESSING_CTRL_SHUFFLE_BITS_MASK |
|
||||
GC_TRNG_POST_PROCESSING_CTRL_CHURN_MODE_MASK);
|
||||
GWRITE(TRNG, SLICE_MAX_UPPER_LIMIT, 1);
|
||||
GWRITE(TRNG, SLICE_MIN_LOWER_LIMIT, 0);
|
||||
GWRITE(TRNG, TIMEOUT_COUNTER, 0x7ff);
|
||||
GWRITE(TRNG, TIMEOUT_MAX_TRY_NUM, 4);
|
||||
GWRITE(TRNG, POWER_DOWN_B, 1);
|
||||
GWRITE(TRNG, GO_EVENT, 1);
|
||||
while (GREAD(TRNG, EMPTY))
|
||||
;
|
||||
GREAD(TRNG, READ_DATA);
|
||||
}
|
||||
|
||||
uint32_t rand(void)
|
||||
{
|
||||
while (GREAD(TRNG, EMPTY)) {
|
||||
if (!GREAD_FIELD(TRNG, FSM_STATE, FSM_IDLE))
|
||||
continue;
|
||||
|
||||
/* TRNG must have stopped, needs to be restarted. */
|
||||
GWRITE(TRNG, STOP_WORK, 1);
|
||||
init_trng();
|
||||
if (GREAD_FIELD(TRNG, FSM_STATE, FSM_TIMEOUT)) {
|
||||
/* TRNG timed out, restart */
|
||||
GWRITE(TRNG, STOP_WORK, 1);
|
||||
GWRITE(TRNG, GO_EVENT, 1);
|
||||
}
|
||||
}
|
||||
return GREAD(TRNG, READ_DATA);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user