105 lines
2.3 KiB
C
105 lines
2.3 KiB
C
/*
|
|
* Copyright 2017, 2019, 2021 NXP
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef FSL_RNG_DRIVER_H_
|
|
#define FSL_RNG_DRIVER_H_
|
|
|
|
#include "fsl_common.h"
|
|
|
|
/*!
|
|
* @addtogroup rng
|
|
* @{
|
|
*/
|
|
|
|
/*******************************************************************************
|
|
* Definitions
|
|
*******************************************************************************/
|
|
|
|
/*! @name Driver version */
|
|
/*! @{ */
|
|
/*! @brief RNG driver version. Version 2.0.3.
|
|
*
|
|
* Current version: 2.0.3
|
|
*
|
|
* Change log:
|
|
* - Version 2.0.0
|
|
* - Initial version
|
|
*
|
|
* - Version 2.0.1
|
|
* - Fix MISRA C-2012 issue.
|
|
*
|
|
* - Version 2.0.2
|
|
* - Add RESET_PeripheralReset function inside RNG_Init and RNG_Deinit functions.
|
|
*
|
|
* - Version 2.0.3
|
|
* - Modified RNG_Init and RNG_GetRandomData functions, added rng_accumulateEntropy and rng_readEntropy functions.
|
|
* - These changes are reflecting recommended usage of RNG according to device UM.
|
|
*/
|
|
#define FSL_RNG_DRIVER_VERSION (MAKE_VERSION(2, 0, 3))
|
|
/*! @} */
|
|
|
|
/*******************************************************************************
|
|
* API
|
|
*******************************************************************************/
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*!
|
|
* @brief Initializes the RNG.
|
|
*
|
|
* This function initializes the RNG.
|
|
* When called, the RNG module and ring oscillator is enabled.
|
|
*
|
|
* @param base RNG base address
|
|
* @return If successful, returns the kStatus_RNG_Success. Otherwise, it returns an error.
|
|
*/
|
|
void RNG_Init(RNG_Type *base);
|
|
|
|
/*!
|
|
* @brief Shuts down the RNG.
|
|
*
|
|
* This function shuts down the RNG.
|
|
*
|
|
* @param base RNG base address.
|
|
*/
|
|
void RNG_Deinit(RNG_Type *base);
|
|
|
|
/*!
|
|
* @brief Gets random data.
|
|
*
|
|
* This function gets random data from the RNG.
|
|
*
|
|
* @param base RNG base address.
|
|
* @param data Pointer address used to store random data.
|
|
* @param dataSize Size of the buffer pointed by the data parameter.
|
|
* @return random data
|
|
*/
|
|
status_t RNG_GetRandomData(RNG_Type *base, void *data, size_t dataSize);
|
|
|
|
/*!
|
|
* @brief Returns random 32-bit number.
|
|
*
|
|
* This function gets random number from the RNG.
|
|
*
|
|
* @param base RNG base address.
|
|
* @return random number
|
|
*/
|
|
static inline uint32_t RNG_GetRandomWord(RNG_Type *base)
|
|
{
|
|
return base->RANDOM_NUMBER;
|
|
}
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
/*! @}*/
|
|
|
|
#endif /*FSL_RNG_H_*/
|