[U-Boot] [PATCH 3/3] crypto/fsl - enable raw data instead of von Neumann data

Ruchika Gupta
2015-07-22T16:37:53Z

Acked-by: Ruchika Gupta<ruchika.gupta@freescale.com>

> -----Original Message-----
> From: Sun York-R58495
> Sent: Sunday, July 19, 2015 3:43 AM
> To: Gupta Ruchika-R66431
> Subject: Re: [PATCH 3/3] crypto/fsl - enable raw data instead of von
> Neumann data
>
> Ruchika,
>
> Please comment/ack.
>
> York
>
> On 05/05/2015 06:48 AM, Alex Porosanu wrote:
> > The sampling of the oscillator can be done in multiple modes for
> > generating the entropy value. By default, this is set to von Neumann.
> > This patch changes the sampling to raw data, since it has been
> > discovered that the generated entropy has a better 'quality'.
> >
> > Signed-off-by: Alex Porosanu <alexandru.porosanu@freescale.com>
> > ---
> > drivers/crypto/fsl/jr.c | 11 ++++++++++-
> > include/fsl_sec.h | 10 ++++++++++
> > 2 files changed, 20 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/crypto/fsl/jr.c b/drivers/crypto/fsl/jr.c index
> > aa527ec..3560668 100644
> > --- a/drivers/crypto/fsl/jr.c
> > +++ b/drivers/crypto/fsl/jr.c
> > @@ -408,8 +408,17 @@ static void kick_trng(int ent_delay)
> > sec_out32(&rng->rtfreqmin, ent_delay >> 2);
> > /* disable maximum frequency count */
> > sec_out32(&rng->rtfreqmax, RTFRQMAX_DISABLE);
> > + /* read the control register */
> > + val = sec_in32(&rng->rtmctl);
> > + /*
> > + * select raw sampling in both entropy shifter
> > + * and statistical checker
> > + */
> > + sec_setbits32(&val, RTMCTL_SAMP_MODE_RAW_ES_SC);
> > /* put RNG4 into run mode */
> > - sec_clrbits32(&rng->rtmctl, RTMCTL_PRGM);
> > + sec_clrbits32(&val, RTMCTL_PRGM);
> > + /* write back the control register */
> > + sec_out32(&rng->rtmctl, val);
> > }
> >
> > static int rng_init(void)
> > diff --git a/include/fsl_sec.h b/include/fsl_sec.h index
> > c84b6ad..672bcef 100644
> > --- a/include/fsl_sec.h
> > +++ b/include/fsl_sec.h
> > @@ -32,6 +32,16 @@
> > /* RNG4 TRNG test registers */
> > struct rng4tst {
> > #define RTMCTL_PRGM 0x00010000 /* 1 -> program mode, 0 -> run mode
> */
> > +#define RTMCTL_SAMP_MODE_VON_NEUMANN_ES_SC 0 /* use von
> Neumann data in
> > + both entropy shifter and
> > + statistical checker */
> > +#define RTMCTL_SAMP_MODE_RAW_ES_SC 1 /* use raw data in
> both
> > + entropy shifter and
> > + statistical checker */
> > +#define RTMCTL_SAMP_MODE_VON_NEUMANN_ES_RAW_SC 2 /* use
> von Neumann data in
> > + entropy shifter, raw data
> > + in statistical checker */
> > +#define RTMCTL_SAMP_MODE_INVALID 3 /* invalid combination
> */
> > u32 rtmctl; /* misc. control register */
> > u32 rtscmisc; /* statistical check misc. register */
> > u32 rtpkrrng; /* poker range register */
> >