stm32l4xx_ll_pka.c 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /**
  2. ******************************************************************************
  3. * @file stm32l4xx_ll_pka.c
  4. * @author MCD Application Team
  5. * @brief PKA LL module driver.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2017 STMicroelectronics.
  10. * All rights reserved.
  11. *
  12. * This software is licensed under terms that can be found in the LICENSE file
  13. * in the root directory of this software component.
  14. * If no LICENSE file comes with this software, it is provided AS-IS.
  15. *
  16. ******************************************************************************
  17. */
  18. #if defined(USE_FULL_LL_DRIVER)
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "stm32l4xx_ll_pka.h"
  21. #include "stm32l4xx_ll_bus.h"
  22. #ifdef USE_FULL_ASSERT
  23. #include "stm32_assert.h"
  24. #else
  25. #define assert_param(expr) ((void)0U)
  26. #endif /* USE_FULL_ASSERT */
  27. /** @addtogroup STM32L4xx_LL_Driver
  28. * @{
  29. */
  30. #if defined(PKA)
  31. /** @addtogroup PKA_LL
  32. * @{
  33. */
  34. /* Private types -------------------------------------------------------------*/
  35. /* Private variables ---------------------------------------------------------*/
  36. /* Private constants ---------------------------------------------------------*/
  37. /* Private macros ------------------------------------------------------------*/
  38. /** @defgroup PKA_LL_Private_Macros PKA Private Constants
  39. * @{
  40. */
  41. #define IS_LL_PKA_MODE(__VALUE__) (((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM_MOD_EXP) ||\
  42. ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM) ||\
  43. ((__VALUE__) == LL_PKA_MODE_MODULAR_EXP) ||\
  44. ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM_ECC) ||\
  45. ((__VALUE__) == LL_PKA_MODE_ECC_KP_PRIMITIVE) ||\
  46. ((__VALUE__) == LL_PKA_MODE_ECDSA_SIGNATURE) ||\
  47. ((__VALUE__) == LL_PKA_MODE_ECDSA_VERIFICATION) ||\
  48. ((__VALUE__) == LL_PKA_MODE_POINT_CHECK) ||\
  49. ((__VALUE__) == LL_PKA_MODE_RSA_CRT_EXP) ||\
  50. ((__VALUE__) == LL_PKA_MODE_MODULAR_INV) ||\
  51. ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_ADD) ||\
  52. ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_SUB) ||\
  53. ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_MUL) ||\
  54. ((__VALUE__) == LL_PKA_MODE_COMPARISON) ||\
  55. ((__VALUE__) == LL_PKA_MODE_MODULAR_REDUC) ||\
  56. ((__VALUE__) == LL_PKA_MODE_MODULAR_ADD) ||\
  57. ((__VALUE__) == LL_PKA_MODE_MODULAR_SUB) ||\
  58. ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_MUL))
  59. /**
  60. * @}
  61. */
  62. /* Private function prototypes -----------------------------------------------*/
  63. /* Exported functions --------------------------------------------------------*/
  64. /** @addtogroup PKA_LL_Exported_Functions
  65. * @{
  66. */
  67. /** @addtogroup PKA_LL_EF_Init
  68. * @{
  69. */
  70. /**
  71. * @brief De-initialize PKA registers (Registers restored to their default values).
  72. * @param PKAx PKA Instance.
  73. * @retval ErrorStatus
  74. * - SUCCESS: PKA registers are de-initialized
  75. * - ERROR: PKA registers are not de-initialized
  76. */
  77. ErrorStatus LL_PKA_DeInit(const PKA_TypeDef *PKAx)
  78. {
  79. ErrorStatus status = SUCCESS;
  80. /* Check the parameters */
  81. assert_param(IS_PKA_ALL_INSTANCE(PKAx));
  82. if (PKAx == PKA)
  83. {
  84. /* Force PKA reset */
  85. LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_PKA);
  86. /* Release PKA reset */
  87. LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_PKA);
  88. }
  89. else
  90. {
  91. status = ERROR;
  92. }
  93. return (status);
  94. }
  95. /**
  96. * @brief Initialize PKA registers according to the specified parameters in PKA_InitStruct.
  97. * @param PKAx PKA Instance.
  98. * @param PKA_InitStruct pointer to a @ref LL_PKA_InitTypeDef structure
  99. * that contains the configuration information for the specified PKA peripheral.
  100. * @retval ErrorStatus
  101. * - SUCCESS: PKA registers are initialized according to PKA_InitStruct content
  102. * - ERROR: Not applicable
  103. */
  104. ErrorStatus LL_PKA_Init(PKA_TypeDef *PKAx, LL_PKA_InitTypeDef *PKA_InitStruct)
  105. {
  106. assert_param(IS_PKA_ALL_INSTANCE(PKAx));
  107. assert_param(IS_LL_PKA_MODE(PKA_InitStruct->Mode));
  108. LL_PKA_Config(PKAx, PKA_InitStruct->Mode);
  109. return (SUCCESS);
  110. }
  111. /**
  112. * @brief Set each @ref LL_PKA_InitTypeDef field to default value.
  113. * @param PKA_InitStruct pointer to a @ref LL_PKA_InitTypeDef structure
  114. * whose fields will be set to default values.
  115. * @retval None
  116. */
  117. void LL_PKA_StructInit(LL_PKA_InitTypeDef *PKA_InitStruct)
  118. {
  119. /* Reset PKA init structure parameters values */
  120. PKA_InitStruct->Mode = LL_PKA_MODE_MONTGOMERY_PARAM_MOD_EXP;
  121. }
  122. /**
  123. * @}
  124. */
  125. /**
  126. * @}
  127. */
  128. /**
  129. * @}
  130. */
  131. #endif /* defined (PKA) */
  132. /**
  133. * @}
  134. */
  135. #endif /* USE_FULL_LL_DRIVER */