forked from Imagelibrary/rtems
This patch updates STM32 H7 HAL source files. The files are taken from two STM projects from their github.com repositories: (i) https://github.com/STMicroelectronics/stm32h7xx_hal_driver.git The project files are still available under BSD-3 license and the version/commit used is: fec141ce999da655a48e1a15db83a72d564a1312 which represents Release v1.11.3 exactly. (ii) https://github.com/STMicroelectronics/cmsis_device_h7.git The project files are available under Apache 2.0 license. Fortunately the project does not contain NOTICE file so no need to do anything special when used in RTEMS. The project version/commit imported is: faccfec37f82f7a1319c21638111b0f7335de7fe which represents Release v1.10.4 exactly.
260 lines
8.2 KiB
C
260 lines
8.2 KiB
C
/**
|
|
******************************************************************************
|
|
* @file stm32h7xx_hal_rng_ex.h
|
|
* @author MCD Application Team
|
|
* @brief Header file of RNG HAL Extension module.
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* Copyright (c) 2017 STMicroelectronics.
|
|
* All rights reserved.
|
|
*
|
|
* This software is licensed under terms that can be found in the LICENSE file
|
|
* in the root directory of this software component.
|
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef STM32H7xx_HAL_RNG_EX_H
|
|
#define STM32H7xx_HAL_RNG_EX_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "stm32h7xx_hal_def.h"
|
|
|
|
/** @addtogroup STM32H7xx_HAL_Driver
|
|
* @{
|
|
*/
|
|
|
|
#if defined(RNG)
|
|
#if defined(RNG_CR_CONDRST)
|
|
|
|
/** @defgroup RNG_Ex RNG_Ex
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @brief RNG Extension HAL module driver
|
|
* @{
|
|
*/
|
|
|
|
/* Exported types ------------------------------------------------------------*/
|
|
/** @defgroup RNG_Ex_Exported_Types RNG_Ex Exported Types
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @brief RNG_Ex Exported types
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief RNG_Ex Configuration Structure definition
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t Config1; /*!< Config1 must be a value between 0 and 0x3F */
|
|
uint32_t Config2; /*!< Config2 must be a value between 0 and 0x7 */
|
|
uint32_t Config3; /*!< Config3 must be a value between 0 and 0xF */
|
|
uint32_t ClockDivider; /*!< Clock Divider factor.This parameter can
|
|
be a value of @ref RNG_Ex_Clock_Divider_Factor */
|
|
uint32_t NistCompliance; /*!< NIST compliance.This parameter can be a
|
|
value of @ref RNG_Ex_NIST_Compliance */
|
|
} RNG_ConfigTypeDef;
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported constants --------------------------------------------------------*/
|
|
/** @defgroup RNG_Ex_Exported_Constants RNG_Ex Exported Constants
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup RNG_Ex_Clock_Divider_Factor Value used to configure an internal
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* programmable divider acting on the incoming RNG clock
|
|
* @{
|
|
*/
|
|
#define RNG_CLKDIV_BY_1 (0x00000000UL) /*!< No clock division */
|
|
#define RNG_CLKDIV_BY_2 (RNG_CR_CLKDIV_0)
|
|
/*!< 2 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_4 (RNG_CR_CLKDIV_1)
|
|
/*!< 4 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_8 (RNG_CR_CLKDIV_1 | RNG_CR_CLKDIV_0)
|
|
/*!< 8 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_16 (RNG_CR_CLKDIV_2)
|
|
/*!< 16 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_32 (RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_0)
|
|
/*!< 32 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_64 (RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_1)
|
|
/*!< 64 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_128 (RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_1 | RNG_CR_CLKDIV_0)
|
|
/*!< 128 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_256 (RNG_CR_CLKDIV_3)
|
|
/*!< 256 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_512 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_0)
|
|
/*!< 512 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_1024 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_1)
|
|
/*!< 1024 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_2048 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_1 | RNG_CR_CLKDIV_0)
|
|
/*!< 2048 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_4096 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_2)
|
|
/*!< 4096 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_8192 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_0)
|
|
/*!< 8192 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_16384 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_1)
|
|
/*!< 16384 RNG clock cycles per internal RNG clock */
|
|
#define RNG_CLKDIV_BY_32768 (RNG_CR_CLKDIV_3 | RNG_CR_CLKDIV_2 | RNG_CR_CLKDIV_1 | RNG_CR_CLKDIV_0)
|
|
/*!< 32768 RNG clock cycles per internal RNG clock */
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup RNG_Ex_NIST_Compliance NIST Compliance configuration
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @{
|
|
*/
|
|
#define RNG_NIST_COMPLIANT (0x00000000UL) /*!< NIST compliant configuration*/
|
|
#define RNG_CUSTOM_NIST (RNG_CR_NISTC) /*!< Custom NIST configuration */
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Private types -------------------------------------------------------------*/
|
|
/** @defgroup RNG_Ex_Private_Types RNG_Ex Private Types
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
/** @defgroup RNG_Ex_Private_Variables RNG_Ex Private Variables
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Private constants ---------------------------------------------------------*/
|
|
/** @defgroup RNG_Ex_Private_Constants RNG_Ex Private Constants
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Private macros ------------------------------------------------------------*/
|
|
/** @defgroup RNG_Ex_Private_Macros RNG_Ex Private Macros
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @{
|
|
*/
|
|
|
|
#define IS_RNG_CLOCK_DIVIDER(__CLOCK_DIV__) (((__CLOCK_DIV__) == RNG_CLKDIV_BY_1) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_2) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_4) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_8) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_16) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_32) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_64) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_128) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_256) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_512) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_1024) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_2048) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_4096) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_8192) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_16384) || \
|
|
((__CLOCK_DIV__) == RNG_CLKDIV_BY_32768))
|
|
|
|
|
|
#define IS_RNG_NIST_COMPLIANCE(__NIST_COMPLIANCE__) (((__NIST_COMPLIANCE__) == RNG_NIST_COMPLIANT) || \
|
|
((__NIST_COMPLIANCE__) == RNG_CUSTOM_NIST))
|
|
|
|
#define IS_RNG_CONFIG1(__CONFIG1__) ((__CONFIG1__) <= 0x3FUL)
|
|
|
|
#define IS_RNG_CONFIG2(__CONFIG2__) ((__CONFIG2__) <= 0x07UL)
|
|
|
|
#define IS_RNG_CONFIG3(__CONFIG3__) ((__CONFIG3__) <= 0xFUL)
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Private functions ---------------------------------------------------------*/
|
|
/** @defgroup RNG_Ex_Private_Functions RNG_Ex Private Functions
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported functions --------------------------------------------------------*/
|
|
/** @addtogroup RNG_Ex_Exported_Functions
|
|
* @ingroup RTEMSBSPsARMSTM32H7
|
|
* @{
|
|
*/
|
|
|
|
/** @addtogroup RNG_Ex_Exported_Functions_Group1
|
|
* @{
|
|
*/
|
|
HAL_StatusTypeDef HAL_RNGEx_SetConfig(RNG_HandleTypeDef *hrng, const RNG_ConfigTypeDef *pConf);
|
|
HAL_StatusTypeDef HAL_RNGEx_GetConfig(RNG_HandleTypeDef *hrng, RNG_ConfigTypeDef *pConf);
|
|
HAL_StatusTypeDef HAL_RNGEx_LockConfig(RNG_HandleTypeDef *hrng);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @addtogroup RNG_Ex_Exported_Functions_Group2
|
|
* @{
|
|
*/
|
|
HAL_StatusTypeDef HAL_RNGEx_RecoverSeedError(RNG_HandleTypeDef *hrng);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* RNG_CR_CONDRST */
|
|
#endif /* RNG */
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif /* STM32H7xx_HAL_RNG_EX_H */
|
|
|