1 /**
2   ******************************************************************************
3   * @file    stm32wbaxx_hal_gtzc.h
4   * @author  MCD Application Team
5   * @brief   Header file of GTZC HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2022 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 STM32WBAxx_HAL_GTZC_H
20 #define STM32WBAxx_HAL_GTZC_H
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 /* Includes ------------------------------------------------------------------*/
27 #include "stm32wbaxx_hal_def.h"
28 
29 /** @addtogroup STM32WBAxx_HAL_Driver
30   * @{
31   */
32 
33 #if defined(GTZC_TZSC) && defined(HAL_GTZC_MODULE_ENABLED)
34 
35 /** @addtogroup GTZC
36   * @{
37   */
38 
39 /* Exported types ------------------------------------------------------------*/
40 
41 /** @defgroup GTZC_Exported_Types GTZC Exported Types
42   * @{
43   */
44 
45 /*!< Values needed for MPCBB_Attribute_ConfigTypeDef structure sizing */
46 #if  defined (STM32WBA52xx) || defined (STM32WBA54xx) || defined (STM32WBA55xx) || defined (STM32WBA5Mxx)
47 #define GTZC_MPCBB_NB_VCTR_REG_MAX      4U  /*!< Maximum number of superblocks */
48 #endif
49 #define GTZC_MPCBB_NB_LCK_VCTR_REG_MAX  1U  /*!< Maximum number of 32-bit registers to lock superblocks */
50 typedef struct
51 {
52   uint32_t MPCBB_SecConfig_array[GTZC_MPCBB_NB_VCTR_REG_MAX];  /*!< Each element specifies secure access mode for a super-block.
53                                                                     Each bit corresponds to a block inside the super-block.
54                                                                     0 means non-secure, 1 means secure */
55   uint32_t MPCBB_PrivConfig_array[GTZC_MPCBB_NB_VCTR_REG_MAX]; /*!< Each element specifies privilege access mode for a super-block.
56                                                                     Each bit corresponds to a block inside the super-block.
57                                                                     0 means non-privilege, 1 means privilege */
58   uint32_t MPCBB_LockConfig_array[GTZC_MPCBB_NB_LCK_VCTR_REG_MAX]; /*!< Each bit specifies the lock configuration of a super-block (32 blocks).
59                                                                         0 means unlocked, 1 means locked */
60 } MPCBB_Attribute_ConfigTypeDef;
61 
62 typedef struct
63 {
64   uint32_t SecureRWIllegalMode; /*!< Secure read/write illegal access
65                                      field. It can be a value of @ref GTZC_MPCBB_SecureRWIllegalMode */
66   uint32_t InvertSecureState;   /*!< Default security state field (can be inverted or not).
67                                      It can be a value of @ref GTZC_MPCBB_InvertSecureState */
68   MPCBB_Attribute_ConfigTypeDef AttributeConfig; /*!< MPCBB attribute configuration sub-structure */
69 } MPCBB_ConfigTypeDef;
70 
71 /**
72   * @}
73   */
74 
75 /* Private constants ---------------------------------------------------------*/
76 
77 /** @defgroup GTZC_Private_Constants GTZC Private Constants
78   * @{
79   */
80 
81 /** @defgroup GTZC_Private_PeriphId_composition GTZC Peripheral identifier composition
82   * @{
83   */
84 
85 /* composition definition for Peripheral identifier parameter (PeriphId) used in
86  * HAL_GTZC_TZSC_ConfigPeriphAttributes() and HAL_GTZC_TZSC_GetConfigPeriphAttributes()
87  * functions and also in all HAL_GTZC_TZIC relative functions.
88  * Bitmap Definition
89  *   bits[31:28] Field "register". Define the register index a peripheral belongs to.
90  *               Each bit is dedicated to a single register.
91  *   bit[5]      Field "all peripherals". If this bit is set then the PeriphId targets
92  *               all peripherals within all registers.
93  *   bits[4:0]   Field "bit position". Define the bit position within the
94  *               register dedicated to the peripheral, value from 0 to 31.
95  */
96 #define GTZC_PERIPH_REG_SHIFT     (28U)
97 #define GTZC_PERIPH_REG           (0xF0000000U)
98 #define GTZC_PERIPH_REG1          (0x00000000U)
99 #define GTZC_PERIPH_REG2          (0x10000000U)
100 #define GTZC_PERIPH_REG3          (0x20000000U)
101 #define GTZC_PERIPH_REG4          (0x30000000U)
102 #define GTZC_PERIPH_BIT_POSITION  (0x0000001FU)
103 
104 /**
105   * @}
106   */
107 
108 /** @defgroup GTZC_Private_Attributes_Msk GTZC Attributes Masks
109   * @{
110   */
111 #define GTZC_ATTR_SEC_MASK         0x100U
112 #define GTZC_ATTR_PRIV_MASK        0x200U
113 
114 /**
115   * @}
116   */
117 
118 /**
119   * @}
120   */
121 
122 /* Exported constants --------------------------------------------------------*/
123 
124 /** @defgroup GTZC_Exported_Constants GTZC Exported Constants
125   * @{
126   */
127 
128 /** @defgroup GTZC_MPCBB_SecureRWIllegalMode GTZC MPCBB SRWILADIS values
129   * @{
130   */
131 
132 #define GTZC_MPCBB_SRWILADIS_ENABLE  0U
133 #define GTZC_MPCBB_SRWILADIS_DISABLE GTZC_MPCBB_CR_SRWILADIS_Msk
134 
135 /**
136   * @}
137   */
138 
139 /** @defgroup GTZC_MPCBB_InvertSecureState GTZC MPCBB INVSECSTATE values
140   * @{
141   */
142 
143 #define GTZC_MPCBB_INVSECSTATE_NOT_INVERTED  0U
144 #define GTZC_MPCBB_INVSECSTATE_INVERTED      GTZC_MPCBB_CR_INVSECSTATE_Msk
145 
146 /**
147   * @}
148   */
149 
150 /** @defgroup GTZC_TZSC_TZIC_PeriphId GTZC TZSC and TZIC Peripheral identifier values
151   * @{
152   */
153 /* GTZC */
154 #define GTZC_PERIPH_TIM2          (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM2_Pos)
155 #if defined (TIM3)
156 #define GTZC_PERIPH_TIM3          (GTZC_PERIPH_REG1 | GTZC_CFGR1_TIM3_Pos)
157 #endif /* TIM3 */
158 #if defined (WWDG)
159 #define GTZC_PERIPH_WWDG          (GTZC_PERIPH_REG1 | GTZC_CFGR1_WWDG_Pos)
160 #endif /* WWDG */
161 #define GTZC_PERIPH_IWDG          (GTZC_PERIPH_REG1 | GTZC_CFGR1_IWDG_Pos)
162 #if defined (USART2)
163 #define GTZC_PERIPH_USART2        (GTZC_PERIPH_REG1 | GTZC_CFGR1_USART2_Pos)
164 #endif /* USART2 */
165 #define GTZC_PERIPH_I2C1          (GTZC_PERIPH_REG1 | GTZC_CFGR1_I2C1_Pos)
166 #define GTZC_PERIPH_LPTIM2        (GTZC_PERIPH_REG1 | GTZC_CFGR1_LPTIM2_Pos)
167 
168 #if defined (TIM1)
169 #define GTZC_PERIPH_TIM1          (GTZC_PERIPH_REG2 | GTZC_CFGR2_TIM1_Pos)
170 #endif /* TIM1 */
171 #define GTZC_PERIPH_SPI1          (GTZC_PERIPH_REG2 | GTZC_CFGR2_SPI1_Pos)
172 #define GTZC_PERIPH_USART1        (GTZC_PERIPH_REG2 | GTZC_CFGR2_USART1_Pos)
173 #define GTZC_PERIPH_TIM16         (GTZC_PERIPH_REG2 | GTZC_CFGR2_TIM16_Pos)
174 #define GTZC_PERIPH_TIM17         (GTZC_PERIPH_REG2 | GTZC_CFGR2_TIM17_Pos)
175 #if defined (SAI1)
176 #define GTZC_PERIPH_SAI1          (GTZC_PERIPH_REG2 | GTZC_CFGR2_SAI1_Pos)
177 #endif /* SAI1 */
178 #if defined (SPI3)
179 #define GTZC_PERIPH_SPI3          (GTZC_PERIPH_REG2 | GTZC_CFGR2_SPI3_Pos)
180 #endif /* SPI3 */
181 #define GTZC_PERIPH_LPUART1       (GTZC_PERIPH_REG2 | GTZC_CFGR2_LPUART1_Pos)
182 #define GTZC_PERIPH_I2C3          (GTZC_PERIPH_REG2 | GTZC_CFGR2_I2C3_Pos)
183 #define GTZC_PERIPH_LPTIM1        (GTZC_PERIPH_REG2 | GTZC_CFGR2_LPTIM1_Pos)
184 #if defined (COMP1)
185 #define GTZC_PERIPH_COMP          (GTZC_PERIPH_REG2 | GTZC_CFGR2_COMP_Pos)
186 #endif /* COMP1 */
187 #define GTZC_PERIPH_ADC4          (GTZC_PERIPH_REG2 | GTZC_CFGR2_ADC4_Pos)
188 
189 #define GTZC_PERIPH_CRC           (GTZC_PERIPH_REG3 | GTZC_CFGR3_CRC_Pos)
190 #if defined (TSC)
191 #define GTZC_PERIPH_TSC           (GTZC_PERIPH_REG3 | GTZC_CFGR3_TSC_Pos)
192 #endif /* TSC */
193 #define GTZC_PERIPH_ICACHE_REG    (GTZC_PERIPH_REG3 | GTZC_CFGR3_ICACHE_REG_Pos)
194 #define GTZC_PERIPH_AES           (GTZC_PERIPH_REG3 | GTZC_CFGR3_AES_Pos)
195 #define GTZC_PERIPH_HASH          (GTZC_PERIPH_REG3 | GTZC_CFGR3_HASH_Pos)
196 #define GTZC_PERIPH_RNG           (GTZC_PERIPH_REG3 | GTZC_CFGR3_RNG_Pos)
197 #if defined (SAES)
198 #define GTZC_PERIPH_SAES          (GTZC_PERIPH_REG3 | GTZC_CFGR3_SAES_Pos)
199 #endif /* SAES */
200 #if defined (HSEM)
201 #define GTZC_PERIPH_HSEM          (GTZC_PERIPH_REG3 | GTZC_CFGR3_HSEM_Pos)
202 #endif /* HSEM */
203 #define GTZC_PERIPH_PKA           (GTZC_PERIPH_REG3 | GTZC_CFGR3_PKA_Pos)
204 #define GTZC_PERIPH_RAMCFG        (GTZC_PERIPH_REG3 | GTZC_CFGR3_RAMCFG_Pos)
205 #define GTZC_PERIPH_RADIO         (GTZC_PERIPH_REG3 | GTZC_CFGR3_RADIO_Pos)
206 #if defined (PTACONV)
207 #define GTZC_PERIPH_PTACONV       (GTZC_PERIPH_REG3 | GTZC_CFGR3_PTACONV_Pos)
208 #endif /* PTACONV */
209 
210 #define GTZC_PERIPH_GPDMA1        (GTZC_PERIPH_REG4 | GTZC_CFGR4_GPDMA1_Pos)
211 #define GTZC_PERIPH_FLASH         (GTZC_PERIPH_REG4 | GTZC_CFGR4_FLASH_Pos)
212 #define GTZC_PERIPH_FLASH_REG     (GTZC_PERIPH_REG4 | GTZC_CFGR4_FLASH_REG_Pos)
213 #define GTZC_PERIPH_SYSCFG        (GTZC_PERIPH_REG4 | GTZC_CFGR4_SYSCFG_Pos)
214 #define GTZC_PERIPH_RTC           (GTZC_PERIPH_REG4 | GTZC_CFGR4_RTC_Pos)
215 #define GTZC_PERIPH_TAMP          (GTZC_PERIPH_REG4 | GTZC_CFGR4_TAMP_Pos)
216 #define GTZC_PERIPH_PWR           (GTZC_PERIPH_REG4 | GTZC_CFGR4_PWR_Pos)
217 #define GTZC_PERIPH_RCC           (GTZC_PERIPH_REG4 | GTZC_CFGR4_RCC_Pos)
218 #define GTZC_PERIPH_EXTI          (GTZC_PERIPH_REG4 | GTZC_CFGR4_EXTI_Pos)
219 #define GTZC_PERIPH_TZSC          (GTZC_PERIPH_REG4 | GTZC_CFGR4_TZSC_Pos)
220 #define GTZC_PERIPH_TZIC          (GTZC_PERIPH_REG4 | GTZC_CFGR4_TZIC_Pos)
221 #define GTZC_PERIPH_SRAM1         (GTZC_PERIPH_REG4 | GTZC_CFGR4_SRAM1_Pos)
222 #define GTZC_PERIPH_MPCBB1_REG    (GTZC_PERIPH_REG4 | GTZC_CFGR4_MPCBB1_REG_Pos)
223 #define GTZC_PERIPH_SRAM2         (GTZC_PERIPH_REG4 | GTZC_CFGR4_SRAM2_Pos)
224 #define GTZC_PERIPH_MPCBB2_REG    (GTZC_PERIPH_REG4 | GTZC_CFGR4_MPCBB2_REG_Pos)
225 #if defined (SRAM6_BASE)
226 #define GTZC_PERIPH_SRAM6         (GTZC_PERIPH_REG4 | GTZC_CFGR4_SRAM6_Pos)
227 #define GTZC_PERIPH_MPCBB6_REG    (GTZC_PERIPH_REG4 | GTZC_CFGR4_MPCBB6_REG_Pos)
228 #endif /* SRAM6 */
229 
230 #define GTZC_PERIPH_ALL           (0x00000020U)
231 
232 /* Note that two maximum values are also defined here:
233  * - max number of securable AHB/APB peripherals or masters
234  *   (used in TZSC sub-block)
235  * - max number of securable and TrustZone-aware AHB/APB peripherals or masters
236  *   (used in TZIC sub-block)
237  */
238 #if defined (PTACONV)
239 #define GTZC_TZSC_PERIPH_NUMBER   (HAL_GTZC_GET_ARRAY_INDEX(GTZC_PERIPH_PTACONV) + 1U)
240 #else
241 #define GTZC_TZSC_PERIPH_NUMBER   (HAL_GTZC_GET_ARRAY_INDEX(GTZC_PERIPH_RADIO) + 1U)
242 #endif /* PTACONV */
243 #define GTZC_TZIC_PERIPH_NUMBER   (HAL_GTZC_GET_ARRAY_INDEX(GTZC_PERIPH_MPCBB6_REG) + 1U)
244 
245 /**
246   * @}
247   */
248 
249 /** @defgroup GTZC_TZSC_PeriphAttributes GTZC TZSC peripheral attribute values
250   * @{
251   */
252 
253 /* user-oriented definitions for attribute parameter (PeriphAttributes) used in
254  * HAL_GTZC_TZSC_ConfigPeriphAttributes() and HAL_GTZC_TZSC_GetConfigPeriphAttributes()
255  * functions
256  */
257 #define GTZC_TZSC_PERIPH_SEC    (GTZC_ATTR_SEC_MASK | 0x00000001U)  /*!< Secure attribute        */
258 #define GTZC_TZSC_PERIPH_NSEC   (GTZC_ATTR_SEC_MASK | 0x00000000U)  /*!< Non-secure attribute    */
259 #define GTZC_TZSC_PERIPH_PRIV   (GTZC_ATTR_PRIV_MASK | 0x00000002U) /*!< Privilege attribute     */
260 #define GTZC_TZSC_PERIPH_NPRIV  (GTZC_ATTR_PRIV_MASK | 0x00000000U) /*!< Non-privilege attribute */
261 
262 /**
263   * @}
264   */
265 
266 /** @defgroup GTZC_TZSC_Lock GTZC TZSC lock values
267   * @{
268   */
269 
270 /* user-oriented definitions for HAL_GTZC_TZSC_GetLock() returned value */
271 #define GTZC_TZSC_LOCK_OFF  0U
272 #define GTZC_TZSC_LOCK_ON   GTZC_TZSC_CR_LCK_Msk
273 
274 /**
275   * @}
276   */
277 
278 /** @defgroup GTZC_MPCBB_Group GTZC MPCBB values
279   * @{
280   */
281 
282 /* user-oriented definitions for MPCBB */
283 #define GTZC_MPCBB_BLOCK_SIZE           0x200U                        /* 512 Bytes */
284 #define GTZC_MPCBB_SUPERBLOCK_SIZE      (GTZC_MPCBB_BLOCK_SIZE * 32U) /* 16 KBytes */
285 #define GTZC_MCPBB_SUPERBLOCK_UNLOCKED  0U
286 #define GTZC_MCPBB_SUPERBLOCK_LOCKED    1U
287 
288 #define GTZC_MCPBB_BLOCK_NSEC           (GTZC_ATTR_SEC_MASK  | 0U)
289 #define GTZC_MCPBB_BLOCK_SEC            (GTZC_ATTR_SEC_MASK  | 1U)
290 #define GTZC_MCPBB_BLOCK_NPRIV          (GTZC_ATTR_PRIV_MASK | 0U)
291 #define GTZC_MCPBB_BLOCK_PRIV           (GTZC_ATTR_PRIV_MASK | 2U)
292 
293 /* user-oriented definitions for HAL_GTZC_MPCBB_GetLock() returned value */
294 #define GTZC_MCPBB_LOCK_OFF  0U
295 #define GTZC_MCPBB_LOCK_ON   1U
296 
297 /**
298   * @}
299   */
300 
301 /** @defgroup GTZC_TZIC_Flag GTZC TZIC flag values
302   * @{
303   */
304 
305 /* user-oriented definitions for HAL_GTZC_TZIC_GetFlag() flag parameter */
306 #define GTZC_TZIC_NO_ILA_EVENT       0U
307 #define GTZC_TZIC_ILA_EVENT_PENDING  1U
308 
309 /**
310   * @}
311   */
312 
313 /**
314   * @}
315   */
316 
317 /* Private macros ------------------------------------------------------------*/
318 
319 /** @defgroup GTZC_Private_Macros GTZC Private Macros
320   * @{
321   */
322 
323 /* retrieve information to access register for a specific PeriphId */
324 #define GTZC_GET_REG_INDEX(periph_id)\
325   (((periph_id) & GTZC_PERIPH_REG) >> GTZC_PERIPH_REG_SHIFT)
326 #define GTZC_GET_REG_INDEX_IN_INSTANCE(periph_id)\
327   ((((periph_id) & GTZC_PERIPH_REG) <= GTZC_PERIPH_REG4) ? \
328    (((periph_id) & GTZC_PERIPH_REG) >> GTZC_PERIPH_REG_SHIFT) : \
329    ((((periph_id) & GTZC_PERIPH_REG) >> GTZC_PERIPH_REG_SHIFT) - 4U))
330 #define GTZC_GET_PERIPH_POS(periph_id)     ((periph_id) & GTZC_PERIPH_BIT_POSITION)
331 
332 #if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
333 #define IS_GTZC_BASE_ADDRESS(mem, address)\
334   ( ( (uint32_t)(address) == (uint32_t)GTZC_BASE_ADDRESS_NS(mem) ) || \
335     ( (uint32_t)(address) == (uint32_t)GTZC_BASE_ADDRESS_S(mem) ) )
336 #else
337 #define IS_GTZC_BASE_ADDRESS(mem, address)\
338   ( (uint32_t)(address) == (uint32_t)GTZC_BASE_ADDRESS_NS(mem) )
339 #endif /* #if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
340 
341 /* MISRA C:2012 Rule-20.10 deviation granted to use the definition of */
342 /* GTZC_MEM_SIZE(), GTZC_BASE_ADDRESS_S() and GTZC_BASE_ADDRESS_NS() */
343 #define GTZC_MEM_SIZE(mem)\
344   ( mem ## _SIZE )
345 
346 #define GTZC_BASE_ADDRESS_S(mem)\
347   ( mem ## _BASE_S )
348 
349 #define GTZC_BASE_ADDRESS_NS(mem)\
350   ( mem ## _BASE_NS )
351 
352 /**
353   * @}
354   */
355 
356 /* Exported macros -----------------------------------------------------------*/
357 
358 /** @defgroup GTZC_Exported_Macros GTZC Exported Macros
359   * @{
360   */
361 
362 /* user-oriented macro to get array index of a specific PeriphId
363   * in case of GTZC_PERIPH_ALL usage in the two following functions:
364   * HAL_GTZC_TZSC_ConfigPeriphAttributes() and HAL_GTZC_TZSC_GetConfigPeriphAttributes()
365   */
366 #define HAL_GTZC_GET_ARRAY_INDEX(periph_id) \
367   ((GTZC_GET_REG_INDEX((periph_id)) * 32U) + GTZC_GET_PERIPH_POS((periph_id)))
368 
369 #define HAL_GTZC_TZSC_GET_ARRAY_INDEX(periph_id) \
370   (((GTZC_GET_REG_INDEX(periph_id) * 32U) + GTZC_GET_PERIPH_POS(periph_id)))
371 
372 #define HAL_GTZC_TZIC_GET_ARRAY_INDEX(periph_id) \
373   ((GTZC_GET_REG_INDEX((periph_id)) * 32U) + GTZC_GET_PERIPH_POS((periph_id)))
374 
375 /**
376   * @}
377   */
378 
379 /* Exported functions --------------------------------------------------------*/
380 
381 /** @addtogroup GTZC_Exported_Functions
382   * @{
383   */
384 
385 /** @addtogroup GTZC_Exported_Functions_Group1
386   * @brief    TZSC Initialization and Configuration functions
387   * @{
388   */
389 
390 HAL_StatusTypeDef HAL_GTZC_TZSC_ConfigPeriphAttributes(uint32_t PeriphId,
391                                                        uint32_t PeriphAttributes);
392 HAL_StatusTypeDef HAL_GTZC_TZSC_GetConfigPeriphAttributes(uint32_t PeriphId,
393                                                           uint32_t *PeriphAttributes);
394 
395 /**
396   * @}
397   */
398 
399 #if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
400 
401 /** @addtogroup GTZC_Exported_Functions_Group3
402   * @brief    TZSC and TZSC-MPCWM Lock functions
403   * @{
404   */
405 
406 void     HAL_GTZC_TZSC_Lock(GTZC_TZSC_TypeDef *TZSC_Instance);
407 uint32_t HAL_GTZC_TZSC_GetLock(const GTZC_TZSC_TypeDef *TZSC_Instance);
408 
409 /**
410   * @}
411   */
412 #endif /* defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
413 /** @addtogroup GTZC_Exported_Functions_Group4
414   * @brief    MPCBB Initialization and Configuration functions
415   * @{
416   */
417 
418 HAL_StatusTypeDef HAL_GTZC_MPCBB_ConfigMem(uint32_t MemBaseAddress,
419                                            const MPCBB_ConfigTypeDef *pMPCBB_desc);
420 HAL_StatusTypeDef HAL_GTZC_MPCBB_GetConfigMem(uint32_t MemBaseAddress,
421                                               MPCBB_ConfigTypeDef *pMPCBB_desc);
422 HAL_StatusTypeDef HAL_GTZC_MPCBB_ConfigMemAttributes(uint32_t MemAddress,
423                                                      uint32_t NbBlocks,
424                                                      const uint32_t *pMemAttributes);
425 HAL_StatusTypeDef HAL_GTZC_MPCBB_GetConfigMemAttributes(uint32_t MemAddress,
426                                                         uint32_t NbBlocks,
427                                                         uint32_t *pMemAttributes);
428 
429 #if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
430 HAL_StatusTypeDef HAL_GTZC_MPCBB_LockConfig(uint32_t MemAddress,
431                                             uint32_t NbSuperBlocks,
432                                             const uint32_t *pLockAttributes);
433 HAL_StatusTypeDef HAL_GTZC_MPCBB_GetLockConfig(uint32_t MemAddress,
434                                                uint32_t NbSuperBlocks,
435                                                uint32_t *pLockAttributes);
436 HAL_StatusTypeDef HAL_GTZC_MPCBB_Lock(uint32_t MemBaseAddress);
437 HAL_StatusTypeDef HAL_GTZC_MPCBB_GetLock(uint32_t MemBaseAddress,
438                                          uint32_t *pLockState);
439 #endif /* defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
440 
441 /**
442   * @}
443   */
444 
445 #if defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
446 
447 /** @addtogroup GTZC_Exported_Functions_Group5
448   * @brief    TZIC functions
449   * @{
450   */
451 
452 HAL_StatusTypeDef HAL_GTZC_TZIC_DisableIT(uint32_t PeriphId);
453 HAL_StatusTypeDef HAL_GTZC_TZIC_EnableIT(uint32_t PeriphId);
454 HAL_StatusTypeDef HAL_GTZC_TZIC_GetFlag(uint32_t PeriphId, uint32_t *pFlag);
455 HAL_StatusTypeDef HAL_GTZC_TZIC_ClearFlag(uint32_t PeriphId);
456 
457 /**
458   * @}
459   */
460 
461 /** @addtogroup GTZC_Exported_Functions_Group6
462   * @brief    IRQ related Functions
463   * @{
464   */
465 
466 void HAL_GTZC_IRQHandler(void);
467 void HAL_GTZC_TZIC_Callback(uint32_t PeriphId);
468 
469 /**
470   * @}
471   */
472 
473 #endif /* defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
474 
475 /**
476   * @}
477   */
478 
479 /**
480   * @}
481   */
482 
483 #endif /* defined(GTZC_TZSC) && defined(HAL_GTZC_MODULE_ENABLED) */
484 
485 /**
486   * @}
487   */
488 
489 #ifdef __cplusplus
490 }
491 #endif
492 
493 #endif /* STM32WBAxx_HAL_GTZC_H */
494