123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534 |
- /**
- ******************************************************************************
- * @file stm32l4xx_ll_pka.h
- * @author MCD Application Team
- * @brief Header file of PKA LL 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 STM32L4xx_LL_PKA_H
- #define STM32L4xx_LL_PKA_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Includes ------------------------------------------------------------------*/
- #include "stm32l4xx.h"
- /** @addtogroup STM32L4xx_LL_Driver
- * @{
- */
- #if defined(PKA)
- /** @defgroup PKA_LL PKA
- * @{
- */
- /* Private variables ---------------------------------------------------------*/
- /* Exported types ------------------------------------------------------------*/
- #if defined(USE_FULL_LL_DRIVER)
- /** @defgroup PKA_LL_ES_INIT PKA Exported Init structure
- * @{
- */
- /**
- * @brief PKA Init structures definition
- */
- typedef struct
- {
- uint32_t Mode; /*!< Specifies the PKA operation mode.
- This parameter can be a value of @ref PKA_LL_EC_MODE.
- This feature can be modified afterwards using unitary function @ref LL_PKA_SetMode(). */
- } LL_PKA_InitTypeDef;
- /**
- * @}
- */
- #endif /* USE_FULL_LL_DRIVER */
- /* Exported constants --------------------------------------------------------*/
- /** @defgroup PKA_LL_Exported_Constants PKA Exported Constants
- * @{
- */
- /** @defgroup PKA_LL_EC_GET_FLAG Get Flags Defines
- * @brief Flags defines which can be used with LL_PKA_ReadReg function
- * @{
- */
- #define LL_PKA_SR_ADDRERRF PKA_SR_ADDRERRF
- #define LL_PKA_SR_RAMERRF PKA_SR_RAMERRF
- #define LL_PKA_SR_PROCENDF PKA_SR_PROCENDF
- #define LL_PKA_SR_BUSY PKA_SR_BUSY
- /**
- * @}
- */
- /** @defgroup PKA_LL_EC_IT IT Defines
- * @brief IT defines which can be used with LL_PKA_ReadReg and LL_PKA_WriteReg functions
- * @{
- */
- #define LL_PKA_CR_ADDRERRIE PKA_CR_ADDRERRIE
- #define LL_PKA_CR_RAMERRIE PKA_CR_RAMERRIE
- #define LL_PKA_CR_PROCENDIE PKA_CR_PROCENDIE
- #define LL_PKA_CLRFR_PROCENDFC PKA_CLRFR_PROCENDFC
- #define LL_PKA_CLRFR_RAMERRFC PKA_CLRFR_RAMERRFC
- #define LL_PKA_CLRFR_ADDRERRFC PKA_CLRFR_ADDRERRFC
- /**
- * @}
- */
- /** @defgroup PKA_LL_EC_MODE Operation Mode
- * @brief List of operation mode.
- * @{
- */
- #define LL_PKA_MODE_MONTGOMERY_PARAM_MOD_EXP ((uint32_t)0x00000000U) /*!< Compute Montgomery parameter and modular exponentiation */
- #define LL_PKA_MODE_MONTGOMERY_PARAM ((uint32_t)0x00000001U) /*!< Compute Montgomery parameter only */
- #define LL_PKA_MODE_MODULAR_EXP ((uint32_t)0x00000002U) /*!< Compute modular exponentiation only (Montgomery parameter should be loaded) */
- #define LL_PKA_MODE_MONTGOMERY_PARAM_ECC ((uint32_t)0x00000020U) /*!< Compute Montgomery parameter and compute ECC kP operation */
- #define LL_PKA_MODE_ECC_KP_PRIMITIVE ((uint32_t)0x00000022U) /*!< Compute the ECC kP primitive only (Montgomery parameter should be loaded) */
- #define LL_PKA_MODE_ECDSA_SIGNATURE ((uint32_t)0x00000024U) /*!< ECDSA signature */
- #define LL_PKA_MODE_ECDSA_VERIFICATION ((uint32_t)0x00000026U) /*!< ECDSA verification */
- #define LL_PKA_MODE_POINT_CHECK ((uint32_t)0x00000028U) /*!< Point check */
- #define LL_PKA_MODE_RSA_CRT_EXP ((uint32_t)0x00000007U) /*!< RSA CRT exponentiation */
- #define LL_PKA_MODE_MODULAR_INV ((uint32_t)0x00000008U) /*!< Modular inversion */
- #define LL_PKA_MODE_ARITHMETIC_ADD ((uint32_t)0x00000009U) /*!< Arithmetic addition */
- #define LL_PKA_MODE_ARITHMETIC_SUB ((uint32_t)0x0000000AU) /*!< Arithmetic subtraction */
- #define LL_PKA_MODE_ARITHMETIC_MUL ((uint32_t)0x0000000BU) /*!< Arithmetic multiplication */
- #define LL_PKA_MODE_COMPARISON ((uint32_t)0x0000000CU) /*!< Comparison */
- #define LL_PKA_MODE_MODULAR_REDUC ((uint32_t)0x0000000DU) /*!< Modular reduction */
- #define LL_PKA_MODE_MODULAR_ADD ((uint32_t)0x0000000EU) /*!< Modular addition */
- #define LL_PKA_MODE_MODULAR_SUB ((uint32_t)0x0000000FU) /*!< Modular subtraction */
- #define LL_PKA_MODE_MONTGOMERY_MUL ((uint32_t)0x00000010U) /*!< Montgomery multiplication */
- /**
- * @}
- */
- /**
- * @}
- */
- /* Exported macro ------------------------------------------------------------*/
- /** @defgroup PKA_LL_Exported_Macros PKA Exported Macros
- * @{
- */
- /** @defgroup PKA_LL_EM_WRITE_READ Common Write and read registers Macros
- * @{
- */
- /**
- * @brief Write a value in PKA register
- * @param __INSTANCE__ PKA Instance
- * @param __REG__ Register to be written
- * @param __VALUE__ Value to be written in the register
- * @retval None
- */
- #define LL_PKA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
- /**
- * @brief Read a value in PKA register
- * @param __INSTANCE__ PKA Instance
- * @param __REG__ Register to be read
- * @retval Register value
- */
- #define LL_PKA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
- /**
- * @}
- */
- /**
- * @}
- */
- /* Exported functions --------------------------------------------------------*/
- /** @defgroup PKA_LL_Exported_Functions PKA Exported Functions
- * @{
- */
- /** @defgroup PKA_LL_EF_Configuration Configuration
- * @{
- */
- /**
- * @brief Configure PKA peripheral.
- * @brief Set PKA operating mode.
- * @rmtoll CR MODE LL_PKA_Config
- * @param PKAx PKA Instance.
- * @param Mode This parameter can be one of the following values:
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM_MOD_EXP
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM_ECC
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM
- * @arg @ref LL_PKA_MODE_MODULAR_EXP
- * @arg @ref LL_PKA_MODE_ECC_KP_PRIMITIVE
- * @arg @ref LL_PKA_MODE_ECDSA_SIGNATURE
- * @arg @ref LL_PKA_MODE_ECDSA_VERIFICATION
- * @arg @ref LL_PKA_MODE_POINT_CHECK
- * @arg @ref LL_PKA_MODE_RSA_CRT_EXP
- * @arg @ref LL_PKA_MODE_MODULAR_INV
- * @arg @ref LL_PKA_MODE_ARITHMETIC_ADD
- * @arg @ref LL_PKA_MODE_ARITHMETIC_SUB
- * @arg @ref LL_PKA_MODE_ARITHMETIC_MUL
- * @arg @ref LL_PKA_MODE_COMPARISON
- * @arg @ref LL_PKA_MODE_MODULAR_REDUC
- * @arg @ref LL_PKA_MODE_MODULAR_ADD
- * @arg @ref LL_PKA_MODE_MODULAR_SUB
- * @arg @ref LL_PKA_MODE_MONTGOMERY_MUL
- */
- __STATIC_INLINE void LL_PKA_Config(PKA_TypeDef *PKAx, uint32_t Mode)
- {
- MODIFY_REG(PKAx->CR, (PKA_CR_MODE), (Mode << PKA_CR_MODE_Pos));
- }
- /**
- * @brief Enable PKA peripheral.
- * @rmtoll CR EN LL_PKA_Enable
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_Enable(PKA_TypeDef *PKAx)
- {
- SET_BIT(PKAx->CR, PKA_CR_EN);
- }
- /**
- * @brief Disable PKA peripheral.
- * @rmtoll CR EN LL_PKA_Disable
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_Disable(PKA_TypeDef *PKAx)
- {
- CLEAR_BIT(PKAx->CR, PKA_CR_EN);
- }
- /**
- * @brief Check if the PKA peripheral is enabled or disabled.
- * @rmtoll CR EN LL_PKA_IsEnabled
- * @param PKAx PKA Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_PKA_IsEnabled(const PKA_TypeDef *PKAx)
- {
- return ((READ_BIT(PKAx->CR, PKA_CR_EN) == (PKA_CR_EN)) ? 1UL : 0UL);
- }
- /**
- * @brief Set PKA operating mode.
- * @rmtoll CR MODE LL_PKA_SetMode
- * @param PKAx PKA Instance.
- * @param Mode This parameter can be one of the following values:
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM_MOD_EXP
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM_ECC
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM
- * @arg @ref LL_PKA_MODE_MODULAR_EXP
- * @arg @ref LL_PKA_MODE_ECC_KP_PRIMITIVE
- * @arg @ref LL_PKA_MODE_ECDSA_SIGNATURE
- * @arg @ref LL_PKA_MODE_ECDSA_VERIFICATION
- * @arg @ref LL_PKA_MODE_POINT_CHECK
- * @arg @ref LL_PKA_MODE_RSA_CRT_EXP
- * @arg @ref LL_PKA_MODE_MODULAR_INV
- * @arg @ref LL_PKA_MODE_ARITHMETIC_ADD
- * @arg @ref LL_PKA_MODE_ARITHMETIC_SUB
- * @arg @ref LL_PKA_MODE_ARITHMETIC_MUL
- * @arg @ref LL_PKA_MODE_COMPARISON
- * @arg @ref LL_PKA_MODE_MODULAR_REDUC
- * @arg @ref LL_PKA_MODE_MODULAR_ADD
- * @arg @ref LL_PKA_MODE_MODULAR_SUB
- * @arg @ref LL_PKA_MODE_MONTGOMERY_MUL
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_SetMode(PKA_TypeDef *PKAx, uint32_t Mode)
- {
- MODIFY_REG(PKAx->CR, PKA_CR_MODE, Mode << PKA_CR_MODE_Pos);
- }
- /**
- * @brief Get PKA operating mode.
- * @rmtoll CR MODE LL_PKA_GetMode
- * @param PKAx PKA Instance.
- * @retval Returned value can be one of the following values:
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM_MOD_EXP
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM_ECC
- * @arg @ref LL_PKA_MODE_MONTGOMERY_PARAM
- * @arg @ref LL_PKA_MODE_MODULAR_EXP
- * @arg @ref LL_PKA_MODE_ECC_KP_PRIMITIVE
- * @arg @ref LL_PKA_MODE_ECDSA_SIGNATURE
- * @arg @ref LL_PKA_MODE_ECDSA_VERIFICATION
- * @arg @ref LL_PKA_MODE_POINT_CHECK
- * @arg @ref LL_PKA_MODE_RSA_CRT_EXP
- * @arg @ref LL_PKA_MODE_MODULAR_INV
- * @arg @ref LL_PKA_MODE_ARITHMETIC_ADD
- * @arg @ref LL_PKA_MODE_ARITHMETIC_SUB
- * @arg @ref LL_PKA_MODE_ARITHMETIC_MUL
- * @arg @ref LL_PKA_MODE_COMPARISON
- * @arg @ref LL_PKA_MODE_MODULAR_REDUC
- * @arg @ref LL_PKA_MODE_MODULAR_ADD
- * @arg @ref LL_PKA_MODE_MODULAR_SUB
- * @arg @ref LL_PKA_MODE_MONTGOMERY_MUL
- */
- __STATIC_INLINE uint32_t LL_PKA_GetMode(const PKA_TypeDef *PKAx)
- {
- return (uint32_t)(READ_BIT(PKAx->CR, PKA_CR_MODE) >> PKA_CR_MODE_Pos);
- }
- /**
- * @brief Start the operation selected using LL_PKA_SetMode.
- * @rmtoll CR START LL_PKA_Start
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_Start(PKA_TypeDef *PKAx)
- {
- SET_BIT(PKAx->CR, PKA_CR_START);
- }
- /**
- * @}
- */
- /** @defgroup PKA_LL_EF_IT_Management IT_Management
- * @{
- */
- /**
- * @brief Enable address error interrupt.
- * @rmtoll CR ADDRERRIE LL_PKA_EnableIT_ADDRERR
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_EnableIT_ADDRERR(PKA_TypeDef *PKAx)
- {
- SET_BIT(PKAx->CR, PKA_CR_ADDRERRIE);
- }
- /**
- * @brief Enable RAM error interrupt.
- * @rmtoll CR RAMERRIE LL_PKA_EnableIT_RAMERR
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_EnableIT_RAMERR(PKA_TypeDef *PKAx)
- {
- SET_BIT(PKAx->CR, PKA_CR_RAMERRIE);
- }
- /**
- * @brief Enable end of operation interrupt.
- * @rmtoll CR PROCENDIE LL_PKA_EnableIT_PROCEND
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_EnableIT_PROCEND(PKA_TypeDef *PKAx)
- {
- SET_BIT(PKAx->CR, PKA_CR_PROCENDIE);
- }
- /**
- * @brief Disable address error interrupt.
- * @rmtoll CR ADDRERRIE LL_PKA_DisableIT_ADDERR
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_DisableIT_ADDERR(PKA_TypeDef *PKAx)
- {
- CLEAR_BIT(PKAx->CR, PKA_CR_ADDRERRIE);
- }
- /**
- * @brief Disable RAM error interrupt.
- * @rmtoll CR RAMERRIE LL_PKA_DisableIT_RAMERR
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_DisableIT_RAMERR(PKA_TypeDef *PKAx)
- {
- CLEAR_BIT(PKAx->CR, PKA_CR_RAMERRIE);
- }
- /**
- * @brief Disable End of operation interrupt.
- * @rmtoll CR PROCENDIE LL_PKA_DisableIT_PROCEND
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_DisableIT_PROCEND(PKA_TypeDef *PKAx)
- {
- CLEAR_BIT(PKAx->CR, PKA_CR_PROCENDIE);
- }
- /**
- * @brief Check if address error interrupt is enabled.
- * @rmtoll CR ADDRERRIE LL_PKA_IsEnabledIT_ADDRERR
- * @param PKAx PKA Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_PKA_IsEnabledIT_ADDRERR(const PKA_TypeDef *PKAx)
- {
- return ((READ_BIT(PKAx->CR, PKA_CR_ADDRERRIE) == (PKA_CR_ADDRERRIE)) ? 1UL : 0UL);
- }
- /**
- * @brief Check if RAM error interrupt is enabled.
- * @rmtoll CR RAMERRIE LL_PKA_IsEnabledIT_RAMERR
- * @param PKAx PKA Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_PKA_IsEnabledIT_RAMERR(const PKA_TypeDef *PKAx)
- {
- return ((READ_BIT(PKAx->CR, PKA_CR_RAMERRIE) == (PKA_CR_RAMERRIE)) ? 1UL : 0UL);
- }
- /**
- * @brief Check if end of operation interrupt is enabled.
- * @rmtoll CR PROCENDIE LL_PKA_IsEnabledIT_PROCEND
- * @param PKAx PKA Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_PKA_IsEnabledIT_PROCEND(const PKA_TypeDef *PKAx)
- {
- return ((READ_BIT(PKAx->CR, PKA_CR_PROCENDIE) == (PKA_CR_PROCENDIE)) ? 1UL : 0UL);
- }
- /**
- * @}
- */
- /** @defgroup PKA_LL_EF_FLAG_Management PKA flag management
- * @{
- */
- /**
- * @brief Get PKA address error flag.
- * @rmtoll SR ADDRERRF LL_PKA_IsActiveFlag_ADDRERR
- * @param PKAx PKA Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_PKA_IsActiveFlag_ADDRERR(const PKA_TypeDef *PKAx)
- {
- return ((READ_BIT(PKAx->SR, PKA_SR_ADDRERRF) == (PKA_SR_ADDRERRF)) ? 1UL : 0UL);
- }
- /**
- * @brief Get PKA RAM error flag.
- * @rmtoll SR RAMERRF LL_PKA_IsActiveFlag_RAMERR
- * @param PKAx PKA Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_PKA_IsActiveFlag_RAMERR(const PKA_TypeDef *PKAx)
- {
- return ((READ_BIT(PKAx->SR, PKA_SR_RAMERRF) == (PKA_SR_RAMERRF)) ? 1UL : 0UL);
- }
- /**
- * @brief Get PKA end of operation flag.
- * @rmtoll SR PROCENDF LL_PKA_IsActiveFlag_PROCEND
- * @param PKAx PKA Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_PKA_IsActiveFlag_PROCEND(const PKA_TypeDef *PKAx)
- {
- return ((READ_BIT(PKAx->SR, PKA_SR_PROCENDF) == (PKA_SR_PROCENDF)) ? 1UL : 0UL);
- }
- /**
- * @brief Get PKA busy flag.
- * @rmtoll SR BUSY LL_PKA_IsActiveFlag_BUSY
- * @param PKAx PKA Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_PKA_IsActiveFlag_BUSY(const PKA_TypeDef *PKAx)
- {
- return ((READ_BIT(PKAx->SR, PKA_SR_BUSY) == (PKA_SR_BUSY)) ? 1UL : 0UL);
- }
- /**
- * @brief Clear PKA address error flag.
- * @rmtoll CLRFR ADDRERRFC LL_PKA_ClearFlag_ADDERR
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_ClearFlag_ADDERR(PKA_TypeDef *PKAx)
- {
- SET_BIT(PKAx->CLRFR, PKA_CLRFR_ADDRERRFC);
- }
- /**
- * @brief Clear PKA RAM error flag.
- * @rmtoll CLRFR RAMERRFC LL_PKA_ClearFlag_RAMERR
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_ClearFlag_RAMERR(PKA_TypeDef *PKAx)
- {
- SET_BIT(PKAx->CLRFR, PKA_CLRFR_RAMERRFC);
- }
- /**
- * @brief Clear PKA end of operation flag.
- * @rmtoll CLRFR PROCENDFC LL_PKA_ClearFlag_PROCEND
- * @param PKAx PKA Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_PKA_ClearFlag_PROCEND(PKA_TypeDef *PKAx)
- {
- SET_BIT(PKAx->CLRFR, PKA_CLRFR_PROCENDFC);
- }
- /**
- * @}
- */
- #if defined(USE_FULL_LL_DRIVER)
- /** @defgroup PKA_LL_EF_Init Initialization and de-initialization functions
- * @{
- */
- ErrorStatus LL_PKA_DeInit(const PKA_TypeDef *PKAx);
- ErrorStatus LL_PKA_Init(PKA_TypeDef *PKAx, LL_PKA_InitTypeDef *PKA_InitStruct);
- void LL_PKA_StructInit(LL_PKA_InitTypeDef *PKA_InitStruct);
- /**
- * @}
- */
- #endif /* USE_FULL_LL_DRIVER */
- /**
- * @}
- */
- /**
- * @}
- */
- #endif /* defined(PKA) */
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* STM32L4xx_LL_PKA_H */
|