1 /**
2   ******************************************************************************
3   * @file    stm32n6xx_hal_bsec.h
4   * @author  MCD Application Team
5   * @brief   Header file of BSEC HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2023 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 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32N6xx_HAL_BSEC_H
21 #define STM32N6xx_HAL_BSEC_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32n6xx_hal_def.h"
29 
30 /** @addtogroup STM32N6xx_HAL_Driver
31  * @{
32  */
33 
34 /** @addtogroup BSEC
35  * @{
36  */
37 
38 /* Exported types ------------------------------------------------------------*/
39 /** @defgroup BSEC_Exported_Types BSEC Exported Types
40  * @{
41  */
42 
43 /**
44   * @brief  HAL BSEC Handle Structure definition
45   */
46 typedef struct
47 {
48   BSEC_TypeDef *Instance; /*!< BSEC registers base address                     */
49   uint32_t     ErrorCode; /*!< Error code in case of HAL driver internal error */
50 } BSEC_HandleTypeDef;
51 
52 /**
53   * @brief  HAL BSEC Scratch and Write Once Scratch Register Structure definition
54   */
55 typedef struct
56 {
57   uint32_t RegType;    /*!< Type of the register
58                             This parameter can be a value of @ref BSEC_Register_Type                         */
59   uint32_t RegNumber;  /*!< Number of the register
60                             This parameter can be a value between 0 and 3 if RegType is HAL_BSEC_SCRATCH_REG
61                             and between 0 and 7 if RegType is HAL_BSEC_WRITE_ONCE_SCRATCH_REG                */
62 } BSEC_ScratchRegTypeDef;
63 
64 /**
65   * @brief  HAL BSEC Debug configuration Structure definition
66   */
67 typedef struct
68 {
69   uint32_t HDPL_Open_Dbg;    /*!< Level at which debug may be opened
70                                   This parameter can be a value of @ref BSEC_Open_Dbg        */
71   uint32_t Sec_Dbg_Auth;     /*!< Secure debug authorization
72                                   This parameter can be a value of @ref BSEC_Sec_Dbg_Auth    */
73   uint32_t NonSec_Dbg_Auth;  /*!< Non-secure debug authorization
74                                   This parameter can be a value of @ref BSEC_NonSec_Dbg_Auth */
75 } BSEC_DebugCfgTypeDef;
76 
77 /**
78   * @}
79   */
80 
81 /* Exported constants --------------------------------------------------------*/
82 /** @defgroup BSEC_Exported_Constants BSEC Exported Constants
83   * @{
84   */
85 
86 /** @defgroup BSEC_Error_Code BSEC Error code
87   * @{
88   */
89 #define HAL_BSEC_ERROR_NONE             (0U)         /*!< No error                                 */
90 #define HAL_BSEC_ERROR_INVALID_PARAM    (1U)         /*!< Parameter error                          */
91 #define HAL_BSEC_ERROR_UNDEFINED_VALUE  (2U)         /*!< Undefined value error                    */
92 #define HAL_BSEC_ERROR_LOCK             (4U)         /*!< Locked operation error                   */
93 #define HAL_BSEC_ERROR_UNALLOWED        (8U)         /*!< Not possible operation error             */
94 #define HAL_BSEC_ERROR_TIMEOUT          (10U)        /*!< Timeout error                            */
95 
96 #define HAL_BSEC_ERROR_PROGFAIL         BSEC_OTPSR_PROGFAIL  /*!< Programming failed                       */
97 #define HAL_BSEC_ERROR_DISTURB          BSEC_OTPSR_DISTURBF  /*!< Disturb flag (unexpected error)          */
98 #define HAL_BSEC_ERROR_DED              BSEC_OTPSR_DEDF      /*!< Double error detection flag              */
99 #define HAL_BSEC_ERROR_SEC              BSEC_OTPSR_SECF      /*!< Single error detection flag              */
100 #define HAL_BSEC_ERROR_PPL              BSEC_OTPSR_PPLF      /*!< Permanent programming lock flag          */
101 #define HAL_BSEC_ERROR_PPLM             BSEC_OTPSR_PPLMF     /*!< Permanent programming lock mismatch flag */
102 #define HAL_BSEC_ERROR_AME              BSEC_OTPSR_AMEF      /*!< Addresses mismatch error flag            */
103 /**
104   * @}
105   */
106 
107 /** @defgroup BSEC_Global_Lock BSEC Global write lock
108   * @{
109   */
110 #define HAL_BSEC_WRITE_REG_ALLOWED  (0U)      /*!< Write to BSEC registers are allowed */
111 #define HAL_BSEC_WRITE_REG_IGNORED  BSEC_LOCKR_GWLOCK  /*!< Write to BSEC registers are ignored */
112 /**
113   * @}
114   */
115 
116 /** @defgroup BSEC_Status BSEC Peripheral status
117   * @{
118   */
119 #define HAL_BSEC_INIT_DONE           BSEC_OTPSR_INIT_DONE  /*!< BSEC initialized following a cold or warm reset   */
120 #define HAL_BSEC_UPPER_FUSES_HIDDEN  BSEC_OTPSR_HIDEUP     /*!< Upper fuses are not accessible to the application */
121 #define HAL_BSEC_OTP_NOT_VIRGIN      BSEC_OTPSR_OTPNVIR    /*!< BSEC is not virgin                                */
122 /**
123   * @}
124   */
125 
126 /** @defgroup BSEC_Permanent_Lock BSEC Permanent lock
127   * @{
128   */
129 #define HAL_BSEC_NORMAL_PROG  (0U)      /*!< Fuse word is programmed normally                      */
130 #define HAL_BSEC_LOCK_PROG    BSEC_OTPCR_PPLOCK  /*!< Fuse word is locked, preventing further modifications */
131 /**
132   * @}
133   */
134 
135 /** @defgroup BSEC_Reload_Validity BSEC Validity of shadow register reload
136   * @{
137   */
138 #define HAL_BSEC_RELOAD_ERROR          (0U)  /*!< An error occurred while fuse word was last reloaded */
139 #define HAL_BSEC_RELOAD_DONE           (1U)  /*!< Last reload of fuse word was done without error     */
140 /**
141   * @}
142   */
143 
144 /** @defgroup BSEC_State BSEC State
145   * @{
146   */
147 #define HAL_BSEC_FUSE_PROG_LOCKED      (0x00000001U)        /*!< Fuse word programming is silently ignored until next reset               */
148 #define HAL_BSEC_FUSE_WRITE_LOCKED     (0x00000002U)        /*!< Shadow register writing is silently ignored until next reset             */
149 #define HAL_BSEC_FUSE_RELOAD_LOCKED    (0x00000004U)        /*!< Fuse word loading is denied until next reset                             */
150 #define HAL_BSEC_FUSE_LOCKED           (0x00000008U)        /*!< Fuse word is locked, preventing further modifications                    */
151 #define HAL_BSEC_FUSE_SHADOWED         (0x00000100U)        /*!< Fuse word is shadowed                                                    */
152 #define HAL_BSEC_FUSE_HIDDEN           (0x00000200U)        /*!< Fuse word is hidden                                                      */
153 #define HAL_BSEC_FUSE_ERROR_DETECTED   BSEC_OTPSR_OTPERR  /*!< At least one error is detected during reset operations                   */
154 #define HAL_BSEC_FUSE_ERROR_CORRECTED  BSEC_OTPSR_OTPSEC  /*!< At least one single-error correction is detected during reset operations */
155 /**
156   * @}
157   */
158 
159 /** @defgroup BSEC_Lifecycle_State BSEC Device lifecycle state
160   * @{
161   */
162 #define HAL_BSEC_OPEN_STATE                 (0x16U << BSEC_SR_NVSTATE_Pos)  /*!< BSEC is in open state                                              */
163 #define HAL_BSEC_CLOSED_STATE               (0x0DU << BSEC_SR_NVSTATE_Pos)  /*!< BSEC is in closed state                                            */
164 #define HAL_BSEC_INVALID_STATE              (0x07U << BSEC_SR_NVSTATE_Pos)  /*!< BSEC is in invalid state                                           */
165 #define HAL_BSEC_INVALID_STATE_WITH_TAMPER  (0x23U << BSEC_SR_NVSTATE_Pos)  /*!< BSEC is in invalid state with an active confirmed tamper triggered */
166 /**
167   * @}
168   */
169 
170 /** @defgroup BSEC_Epoch_Select BSEC Epoch selected register
171   * @{
172   */
173 #define HAL_BSEC_EPOCH_COUNTER_0  (0U)  /*!< Epoch counter 0 */
174 #define HAL_BSEC_EPOCH_COUNTER_1  (1U)  /*!< Epoch counter 1 */
175 /**
176   * @}
177   */
178 
179 /** @defgroup BSEC_HDPL BSEC Hide protection level
180   * @{
181   */
182 #define HAL_BSEC_HDPL_VALUE_0  (0xB4U)  /*!< Level 0 */
183 #define HAL_BSEC_HDPL_VALUE_1  (0x51U)  /*!< Level 1 */
184 #define HAL_BSEC_HDPL_VALUE_2  (0x8AU)  /*!< Level 2 */
185 #define HAL_BSEC_HDPL_VALUE_3  (0x6FU)  /*!< Level 3 */
186 /**
187   * @}
188   */
189 
190 /** @defgroup BSEC_INCR_HDPL BSEC Increment of Hide protection level sent to SAES
191   * @{
192   */
193 #define HAL_BSEC_HDPL_INCR_VALUE_0  (0U)  /*!< HDPL sent to SAES incremented by 0 */
194 #define HAL_BSEC_HDPL_INCR_VALUE_1  (1U)  /*!< HDPL sent to SAES incremented by 1 */
195 #define HAL_BSEC_HDPL_INCR_VALUE_2  (2U)  /*!< HDPL sent to SAES incremented by 2 */
196 #define HAL_BSEC_HDPL_INCR_VALUE_3  (3U)  /*!< HDPL sent to SAES incremented by 3 */
197 /**
198   * @}
199   */
200 
201 /** @defgroup BSEC_Register_Type BSEC Type of scratch register
202   * @{
203   */
204 #define HAL_BSEC_SCRATCH_REG             (0U)  /*!< Type of register is scratch register            */
205 #define HAL_BSEC_WRITE_ONCE_SCRATCH_REG  (1U)  /*!< Type of register is write once scratch register */
206 /**
207   * @}
208   */
209 
210 /** @defgroup BSEC_Debug_Req BSEC Debug request
211   * @{
212   */
213 #define HAL_BSEC_DBG_NOT_REQUESTED  (0U)            /*!< Host debugger is not requesting debug */
214 #define HAL_BSEC_DBG_REQUESTED      BSEC_SR_DBGREQ  /*!< Host debugger is requesting debug     */
215 /**
216   * @}
217   */
218 
219 /** @defgroup BSEC_Open_Dbg BSEC Open debug level
220   * @{
221   */
222 #define HAL_BSEC_OPEN_DBG_LEVEL_0  (0x00B40000U)  /*!< Debug opened for HDPL0 */
223 #define HAL_BSEC_OPEN_DBG_LEVEL_1  (0x00510000U)  /*!< Debug opened for HDPL1 */
224 #define HAL_BSEC_OPEN_DBG_LEVEL_2  (0x008A0000U)  /*!< Debug opened for HDPL2 */
225 #define HAL_BSEC_OPEN_DBG_LEVEL_3  (0x006F0000U)  /*!< Debug opened for HDPL3 */
226 /**
227   * @}
228   */
229 
230 /** @defgroup BSEC_Sec_Dbg_Auth BSEC Secure debug authorization
231   * @{
232   */
233 #define HAL_BSEC_SEC_DBG_UNAUTH  (0x00000000U)  /*!< Secure debug not authorized */
234 #define HAL_BSEC_SEC_DBG_AUTH    (0xB4000000U)  /*!< Secure debug authorized     */
235 /**
236   * @}
237   */
238 
239 /** @defgroup BSEC_NonSec_Dbg_Auth BSEC Non-secure debug authorization
240   * @{
241   */
242 #define HAL_BSEC_NONSEC_DBG_UNAUTH  (0x00000000U)  /*!< Non-secure debug not authorized */
243 #define HAL_BSEC_NONSEC_DBG_AUTH    (0x0000B400U)  /*!< Non-secure debug authorized     */
244 /**
245   * @}
246   */
247 
248 /** @defgroup BSEC_Debug_Lock BSEC Debug lock
249   * @{
250   */
251 #define HAL_BSEC_DEBUG_LOCKED    (0x00000000U)  /*!< DBG_MCU AP interface locked   */
252 #define HAL_BSEC_DEBUG_UNLOCKED  (0x000000B4U)  /*!< DBG_MCU AP interface unlocked */
253 /**
254   * @}
255   */
256 
257 /** @defgroup BSEC_DHUK_Validity BSEC Derived hardware unique key validity
258   * @{
259   */
260 #define HAL_BSEC_DHUK_INVALID    (0U)            /*!< DHUK can't be used in SAES */
261 #define HAL_BSEC_DHUK_VALID      BSEC_SR_HVALID  /*!< DHUK can be used in SAES   */
262 /**
263   * @}
264   */
265 
266 /** @defgroup BSEC_DHUK_Lock BSEC Derived hardware unique key lock
267   * @{
268   */
269 #define HAL_BSEC_DHUK_USABLE      (0U)               /*!< DHUK in SAES is usable */
270 #define HAL_BSEC_DHUK_NOT_USABLE  BSEC_LOCKR_HKLOCK  /*!< DHUK in SAES is not usable */
271 /**
272   * @}
273   */
274 
275 /** @defgroup BSEC_Reset_Type BSEC Type of reset
276   * @{
277   */
278 #define HAL_BSEC_HOT_RESET   (0U)  /*!< Type of reset is hot reset */
279 #define HAL_BSEC_WARM_RESET  (1U)  /*!< Type of reset is warm reset */
280 /**
281   * @}
282   */
283 
284 /**
285   * @}
286   */
287 
288 /* Exported macros -----------------------------------------------------------*/
289 
290 /** @defgroup BSEC_Exported_Macros BSEC Exported Macros
291   * @{
292   */
293 
294 
295 /**
296   * @}
297   */
298 
299 /* Exported functions --------------------------------------------------------*/
300 /** @addtogroup BSEC_Exported_Functions
301   * @{
302   */
303 
304 /** @addtogroup BSEC_Exported_Functions_Group1
305   * @{
306   */
307 HAL_StatusTypeDef HAL_BSEC_GetStatus(BSEC_HandleTypeDef * hbsec, uint32_t *pStatus);
308 HAL_StatusTypeDef HAL_BSEC_GlobalLock(BSEC_HandleTypeDef *hbsec);
309 HAL_StatusTypeDef HAL_BSEC_GetGlobalLockStatus(BSEC_HandleTypeDef * hbsec, uint32_t *pStatus);
310 HAL_StatusTypeDef HAL_BSEC_GetErrorCode(BSEC_HandleTypeDef * hbsec, uint32_t *pError);
311 /**
312   * @}
313   */
314 
315 /** @addtogroup BSEC_Exported_Functions_Group2
316   * @{
317   */
318 HAL_StatusTypeDef HAL_BSEC_OTP_Read(BSEC_HandleTypeDef * hbsec, uint32_t FuseId, uint32_t *pFuseData);
319 HAL_StatusTypeDef HAL_BSEC_OTP_Program(BSEC_HandleTypeDef *hbsec, uint32_t FuseId, uint32_t FuseData, uint32_t Lock);
320 HAL_StatusTypeDef HAL_BSEC_OTP_Reload(BSEC_HandleTypeDef *hbsec, uint32_t FuseId);
321 HAL_StatusTypeDef HAL_BSEC_OTP_Lock(BSEC_HandleTypeDef *hbsec, uint32_t FuseId, uint32_t Lock);
322 HAL_StatusTypeDef HAL_BSEC_OTP_GetState(BSEC_HandleTypeDef * hbsec, uint32_t FuseId, uint32_t *pState);
323 /**
324   * @}
325   */
326 
327 /** @addtogroup BSEC_Exported_Functions_Group3
328   * @{
329   */
330 HAL_StatusTypeDef HAL_BSEC_OTP_ReadShadow(BSEC_HandleTypeDef * hbsec, uint32_t RegId, uint32_t *pRegData);
331 HAL_StatusTypeDef HAL_BSEC_OTP_WriteShadow(BSEC_HandleTypeDef *hbsec, uint32_t RegId, uint32_t RegData);
332 HAL_StatusTypeDef HAL_BSEC_OTP_GetShadowState(BSEC_HandleTypeDef * hbsec, uint32_t RegId, uint32_t *pValidity);
333 /**
334   * @}
335   */
336 
337 /** @addtogroup BSEC_Exported_Functions_Group4
338   * @{
339   */
340 HAL_StatusTypeDef HAL_BSEC_GetDeviceLifeCycleState(BSEC_HandleTypeDef * hbsec, uint32_t *pState);
341 HAL_StatusTypeDef HAL_BSEC_ReadEpochCounter(BSEC_HandleTypeDef * hbsec, uint32_t CounterId, uint32_t *pCounterData);
342 HAL_StatusTypeDef HAL_BSEC_SelectEpochCounter(BSEC_HandleTypeDef *hbsec, uint32_t SelectedCounter);
343 HAL_StatusTypeDef HAL_BSEC_GetEpochCounterSelection(BSEC_HandleTypeDef * hbsec, uint32_t *pSelectedCounter);
344 /**
345   * @}
346   */
347 
348 /** @addtogroup BSEC_Exported_Functions_Group5
349   * @{
350   */
351 HAL_StatusTypeDef HAL_BSEC_GetHDPLValue(BSEC_HandleTypeDef * hbsec, uint32_t *pHDPL);
352 HAL_StatusTypeDef HAL_BSEC_IncrementHDPLValue(BSEC_HandleTypeDef *hbsec);
353 HAL_StatusTypeDef HAL_BSEC_ConfigSAESHDPLIncrementValue(BSEC_HandleTypeDef *hbsec, uint32_t Increment);
354 HAL_StatusTypeDef HAL_BSEC_GetSAESHDPLIncrementValue(BSEC_HandleTypeDef * hbsec, uint32_t *pIncrement);
355 /**
356   * @}
357   */
358 
359 /** @addtogroup BSEC_Exported_Functions_Group6
360   * @{
361   */
362 HAL_StatusTypeDef HAL_BSEC_WriteScratchValue(BSEC_HandleTypeDef *hbsec, const BSEC_ScratchRegTypeDef *pRegAddr, uint32_t Value);
363 HAL_StatusTypeDef HAL_BSEC_ReadScratchValue(BSEC_HandleTypeDef * hbsec, const BSEC_ScratchRegTypeDef *pRegAddr, uint32_t *pValue);
364 /**
365   * @}
366   */
367 
368 /** @addtogroup BSEC_Exported_Functions_Group7
369   * @{
370   */
371 HAL_StatusTypeDef HAL_BSEC_GetDebugRequest(BSEC_HandleTypeDef * hbsec, uint32_t *pDbgReq);
372 HAL_StatusTypeDef HAL_BSEC_SendJTAGData(BSEC_HandleTypeDef *hbsec, uint32_t Data);
373 HAL_StatusTypeDef HAL_BSEC_ReceiveJTAGData(BSEC_HandleTypeDef * hbsec, uint32_t *pData);
374 HAL_StatusTypeDef HAL_BSEC_ConfigDebug(BSEC_HandleTypeDef *hbsec,const BSEC_DebugCfgTypeDef *pCfg);
375 HAL_StatusTypeDef HAL_BSEC_GetDebugConfig(BSEC_HandleTypeDef * hbsec, BSEC_DebugCfgTypeDef *pDbgCfg);
376 HAL_StatusTypeDef HAL_BSEC_LockDebug(BSEC_HandleTypeDef *hbsec);
377 HAL_StatusTypeDef HAL_BSEC_UnlockDebug(BSEC_HandleTypeDef *hbsec);
378 HAL_StatusTypeDef HAL_BSEC_GetDebugLockState(BSEC_HandleTypeDef * hbsec, uint32_t *pStatus);
379 /**
380   * @}
381   */
382 
383 /** @addtogroup BSEC_Exported_Functions_Group8
384   * @{
385   */
386 HAL_StatusTypeDef HAL_BSEC_GetDHUKValidity(BSEC_HandleTypeDef * hbsec, uint32_t *pValidity);
387 HAL_StatusTypeDef HAL_BSEC_LockDHUKUse(BSEC_HandleTypeDef *hbsec);
388 HAL_StatusTypeDef HAL_BSEC_GetDHUKLockStatus(BSEC_HandleTypeDef * hbsec, uint32_t *pStatus);
389 /**
390   * @}
391   */
392 
393 /** @addtogroup BSEC_Exported_Functions_Group9
394   * @{
395   */
396 HAL_StatusTypeDef HAL_BSEC_GetNumberOfResets(BSEC_HandleTypeDef * hbsec, uint32_t ResetType, uint32_t *pResetNumber);
397 /**
398   * @}
399   */
400 
401 /**
402   * @}
403   */
404 
405 /* Private macros --------------------------------------------------------*/
406 /**
407   @cond 0
408   */
409 #define IS_BSEC_PERMANENT_LOCK(VALUE)  (((VALUE) == HAL_BSEC_NORMAL_PROG) || ((VALUE) == HAL_BSEC_LOCK_PROG))
410 
411 #define IS_BSEC_LOCK_CFG(CFG)          ((CFG) <= (HAL_BSEC_FUSE_PROG_LOCKED | HAL_BSEC_FUSE_WRITE_LOCKED | HAL_BSEC_FUSE_RELOAD_LOCKED))
412 
413 #define IS_BSEC_STATE(STATE)           (((STATE) == HAL_BSEC_OPEN_STATE)    || ((STATE) == HAL_BSEC_CLOSED_STATE) \
414                                      || ((STATE) == HAL_BSEC_INVALID_STATE) || ((STATE) == HAL_BSEC_INVALID_STATE_WITH_TAMPER))
415 
416 #define IS_BSEC_EPOCHSEL(VALUE)        (((VALUE) == HAL_BSEC_EPOCH_COUNTER_0) || ((VALUE) == HAL_BSEC_EPOCH_COUNTER_1))
417 
418 #define IS_BSEC_HDPL(LEVEL)            (((LEVEL) == HAL_BSEC_HDPL_VALUE_0) || ((LEVEL) == HAL_BSEC_HDPL_VALUE_1) \
419                                      || ((LEVEL) == HAL_BSEC_HDPL_VALUE_2) || ((LEVEL) == HAL_BSEC_HDPL_VALUE_3))
420 
421 #define IS_BSEC_NEXTHDPL(VALUE)        (((VALUE) == HAL_BSEC_HDPL_INCR_VALUE_0) || ((VALUE) == HAL_BSEC_HDPL_INCR_VALUE_1) \
422                                      || ((VALUE) == HAL_BSEC_HDPL_INCR_VALUE_2) || ((VALUE) == HAL_BSEC_HDPL_INCR_VALUE_3))
423 
424 #define IS_BSEC_REGTYPE(TYPE)          (((TYPE) == HAL_BSEC_SCRATCH_REG) || ((TYPE) == HAL_BSEC_WRITE_ONCE_SCRATCH_REG))
425 
426 #define IS_BSEC_OPENDBG(LEVEL)        (((LEVEL) == HAL_BSEC_OPEN_DBG_LEVEL_0) || ((LEVEL) == HAL_BSEC_OPEN_DBG_LEVEL_1) \
427                                     || ((LEVEL) == HAL_BSEC_OPEN_DBG_LEVEL_2) || ((LEVEL) == HAL_BSEC_OPEN_DBG_LEVEL_3))
428 
429 #define IS_BSEC_SECDBGAUTH(AUTH)      (((AUTH) == HAL_BSEC_SEC_DBG_UNAUTH) || ((AUTH) == HAL_BSEC_SEC_DBG_AUTH))
430 
431 #define IS_BSEC_NSDBGAUTH(AUTH)       (((AUTH) == HAL_BSEC_NONSEC_DBG_UNAUTH) || ((AUTH) == HAL_BSEC_NONSEC_DBG_AUTH))
432 
433 #define IS_BSEC_DEBUGLOCK(VALUE)      (((VALUE) == HAL_BSEC_DEBUG_LOCKED) || ((VALUE) == HAL_BSEC_DEBUG_UNLOCKED))
434 
435 #define IS_BSEC_RESETTYPE(TYPE)       (((TYPE) == HAL_BSEC_HOT_RESET) || ((TYPE) == HAL_BSEC_WARM_RESET))
436 /**
437   @endcond
438   */
439 
440 /**
441   * @}
442   */
443 
444 /**
445   * @}
446   */
447 
448 #ifdef __cplusplus
449 }
450 #endif
451 
452 #endif /* STM32N6xx_HAL_BSEC_H */
453