stm32l5xx_hal_gtzc.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. /**
  2. ******************************************************************************
  3. * @file stm32l5xx_hal_gtzc.h
  4. * @author MCD Application Team
  5. * @brief Header file of GTZC HAL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2019 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. /* Define to prevent recursive inclusion -------------------------------------*/
  19. #ifndef STM32L5xx_HAL_GTZC_H
  20. #define STM32L5xx_HAL_GTZC_H
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "stm32l5xx_hal_def.h"
  26. /** @addtogroup STM32L5xx_HAL_Driver
  27. * @{
  28. */
  29. /** @addtogroup GTZC
  30. * @{
  31. */
  32. /* Exported types ------------------------------------------------------------*/
  33. /** @defgroup GTZC_Exported_Types GTZC Exported Types
  34. * @{
  35. */
  36. /*!< Values needed for MPCBB_Attribute_ConfigTypeDef structure sizing. */
  37. #define GTZC_MCPBB_NB_VCTR_REG_MAX (24U)
  38. #define GTZC_MCPBB_NB_LCK_VCTR_REG_MAX (1U)
  39. typedef struct
  40. {
  41. uint32_t MPCBB_SecConfig_array[GTZC_MCPBB_NB_VCTR_REG_MAX]; /*!< Each element specifies secure access mode for a super-block.
  42. Each bit corresponds to a block inside the super block.
  43. 0 means non-secure, 1 means secure */
  44. uint32_t MPCBB_LockConfig_array[GTZC_MCPBB_NB_LCK_VCTR_REG_MAX]; /*!< Each bit specifies the lock configuration of a super-block (32 blocks).
  45. 0 means unlocked, 1 means locked */
  46. } MPCBB_Attribute_ConfigTypeDef;
  47. typedef struct
  48. {
  49. uint32_t SecureRWIllegalMode; /*!< Secure read/write illegal access field.
  50. It can be a value of @ref GTZC_MPCBB_SecureRWIllegalMode */
  51. uint32_t InvertSecureState; /*!< Default security state field (can be inverted or not).
  52. It can be a value of @ref GTZC_MPCBB_InvertSecureState */
  53. MPCBB_Attribute_ConfigTypeDef AttributeConfig; /*!< MPCBB attribute configuration sub-structure */
  54. } MPCBB_ConfigTypeDef;
  55. typedef struct
  56. {
  57. uint32_t AreaId; /*!< Area identifier field. It can be a value of @ref
  58. GTZC_MPCWM_AreaId */
  59. uint32_t Offset; /*!< Offset of the watermark area, starting from the selected
  60. memory base address. It must aligned on 128KB for FMC
  61. and OCTOSPI memories */
  62. uint32_t Length; /*!< Length of the watermark area, starting from the selected
  63. Offset. It must aligned on 128KB for FMC and OCTOSPI
  64. memories */
  65. uint32_t Attribute; /*!< Attributes of the watermark area. It can be a value
  66. of @ref GTZC_MPCWM_Attribute */
  67. } MPCWM_ConfigTypeDef;
  68. /**
  69. * @}
  70. */
  71. /* Private constants ---------------------------------------------------------*/
  72. /** @defgroup GTZC_Private_Constants GTZC Private Constants
  73. * @{
  74. */
  75. /** @defgroup GTZC_Private_PeriphId_composition GTZC Peripheral identifier composition
  76. * @{
  77. */
  78. /* composition definition for Peripheral identifier parameter (PeriphId) used in
  79. * HAL_GTZC_TZSC_ConfigPeriphAttributes() and HAL_GTZC_TZSC_GetConfigPeriphAttributes()
  80. * functions and also in all HAL_GTZC_TZIC relative functions.
  81. * Bitmap Definition
  82. * bits[31:28] Field "register". Define the register index a peripheral belongs to.
  83. * Each bit is dedicated to a single register.
  84. * bit[5] Field "all peripherals". If this bit is set then the PeriphId targets
  85. * all peripherals within all registers.
  86. * bits[4:0] Field "bit position". Define the bit position within the
  87. * register dedicated to the peripheral, value from 0 to 31.
  88. */
  89. #define GTZC_PERIPH_REG_SHIFT (28U)
  90. #define GTZC_PERIPH_REG (0xF0000000UL)
  91. #define GTZC_PERIPH_REG1 (0x00000000UL)
  92. #define GTZC_PERIPH_REG2 (0x10000000UL)
  93. #define GTZC_PERIPH_REG3 (0x20000000UL)
  94. #define GTZC_PERIPH_BIT_POSITION (0x0000001FUL)
  95. /**
  96. * @}
  97. */
  98. /** @defgroup GTZC_Private_Attributes_Msk GTZC Attributes Masks
  99. * @{
  100. */
  101. #define GTZC_ATTR_SEC_MASK 0x100U
  102. #define GTZC_ATTR_PRIV_MASK 0x200U
  103. /**
  104. * @}
  105. */
  106. /**
  107. * @}
  108. */
  109. /* Exported constants --------------------------------------------------------*/
  110. /** @defgroup GTZC_Exported_Constants GTZC Exported Constants
  111. * @{
  112. */
  113. /** @defgroup GTZC_MPCBB_SecureRWIllegalMode GTZC MPCBB SRWILADIS values
  114. * @{
  115. */
  116. #define GTZC_MPCBB_SRWILADIS_ENABLE (0U)
  117. #define GTZC_MPCBB_SRWILADIS_DISABLE (GTZC_MPCBB_CR_SRWILADIS_Msk)
  118. /**
  119. * @}
  120. */
  121. /** @defgroup GTZC_MPCBB_InvertSecureState GTZC MPCBB INVSECSTATE values
  122. * @{
  123. */
  124. #define GTZC_MPCBB_INVSECSTATE_NOT_INVERTED (0U)
  125. #define GTZC_MPCBB_INVSECSTATE_INVERTED (GTZC_MPCBB_CR_INVSECSTATE_Msk)
  126. /**
  127. * @}
  128. */
  129. /** @defgroup GTZC_MPCWM_AreaId GTZC MPCWM area identifier values
  130. * @{
  131. */
  132. #define GTZC_TZSC_MPCWM_ID1 (0U)
  133. #define GTZC_TZSC_MPCWM_ID2 (1U)
  134. /**
  135. * @}
  136. */
  137. /** @defgroup GTZC_TZSC_TZIC_PeriphId GTZC TZSC and TZIC Peripheral identifier values
  138. * @{
  139. */
  140. #define GTZC_PERIPH_TIM2 (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM2_Pos)
  141. #define GTZC_PERIPH_TIM3 (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM3_Pos)
  142. #define GTZC_PERIPH_TIM4 (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM4_Pos)
  143. #define GTZC_PERIPH_TIM5 (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM5_Pos)
  144. #define GTZC_PERIPH_TIM6 (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM6_Pos)
  145. #define GTZC_PERIPH_TIM7 (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM7_Pos)
  146. #define GTZC_PERIPH_WWDG (GTZC_PERIPH_REG1 | GTZC_CFGR1_WWDG_Pos)
  147. #define GTZC_PERIPH_IWDG (GTZC_PERIPH_REG1 | GTZC_CFGR1_IWDG_Pos)
  148. #define GTZC_PERIPH_SPI2 (GTZC_PERIPH_REG1 | GTZC_CFGR1_SPI2_Pos)
  149. #define GTZC_PERIPH_SPI3 (GTZC_PERIPH_REG1 | GTZC_CFGR1_SPI3_Pos)
  150. #define GTZC_PERIPH_USART2 (GTZC_PERIPH_REG1 | GTZC_CFGR1_USART2_Pos)
  151. #define GTZC_PERIPH_USART3 (GTZC_PERIPH_REG1 | GTZC_CFGR1_USART3_Pos)
  152. #define GTZC_PERIPH_UART4 (GTZC_PERIPH_REG1 | GTZC_CFGR1_UART4_Pos)
  153. #define GTZC_PERIPH_UART5 (GTZC_PERIPH_REG1 | GTZC_CFGR1_UART5_Pos)
  154. #define GTZC_PERIPH_I2C1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_I2C1_Pos)
  155. #define GTZC_PERIPH_I2C2 (GTZC_PERIPH_REG1 | GTZC_CFGR1_I2C2_Pos)
  156. #define GTZC_PERIPH_I2C3 (GTZC_PERIPH_REG1 | GTZC_CFGR1_I2C3_Pos)
  157. #define GTZC_PERIPH_CRS (GTZC_PERIPH_REG1 | GTZC_CFGR1_CRS_Pos)
  158. #define GTZC_PERIPH_DAC1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_DAC1_Pos)
  159. #define GTZC_PERIPH_OPAMP (GTZC_PERIPH_REG1 | GTZC_CFGR1_OPAMP_Pos)
  160. #define GTZC_PERIPH_LPTIM1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_LPTIM1_Pos)
  161. #define GTZC_PERIPH_LPUART1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_LPUART1_Pos)
  162. #define GTZC_PERIPH_I2C4 (GTZC_PERIPH_REG1 | GTZC_CFGR1_I2C4_Pos)
  163. #define GTZC_PERIPH_LPTIM2 (GTZC_PERIPH_REG1 | GTZC_CFGR1_LPTIM2_Pos)
  164. #define GTZC_PERIPH_LPTIM3 (GTZC_PERIPH_REG1 | GTZC_CFGR1_LPTIM3_Pos)
  165. #define GTZC_PERIPH_FDCAN1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_FDCAN1_Pos)
  166. #define GTZC_PERIPH_USBFS (GTZC_PERIPH_REG1 | GTZC_CFGR1_USBFS_Pos)
  167. #define GTZC_PERIPH_UCPD1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_UCPD1_Pos)
  168. #define GTZC_PERIPH_VREFBUF (GTZC_PERIPH_REG1 | GTZC_CFGR1_VREFBUF_Pos)
  169. #define GTZC_PERIPH_COMP (GTZC_PERIPH_REG1 | GTZC_CFGR1_COMP_Pos)
  170. #define GTZC_PERIPH_TIM1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM1_Pos)
  171. #define GTZC_PERIPH_SPI1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_SPI1_Pos)
  172. #define GTZC_PERIPH_TIM8 (GTZC_PERIPH_REG2 | GTZC_CFGR2_TIM8_Pos)
  173. #define GTZC_PERIPH_USART1 (GTZC_PERIPH_REG2 | GTZC_CFGR2_USART1_Pos)
  174. #define GTZC_PERIPH_TIM15 (GTZC_PERIPH_REG2 | GTZC_CFGR2_TIM15_Pos)
  175. #define GTZC_PERIPH_TIM16 (GTZC_PERIPH_REG2 | GTZC_CFGR2_TIM16_Pos)
  176. #define GTZC_PERIPH_TIM17 (GTZC_PERIPH_REG2 | GTZC_CFGR2_TIM17_Pos)
  177. #define GTZC_PERIPH_SAI1 (GTZC_PERIPH_REG2 | GTZC_CFGR2_SAI1_Pos)
  178. #define GTZC_PERIPH_SAI2 (GTZC_PERIPH_REG2 | GTZC_CFGR2_SAI2_Pos)
  179. #define GTZC_PERIPH_DFSDM1 (GTZC_PERIPH_REG2 | GTZC_CFGR2_DFSDM1_Pos)
  180. #define GTZC_PERIPH_CRC (GTZC_PERIPH_REG2 | GTZC_CFGR2_CRC_Pos)
  181. #define GTZC_PERIPH_TSC (GTZC_PERIPH_REG2 | GTZC_CFGR2_TSC_Pos)
  182. #define GTZC_PERIPH_ICACHE_REG (GTZC_PERIPH_REG2 | GTZC_CFGR2_ICACHE_REG_Pos)
  183. #define GTZC_PERIPH_ADC (GTZC_PERIPH_REG2 | GTZC_CFGR2_ADC_Pos)
  184. #define GTZC_PERIPH_AES (GTZC_PERIPH_REG2 | GTZC_CFGR2_AES_Pos)
  185. #define GTZC_PERIPH_HASH (GTZC_PERIPH_REG2 | GTZC_CFGR2_HASH_Pos)
  186. #define GTZC_PERIPH_RNG (GTZC_PERIPH_REG2 | GTZC_CFGR2_RNG_Pos)
  187. #define GTZC_PERIPH_PKA (GTZC_PERIPH_REG2 | GTZC_CFGR2_PKA_Pos)
  188. #define GTZC_PERIPH_SDMMC1 (GTZC_PERIPH_REG2 | GTZC_CFGR2_SDMMC1_Pos)
  189. #define GTZC_PERIPH_FMC_REG (GTZC_PERIPH_REG2 | GTZC_CFGR2_FMC_REG_Pos)
  190. #define GTZC_PERIPH_OCTOSPI1_REG (GTZC_PERIPH_REG2 | GTZC_CFGR2_OCTOSPI1_REG_Pos)
  191. #define GTZC_PERIPH_RTC (GTZC_PERIPH_REG2 | GTZC_CFGR2_RTC_Pos)
  192. #define GTZC_PERIPH_PWR (GTZC_PERIPH_REG2 | GTZC_CFGR2_PWR_Pos)
  193. #define GTZC_PERIPH_SYSCFG (GTZC_PERIPH_REG2 | GTZC_CFGR2_SYSCFG_Pos)
  194. #define GTZC_PERIPH_DMA1 (GTZC_PERIPH_REG2 | GTZC_CFGR2_DMA1_Pos)
  195. #define GTZC_PERIPH_DMA2 (GTZC_PERIPH_REG2 | GTZC_CFGR2_DMA2_Pos)
  196. #define GTZC_PERIPH_DMAMUX1 (GTZC_PERIPH_REG2 | GTZC_CFGR2_DMAMUX1_Pos)
  197. #define GTZC_PERIPH_RCC (GTZC_PERIPH_REG2 | GTZC_CFGR2_RCC_Pos)
  198. #define GTZC_PERIPH_FLASH (GTZC_PERIPH_REG2 | GTZC_CFGR2_FLASH_Pos)
  199. #define GTZC_PERIPH_FLASH_REG (GTZC_PERIPH_REG2 | GTZC_CFGR2_FLASH_REG_Pos)
  200. #define GTZC_PERIPH_EXTI (GTZC_PERIPH_REG2 | GTZC_CFGR2_EXTI_Pos)
  201. #define GTZC_PERIPH_OTFDEC1 (GTZC_PERIPH_REG2 | GTZC_CFGR2_OTFDEC1_Pos)
  202. #define GTZC_PERIPH_TZSC (GTZC_PERIPH_REG3 | GTZC_CFGR3_TZSC_Pos)
  203. #define GTZC_PERIPH_TZIC (GTZC_PERIPH_REG3 | GTZC_CFGR3_TZIC_Pos)
  204. #define GTZC_PERIPH_FMC_MEM (GTZC_PERIPH_REG3 | GTZC_CFGR3_FMC_MEM_Pos)
  205. #define GTZC_PERIPH_OCTOSPI1_MEM (GTZC_PERIPH_REG3 | GTZC_CFGR3_OCTOSPI1_MEM_Pos)
  206. #define GTZC_PERIPH_SRAM1 (GTZC_PERIPH_REG3 | GTZC_CFGR3_SRAM1_Pos)
  207. #define GTZC_PERIPH_MPCBB1_REG (GTZC_PERIPH_REG3 | GTZC_CFGR3_MPCBB1_REG_Pos)
  208. #define GTZC_PERIPH_SRAM2 (GTZC_PERIPH_REG3 | GTZC_CFGR3_SRAM2_Pos)
  209. #define GTZC_PERIPH_MPCBB2_REG (GTZC_PERIPH_REG3 | GTZC_CFGR3_MPCBB2_REG_Pos)
  210. #define GTZC_PERIPH_ALL (0x00000020U)
  211. /* Note that two maximum values are also defined here:
  212. * - max number of securable AHB/APB peripherals or masters
  213. * (used in TZSC sub-block)
  214. * - max number of securable and TrustZone-aware AHB/APB peripherals or masters
  215. * (used in TZIC sub-block)
  216. */
  217. #define GTZC_TZSC_PERIPH_NUMBER (HAL_GTZC_GET_ARRAY_INDEX(GTZC_PERIPH_OCTOSPI1_REG + 1U))
  218. #define GTZC_TZIC_PERIPH_NUMBER (HAL_GTZC_GET_ARRAY_INDEX(GTZC_PERIPH_MPCBB2_REG + 1U))
  219. /**
  220. * @}
  221. */
  222. /** @defgroup GTZC_TZSC_PeriphAttributes GTZC TZSC peripheral attribute values
  223. * @note secure and non-secure attributes are only available from secure state when the system
  224. * implement the security (TZEN=1)
  225. * @{
  226. */
  227. /* user-oriented definitions for attribute parameter (PeriphAttributes) used in
  228. * HAL_GTZC_TZSC_ConfigPeriphAttributes() and HAL_GTZC_TZSC_GetConfigPeriphAttributes()
  229. * functions
  230. */
  231. #define GTZC_TZSC_PERIPH_SEC (GTZC_ATTR_SEC_MASK | 0x00000001U) /*!< Secure attribute */
  232. #define GTZC_TZSC_PERIPH_NSEC (GTZC_ATTR_SEC_MASK | 0x00000000U) /*!< Non-secure attribute */
  233. #define GTZC_TZSC_PERIPH_PRIV (GTZC_ATTR_PRIV_MASK | 0x00000002U) /*!< Privilege attribute */
  234. #define GTZC_TZSC_PERIPH_NPRIV (GTZC_ATTR_PRIV_MASK | 0x00000000U) /*!< Non-privilege attribute */
  235. /**
  236. * @}
  237. */
  238. /** @defgroup GTZC_TZSC_Lock GTZC TZSC lock values
  239. * @{
  240. */
  241. /* user-oriented definitions for HAL_GTZC_TZSC_GetLock() returned value */
  242. #define GTZC_TZSC_LOCK_OFF (0U)
  243. #define GTZC_TZSC_LOCK_ON GTZC_TZSC_CR_LCK_Msk
  244. /**
  245. * @}
  246. */
  247. /** @defgroup GTZC_MPCWM_Group GTZC MPCWM values
  248. * @{
  249. */
  250. /* user-oriented definitions for TZSC_MPCWM */
  251. #define GTZC_TZSC_MPCWM_GRANULARITY 0x00020000U /* OCTOSPI & FMC granularity: 128 kbytes */
  252. /**
  253. * @}
  254. */
  255. /** @defgroup GTZC_MPCWM_Attribute GTZC MPCWM Attribute values
  256. * @{
  257. */
  258. /* user-oriented definitions for TZSC_MPCWM */
  259. #define GTZC_TZSC_MPCWM_REGION_NSEC (0U)
  260. #define GTZC_TZSC_MPCWM_REGION_SEC (1U)
  261. /**
  262. * @}
  263. */
  264. /** @defgroup GTZC_MPCBB_Group GTZC MPCBB values
  265. * @{
  266. */
  267. /* user-oriented definitions for MPCBB */
  268. #define GTZC_MPCBB_BLOCK_SIZE 0x100U /* 256 Bytes */
  269. #define GTZC_MPCBB_SUPERBLOCK_SIZE (GTZC_MPCBB_BLOCK_SIZE * 32U) /* 8 KBytes */
  270. #define GTZC_MCPBB_SUPERBLOCK_UNLOCKED (0U)
  271. #define GTZC_MCPBB_SUPERBLOCK_LOCKED (1U)
  272. #define GTZC_MCPBB_BLOCK_NSEC (GTZC_ATTR_SEC_MASK | 0U)
  273. #define GTZC_MCPBB_BLOCK_SEC (GTZC_ATTR_SEC_MASK | 1U)
  274. /* user-oriented definitions for HAL_GTZC_MPCBB_GetLock() returned value */
  275. #define GTZC_MCPBB_LOCK_OFF (0U)
  276. #define GTZC_MCPBB_LOCK_ON (1U)
  277. /**
  278. * @}
  279. */
  280. /** @defgroup GTZC_TZIC_Flag GTZC TZIC flag values
  281. * @{
  282. */
  283. /* user-oriented definitions for HAL_GTZC_TZIC_GetFlag() flag parameter */
  284. #define GTZC_TZIC_NO_ILA_EVENT (0U)
  285. #define GTZC_TZIC_ILA_EVENT_PENDING (1U)
  286. /**
  287. * @}
  288. */
  289. /**
  290. * @}
  291. */
  292. /* Private macros ------------------------------------------------------------*/
  293. /** @defgroup GTZC_Private_Macros GTZC Private Macros
  294. * @{
  295. */
  296. /* retrieve information to access register for a specific PeriphId */
  297. #define GTZC_GET_REG_INDEX(periph_id)\
  298. (((periph_id) & GTZC_PERIPH_REG) >> GTZC_PERIPH_REG_SHIFT)
  299. #define GTZC_GET_PERIPH_POS(periph_id) ((periph_id) & GTZC_PERIPH_BIT_POSITION)
  300. #define IS_GTZC_BASE_ADDRESS(mem, address)\
  301. ( ( (uint32_t)(address) == (uint32_t)GTZC_BASE_ADDRESS_NS(mem) ) || \
  302. ( (uint32_t)(address) == (uint32_t)GTZC_BASE_ADDRESS_S(mem) ) )
  303. #define GTZC_MEM_SIZE(mem)\
  304. ( mem ## _SIZE )
  305. #define GTZC_BASE_ADDRESS_S(mem)\
  306. ( mem ## _BASE_S )
  307. #define GTZC_BASE_ADDRESS_NS(mem)\
  308. ( mem ## _BASE_NS )
  309. /**
  310. * @}
  311. */
  312. /* Exported macros -----------------------------------------------------------*/
  313. /** @defgroup GTZC_Exported_Macros GTZC Exported Macros
  314. * @{
  315. */
  316. /* user-oriented macro to get array index of a specific PeriphId
  317. * in case of GTZC_PERIPH_ALL usage in the two following functions:
  318. * HAL_GTZC_TZSC_ConfigPeriphAttributes() and HAL_GTZC_TZSC_GetConfigPeriphAttributes()
  319. */
  320. #define HAL_GTZC_GET_ARRAY_INDEX(periph_id)\
  321. ( (GTZC_GET_REG_INDEX((periph_id)) * 32U) + GTZC_GET_PERIPH_POS((periph_id)) )
  322. /**
  323. * @}
  324. */
  325. /* Exported functions --------------------------------------------------------*/
  326. /** @addtogroup GTZC_Exported_Functions
  327. * @{
  328. */
  329. /** @addtogroup GTZC_Exported_Functions_Group1
  330. * @brief TZSC Initialization and Configuration functions
  331. * @{
  332. */
  333. HAL_StatusTypeDef HAL_GTZC_TZSC_ConfigPeriphAttributes(uint32_t PeriphId,
  334. uint32_t PeriphAttributes);
  335. HAL_StatusTypeDef HAL_GTZC_TZSC_GetConfigPeriphAttributes(uint32_t PeriphId,
  336. uint32_t *PeriphAttributes);
  337. /**
  338. * @}
  339. */
  340. #if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  341. /** @addtogroup GTZC_Exported_Functions_Group2
  342. * @brief MPCWM Initialization and Configuration functions
  343. * @{
  344. */
  345. HAL_StatusTypeDef HAL_GTZC_TZSC_MPCWM_ConfigMemAttributes(uint32_t MemBaseAddress,
  346. const MPCWM_ConfigTypeDef *pMPCWM_Desc);
  347. HAL_StatusTypeDef HAL_GTZC_TZSC_MPCWM_GetConfigMemAttributes(uint32_t MemBaseAddress,
  348. MPCWM_ConfigTypeDef *pMPCWM_Desc);
  349. /**
  350. * @}
  351. */
  352. #endif /* defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  353. /** @addtogroup GTZC_Exported_Functions_Group3
  354. * @brief TZSC and TZSC-MPCWM Lock functions
  355. * @{
  356. */
  357. #if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  358. void HAL_GTZC_TZSC_Lock(GTZC_TZSC_TypeDef *TZSC_Instance);
  359. #endif /* defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  360. uint32_t HAL_GTZC_TZSC_GetLock(const GTZC_TZSC_TypeDef *TZSC_Instance);
  361. /**
  362. * @}
  363. */
  364. #if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
  365. /** @addtogroup GTZC_Exported_Functions_Group4
  366. * @brief MPCBB Initialization and Configuration functions
  367. * @{
  368. */
  369. HAL_StatusTypeDef HAL_GTZC_MPCBB_ConfigMem(uint32_t MemBaseAddress,
  370. const MPCBB_ConfigTypeDef *pMPCBB_desc);
  371. HAL_StatusTypeDef HAL_GTZC_MPCBB_GetConfigMem(uint32_t MemBaseAddress,
  372. MPCBB_ConfigTypeDef *pMPCBB_desc);
  373. HAL_StatusTypeDef HAL_GTZC_MPCBB_ConfigMemAttributes(uint32_t MemAddress,
  374. uint32_t NbBlocks,
  375. const uint32_t *pMemAttributes);
  376. HAL_StatusTypeDef HAL_GTZC_MPCBB_GetConfigMemAttributes(uint32_t MemAddress,
  377. uint32_t NbBlocks,
  378. uint32_t *pMemAttributes);
  379. HAL_StatusTypeDef HAL_GTZC_MPCBB_LockConfig(uint32_t MemAddress,
  380. uint32_t NbSuperBlocks,
  381. const uint32_t *pLockAttributes);
  382. HAL_StatusTypeDef HAL_GTZC_MPCBB_GetLockConfig(uint32_t MemAddress,
  383. uint32_t NbSuperBlocks,
  384. uint32_t *pLockAttributes);
  385. HAL_StatusTypeDef HAL_GTZC_MPCBB_Lock(uint32_t MemBaseAddress);
  386. HAL_StatusTypeDef HAL_GTZC_MPCBB_GetLock(uint32_t MemBaseAddress,
  387. uint32_t *pLockState);
  388. /**
  389. * @}
  390. */
  391. /** @addtogroup GTZC_Exported_Functions_Group5
  392. * @brief TZIC functions
  393. * @{
  394. */
  395. HAL_StatusTypeDef HAL_GTZC_TZIC_DisableIT(uint32_t PeriphId);
  396. HAL_StatusTypeDef HAL_GTZC_TZIC_EnableIT(uint32_t PeriphId);
  397. HAL_StatusTypeDef HAL_GTZC_TZIC_GetFlag(uint32_t PeriphId, uint32_t *pFlag);
  398. HAL_StatusTypeDef HAL_GTZC_TZIC_ClearFlag(uint32_t PeriphId);
  399. /**
  400. * @}
  401. */
  402. /** @addtogroup GTZC_Exported_Functions_Group6
  403. * @brief IRQ related Functions
  404. * @{
  405. */
  406. void HAL_GTZC_IRQHandler(void);
  407. void HAL_GTZC_TZIC_Callback(uint32_t PeriphId);
  408. /**
  409. * @}
  410. */
  411. #endif /* defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
  412. /**
  413. * @}
  414. */
  415. /**
  416. * @}
  417. */
  418. /**
  419. * @}
  420. */
  421. #ifdef __cplusplus
  422. }
  423. #endif
  424. #endif /* STM32L5xx_HAL_GTZC_H */