• Alex Porosanu's avatar
    crypto: caam - fix RNG4 instantiation · 84cf4827
    Alex Porosanu authored
    The RNG4 block in CAAM needs to be 'seeded' first before being used
    for generating pseudo-random data. The 'seeding' is done by getting
    entropy from the TRNG ring oscillator. The RTFRQMAX register controls
    the maximum allowable number of samples that can be aquired during
    an entropy sample. Depending on the clock at which the RNG4 block
    (and for that matter the SEC block) runs, it's possible that a
    hard-coded value for the maximum frequency is inadequate, i.e. more
    samples than needed are taken. This is an error, and thus the RNG4
    block doesn't get initialized.  The patch attempts to alleviate
    this issue by trying with progressivly larger frequencies, until
    the number of samples is adequate.
    This patch also fixes how a descriptor is deemed as being finished:
    instead of checking the VALID field in the DECO debug register,
    it makes sure that the DECO is idle, by checking the DECO state field
    of the said register.
    Signed-off-by: default avatarAlex Porosanu <alexandru.porosanu@freescale.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    84cf4827
ctrl.c 12.8 KB