123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- #ifndef _FSL_TRNG_DRIVER_H_
- #define _FSL_TRNG_DRIVER_H_
- #include "fsl_common.h"
- #if defined(FSL_FEATURE_SOC_TRNG_COUNT) && FSL_FEATURE_SOC_TRNG_COUNT
- #define FSL_TRNG_DRIVER_VERSION (MAKE_VERSION(2, 0, 2))
- typedef enum _trng_sample_mode
- {
- kTRNG_SampleModeVonNeumann = 0U,
- kTRNG_SampleModeRaw = 1U,
- kTRNG_SampleModeVonNeumannRaw =
- 2U
- } trng_sample_mode_t;
- typedef enum _trng_clock_mode
- {
- kTRNG_ClockModeRingOscillator = 0U,
- kTRNG_ClockModeSystem = 1U
- } trng_clock_mode_t;
- typedef enum _trng_ring_osc_div
- {
- kTRNG_RingOscDiv0 = 0U,
- kTRNG_RingOscDiv2 = 1U,
- kTRNG_RingOscDiv4 = 2U,
- kTRNG_RingOscDiv8 = 3U
- } trng_ring_osc_div_t;
- typedef struct _trng_statistical_check_limit
- {
- uint32_t maximum;
- uint32_t minimum;
- } trng_statistical_check_limit_t;
- typedef struct _trng_user_config
- {
- bool lock;
- trng_clock_mode_t clockMode;
- trng_ring_osc_div_t ringOscDiv;
- trng_sample_mode_t sampleMode;
-
- uint16_t
- entropyDelay;
- uint16_t sampleSize;
- uint16_t
- sparseBitLimit;
-
- uint8_t retryCount;
- uint8_t longRunMaxLimit;
- trng_statistical_check_limit_t
- monobitLimit;
- trng_statistical_check_limit_t
- runBit1Limit;
- trng_statistical_check_limit_t
- runBit2Limit;
- trng_statistical_check_limit_t
- runBit3Limit;
- trng_statistical_check_limit_t
- runBit4Limit;
- trng_statistical_check_limit_t
- runBit5Limit;
- trng_statistical_check_limit_t runBit6PlusLimit;
- trng_statistical_check_limit_t
- pokerLimit;
- trng_statistical_check_limit_t
- frequencyCountLimit;
- } trng_config_t;
- #if defined(__cplusplus)
- extern "C" {
- #endif
- status_t TRNG_GetDefaultConfig(trng_config_t *userConfig);
- status_t TRNG_Init(TRNG_Type *base, const trng_config_t *userConfig);
- void TRNG_Deinit(TRNG_Type *base);
- status_t TRNG_GetRandomData(TRNG_Type *base, void *data, size_t dataSize);
- #if defined(__cplusplus)
- }
- #endif
- #endif
- #endif
|