STM32H735xx HAL User Manual
stm32h7xx_hal_otfdec.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_hal_otfdec.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of OTFDEC HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2018 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32H7xx_HAL_OTFDEC_H
00021 #define STM32H7xx_HAL_OTFDEC_H
00022 
00023 #ifdef __cplusplus
00024  extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32h7xx_hal_def.h"
00029 
00030 /** @addtogroup STM32H7xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 #if defined(OTFDEC1)
00035 
00036 /** @addtogroup OTFDEC
00037   * @{
00038   */
00039 
00040 /* Exported types ------------------------------------------------------------*/
00041 
00042 /** @defgroup OTFDEC_Exported_Types OTFDEC Exported Types
00043   * @{
00044   */
00045 
00046 /** @defgroup OTFDEC_Exported_Types_Group1 OTFDEC region configuration definitions
00047   * @{
00048   */
00049 
00050 /**
00051   * @brief OTFDEC region configuration structure definition
00052   */
00053 typedef struct
00054 {
00055   uint32_t          Nonce[2];        /*!< OTFDEC region nonce */
00056 
00057   uint32_t          StartAddress;    /*!< OTFDEC region start address */
00058 
00059   uint32_t          EndAddress;      /*!< OTFDEC region end address */
00060 
00061   uint16_t          Version;         /*!< OTFDEC region firmware version */
00062 
00063 }OTFDEC_RegionConfigTypeDef;
00064 
00065 /**
00066   * @}
00067   */
00068 
00069 /** @defgroup OTFDEC_Exported_Types_Group2 OTFDEC Peripheral handle definitions
00070   * @{
00071   */
00072 
00073 /**
00074   * @brief OTFDEC states structure definition
00075   */
00076 typedef enum
00077 {
00078   HAL_OTFDEC_STATE_RESET             = 0x00U,  /*!< OTFDEC not yet initialized or disabled */
00079   HAL_OTFDEC_STATE_READY             = 0x01U,  /*!< OTFDEC initialized and ready for use   */
00080   HAL_OTFDEC_STATE_BUSY              = 0x02U,  /*!< OTFDEC internal processing is ongoing  */
00081 }HAL_OTFDEC_StateTypeDef;
00082 
00083 /**
00084   * @brief OTFDEC handle structure definition
00085   */
00086 #if (USE_HAL_OTFDEC_REGISTER_CALLBACKS == 1)
00087 typedef struct __OTFDEC_HandleTypeDef
00088 #else
00089 typedef struct
00090 #endif /* USE_HAL_OTFDEC_REGISTER_CALLBACKS */
00091 {
00092   OTFDEC_TypeDef             *Instance;  /*!< OTFDEC registers base address */
00093 
00094   HAL_OTFDEC_StateTypeDef    State;      /*!< OTFDEC state */
00095 
00096   HAL_LockTypeDef            Lock;       /*!< OTFDEC locking object */
00097 
00098   __IO uint32_t              ErrorCode;  /*!< OTFDEC error code */
00099 
00100 #if (USE_HAL_OTFDEC_REGISTER_CALLBACKS == 1)
00101   void (* ErrorCallback)(struct __OTFDEC_HandleTypeDef *hotfdec);     /*!< OTFDEC error callback */
00102 
00103   void (* MspInitCallback)(struct __OTFDEC_HandleTypeDef *hotfdec);   /*!< OTFDEC Msp Init callback */
00104 
00105   void (* MspDeInitCallback)(struct __OTFDEC_HandleTypeDef *hotfdec); /*!< OTFDEC Msp DeInit callback */
00106 #endif /* USE_HAL_OTFDEC_REGISTER_CALLBACKS */
00107 
00108 }OTFDEC_HandleTypeDef;
00109 
00110 #if (USE_HAL_OTFDEC_REGISTER_CALLBACKS == 1)
00111 /**
00112   * @brief  HAL OTFDEC Callback ID enumeration definition
00113   */
00114 typedef enum
00115 {
00116   HAL_OTFDEC_ERROR_CB_ID       = 0x00U,  /*!< OTFDEC error callback ID      */
00117   HAL_OTFDEC_MSPINIT_CB_ID     = 0x01U,  /*!< OTFDEC Msp DeInit callback ID */
00118   HAL_OTFDEC_MSPDEINIT_CB_ID   = 0x02U   /*!< OTFDEC Msp DeInit callback ID */
00119 } HAL_OTFDEC_CallbackIDTypeDef;
00120 
00121 /**
00122   * @brief  HAL OTFDEC Callback pointer definition
00123   */
00124 typedef  void (*pOTFDEC_CallbackTypeDef)(OTFDEC_HandleTypeDef *hotfdec); /*!< pointer to a OTFDEC callback function */
00125 
00126 #endif /* USE_HAL_OTFDEC_REGISTER_CALLBACKS */
00127 
00128 /**
00129   * @}
00130   */
00131 
00132 /**
00133   * @}
00134   */
00135 
00136 /* Exported constants --------------------------------------------------------*/
00137 /** @defgroup OTFDEC_Exported_Constants OTFDEC Exported Constants
00138   * @{
00139   */
00140 
00141 /** @defgroup OTFDEC_Interrupts    OTFDEC Interrupts
00142   * @{
00143   */
00144 #define OTFDEC_SEC_ERROR_INT     (OTFDEC_IER_SEIE                                  )  /*!< OTFDEC security error interrupt                  */
00145 #define OTFDEC_EXE_ERROR_INT     (               OTFDEC_IER_XONEIE                 )  /*!< OTFDEC execution error interrupt                 */
00146 #define OTFDEC_KEY_ERROR_INT     (                                  OTFDEC_IER_KEIE)  /*!< OTFDEC key error interrupt                       */
00147 #define OTFDEC_SEC_EXE_ERROR_INT (OTFDEC_IER_SEIE|OTFDEC_IER_XONEIE                )  /*!< OTFDEC security and execution errors interrupts  */
00148 #define OTFDEC_SEC_KEY_ERROR_INT (OTFDEC_IER_SEIE|                  OTFDEC_IER_KEIE)  /*!< OTFDEC security and key errors interrupts        */
00149 #define OTFDEC_EXE_KEY_ERROR_INT (                OTFDEC_IER_XONEIE|OTFDEC_IER_KEIE)  /*!< OTFDEC execution and key errors interrupts       */
00150 #define OTFDEC_ALL_INT           (OTFDEC_IER_SEIE|OTFDEC_IER_XONEIE|OTFDEC_IER_KEIE)  /*!< OTFDEC all interrupts                            */
00151 /**
00152   * @}
00153   */
00154 
00155 /** @defgroup OTFDEC_Region_Enable   OTFDEC Region Enable
00156   * @{
00157   */
00158 #define OTFDEC_REG_CONFIGR_REG_DISABLE   0x00000000U                /*!< OTFDEC region encryption or on-the-fly decryption disable */
00159 #define OTFDEC_REG_CONFIGR_REG_ENABLE    OTFDEC_REG_CONFIGR_REG_EN  /*!< OTFDEC region encryption or on-the-fly decryption enable  */
00160 /**
00161   * @}
00162   */
00163 
00164 /** @defgroup OTFDEC_Region_Configuration_Lock    OTFDEC Region Configuration Lock
00165   * @{
00166   */
00167 #define OTFDEC_REG_CONFIGR_LOCK_DISABLE   0x00000000U                     /*!< OTFDEC region configuration lock disable */
00168 #define OTFDEC_REG_CONFIGR_LOCK_ENABLE    OTFDEC_REG_CONFIGR_CONFIGLOCK   /*!< OTFDEC region configuration lock enable  */
00169 /**
00170   * @}
00171   */
00172 
00173 /** @defgroup OTFDEC_Region_Operating_Mode    OTFDEC Region Operating Mode
00174   * @{
00175   */
00176 #define OTFDEC_REG_MODE_INSTRUCTION_ACCESSES_ONLY              0x00000000U                /*!< Only instruction accesses are decrypted                                   */
00177 #define OTFDEC_REG_MODE_DATA_ACCESSES_ONLY                     OTFDEC_REG_CONFIGR_MODE_0  /*!< Only data accesses are decrypted                                          */
00178 #define OTFDEC_REG_MODE_INSTRUCTION_OR_DATA_ACCESSES           OTFDEC_REG_CONFIGR_MODE_1  /*!< All read accesses are decrypted                                           */
00179 #define OTFDEC_REG_MODE_INSTRUCTION_ACCESSES_ONLY_WITH_CIPHER  OTFDEC_REG_CONFIGR_MODE    /*!< Only instruction accesses are decrypted with proprietary cipher activated */
00180 /**
00181   * @}
00182   */
00183 
00184 /** @defgroup OTFDEC_Error_Definition   OTFDEC Error Definition
00185   * @{
00186   */
00187 #define  HAL_OTFDEC_ERROR_NONE             ((uint32_t)0x00000000U)    /*!< No error                         */
00188 #define  HAL_OTFDEC_SECURITY_ERROR         ((uint32_t)0x00000001U)    /*!< Security error                   */
00189 #define  HAL_OTFDEC_EXECUTE_ERROR          ((uint32_t)0x00000002U)    /*!< Execute-only Execute-Never error */
00190 #define  HAL_OTFDEC_KEY_ERROR              ((uint32_t)0x00000004U)    /*!< Key error                        */
00191 #if (USE_HAL_OTFDEC_REGISTER_CALLBACKS == 1)
00192 #define HAL_OTFDEC_ERROR_INVALID_CALLBACK  ((uint32_t)0x00000008U)   /*!< Invalid Callback error            */
00193 #endif /* USE_HAL_OTFDEC_REGISTER_CALLBACKS */
00194 /**
00195   * @}
00196   */
00197 
00198 /** @defgroup OTFDEC_Regions_Index   OTFDEC Regions Index
00199   * @{
00200   */
00201 #define  OTFDEC_REGION1            ((uint32_t)0x00000000U)    /*!< OTFDEC region 1 */
00202 #define  OTFDEC_REGION2            ((uint32_t)0x00000001U)    /*!< OTFDEC region 2 */
00203 #define  OTFDEC_REGION3            ((uint32_t)0x00000002U)    /*!< OTFDEC region 3 */
00204 #define  OTFDEC_REGION4            ((uint32_t)0x00000003U)    /*!< OTFDEC region 4 */
00205 /**
00206   * @}
00207   */
00208 
00209 /**
00210   * @}
00211   */
00212 
00213 /* Exported macro ------------------------------------------------------------*/
00214 /** @defgroup OTFDEC_Exported_Macros OTFDEC Exported Macros
00215   * @{
00216   */
00217 
00218 /** @brief  Reset OTFDEC handle state.
00219   * @param  __HANDLE__ pointer to an OTFDEC_HandleTypeDef structure that contains
00220   *         the configuration information for OTFDEC module
00221   * @retval None
00222   */
00223 #if (USE_HAL_OTFDEC_REGISTER_CALLBACKS == 1)
00224 #define __HAL_OTFDEC_RESET_HANDLE_STATE(__HANDLE__)                            \
00225   do{                                                                          \
00226     (__HANDLE__)->State = HAL_OTFDEC_STATE_RESET;                              \
00227     (__HANDLE__)->MspInitCallback = NULL;                                      \
00228     (__HANDLE__)->MspDeInitCallback = NULL;                                    \
00229   } while(0)
00230 #else
00231 #define __HAL_OTFDEC_RESET_HANDLE_STATE(__HANDLE__)                            \
00232   ((__HANDLE__)->State = HAL_OTFDEC_STATE_RESET)
00233 #endif /* USE_HAL_OTFDEC_REGISTER_CALLBACKS */
00234 
00235 /**
00236   * @brief  Enable OTFDEC peripheral interrupts combination
00237   * @param  __HANDLE__ pointer to an OTFDEC_HandleTypeDef structure that contains
00238   *         the configuration information for OTFDEC module
00239   * @param  __INTERRUPT__ mask on enabled interrupts
00240   *          This parameter can be one of the following values:
00241   *            @arg @ref OTFDEC_SEC_ERROR_INT        OTFDEC security error interrupt
00242   *            @arg @ref OTFDEC_EXE_ERROR_INT        OTFDEC execution error interrupt
00243   *            @arg @ref OTFDEC_KEY_ERROR_INT        OTFDEC key error interrupt
00244   *            @arg @ref OTFDEC_SEC_EXE_ERROR_INT    OTFDEC security and execution errors interrupts
00245   *            @arg @ref OTFDEC_SEC_KEY_ERROR_INT    OTFDEC security and key errors interrupts
00246   *            @arg @ref OTFDEC_EXE_KEY_ERROR_INT    OTFDEC execution and key errors interrupts
00247   *            @arg @ref OTFDEC_ALL_INT              OTFDEC all interrupts
00248   * @retval None
00249   */
00250 #define __HAL_OTFDEC_ENABLE_IT(__HANDLE__, __INTERRUPT__)  SET_BIT(((__HANDLE__)->Instance->IER), (__INTERRUPT__))
00251 
00252 /**
00253   * @brief  Disable OTFDEC peripheral interrupts combination
00254   * @param  __HANDLE__ pointer to an OTFDEC_HandleTypeDef structure that contains
00255   *         the configuration information for OTFDEC module
00256   * @param  __INTERRUPT__ mask on disabled interrupts
00257   *          This parameter can be one of the following values:
00258   *            @arg @ref OTFDEC_SEC_ERROR_INT        OTFDEC security error interrupt
00259   *            @arg @ref OTFDEC_EXE_ERROR_INT        OTFDEC execution error interrupt
00260   *            @arg @ref OTFDEC_KEY_ERROR_INT        OTFDEC key error interrupt
00261   *            @arg @ref OTFDEC_SEC_EXE_ERROR_INT    OTFDEC security and execution errors interrupts
00262   *            @arg @ref OTFDEC_SEC_KEY_ERROR_INT    OTFDEC security and key errors interrupts
00263   *            @arg @ref OTFDEC_EXE_KEY_ERROR_INT    OTFDEC execution and key errors interrupts
00264   *            @arg @ref OTFDEC_ALL_INT              OTFDEC all interrupts
00265   * @retval None
00266   */
00267 #define __HAL_OTFDEC_DISABLE_IT(__HANDLE__, __INTERRUPT__)  CLEAR_BIT(((__HANDLE__)->Instance->IER), (__INTERRUPT__))
00268 
00269   /** @brief  Check whether the specified combination of OTFDEC interrupt flags is set or not.
00270   * @param  __HANDLE__ pointer to an OTFDEC_HandleTypeDef structure that contains
00271   *         the configuration information for OTFDEC module
00272   * @param  __FLAG__ mask on combination of interrupts flags
00273   *          This parameter can be one of the following values:
00274   *            @arg @ref OTFDEC_SEC_ERROR_INT        OTFDEC security error interrupt flag
00275   *            @arg @ref OTFDEC_EXE_ERROR_INT        OTFDEC execution error interrupt flag
00276   *            @arg @ref OTFDEC_KEY_ERROR_INT        OTFDEC key error interrupt flag
00277   *            @arg @ref OTFDEC_SEC_EXE_ERROR_INT    OTFDEC security and execution errors interrupts flags
00278   *            @arg @ref OTFDEC_SEC_KEY_ERROR_INT    OTFDEC security and key errors interrupts flags
00279   *            @arg @ref OTFDEC_EXE_KEY_ERROR_INT    OTFDEC execution and key errors interrupts flag
00280   *            @arg @ref OTFDEC_ALL_INT              OTFDEC all interrupts flags
00281  * @retval The state of __FLAG__ (TRUE or FALSE).
00282   */
00283 #define __HAL_OTFDEC_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))
00284 
00285 /** @brief  Clear the specified combination of OTFDEC interrupt flags.
00286   * @param  __HANDLE__ pointer to an OTFDEC_HandleTypeDef structure that contains
00287   *         the configuration information for OTFDEC module
00288   * @param  __FLAG__ mask on combination of interrupts flags
00289   *          This parameter can be one of the following values:
00290   *            @arg @ref OTFDEC_SEC_ERROR_INT        OTFDEC security error interrupt flag
00291   *            @arg @ref OTFDEC_EXE_ERROR_INT        OTFDEC execution error interrupt flag
00292   *            @arg @ref OTFDEC_KEY_ERROR_INT        OTFDEC key error interrupt flag
00293   *            @arg @ref OTFDEC_SEC_EXE_ERROR_INT    OTFDEC security and execution errors interrupts flags
00294   *            @arg @ref OTFDEC_SEC_KEY_ERROR_INT    OTFDEC security and key errors interrupts flags
00295   *            @arg @ref OTFDEC_EXE_KEY_ERROR_INT    OTFDEC execution and key errors interrupts flag
00296   *            @arg @ref OTFDEC_ALL_INT              OTFDEC all interrupts flags
00297   * @retval None
00298   */
00299 #define __HAL_OTFDEC_CLEAR_FLAG(__HANDLE__, __FLAG__) SET_BIT((__HANDLE__)->Instance->ICR, (__FLAG__))
00300 
00301 /**
00302   * @}
00303   */
00304 
00305 /* Exported functions --------------------------------------------------------*/
00306 /** @defgroup OTFDEC_Exported_Functions OTFDEC Exported Functions
00307   * @{
00308   */
00309 
00310 /** @addtogroup OTFDEC_Exported_Functions_Group1 Initialization and de-initialization functions
00311   * @{
00312   */
00313 HAL_StatusTypeDef HAL_OTFDEC_Init(OTFDEC_HandleTypeDef *hotfdec);
00314 HAL_StatusTypeDef HAL_OTFDEC_DeInit(OTFDEC_HandleTypeDef *hotfdec);
00315 void HAL_OTFDEC_MspInit(OTFDEC_HandleTypeDef *hotfdec);
00316 void HAL_OTFDEC_MspDeInit(OTFDEC_HandleTypeDef *hotfdec);
00317 
00318 #if (USE_HAL_OTFDEC_REGISTER_CALLBACKS == 1)
00319 /* Callbacks Register/UnRegister functions  ***********************************/
00320 HAL_StatusTypeDef HAL_OTFDEC_RegisterCallback(OTFDEC_HandleTypeDef *hotfdec, HAL_OTFDEC_CallbackIDTypeDef CallbackID,
00321                                            pOTFDEC_CallbackTypeDef pCallback);
00322 HAL_StatusTypeDef HAL_OTFDEC_UnRegisterCallback(OTFDEC_HandleTypeDef *hotfdec, HAL_OTFDEC_CallbackIDTypeDef CallbackID);
00323 #endif /* USE_HAL_OTFDEC_REGISTER_CALLBACKS */
00324 /**
00325   * @}
00326   */
00327 
00328 
00329 /** @addtogroup OTFDEC_Exported_Functions_Group2 OTFDEC IRQ handler management
00330   * @{
00331   */
00332 void HAL_OTFDEC_IRQHandler(OTFDEC_HandleTypeDef *hotfdec);
00333 void HAL_OTFDEC_ErrorCallback(OTFDEC_HandleTypeDef *hotfdec);
00334 /**
00335   * @}
00336   */
00337 
00338 /** @addtogroup OTFDEC_Exported_Functions_Group3 Peripheral Control functions
00339   * @{
00340   */
00341 HAL_StatusTypeDef HAL_OTFDEC_RegionKeyLock(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex);
00342 HAL_StatusTypeDef HAL_OTFDEC_RegionSetKey(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex, uint32_t *pKey);
00343 HAL_StatusTypeDef HAL_OTFDEC_RegionSetMode(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex, uint32_t mode);
00344 HAL_StatusTypeDef HAL_OTFDEC_RegionConfig(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex, 
00345                                           OTFDEC_RegionConfigTypeDef *Config, uint32_t lock);
00346 uint32_t HAL_OTFDEC_KeyCRCComputation(uint32_t *pKey);
00347 HAL_StatusTypeDef HAL_OTFDEC_RegionEnable(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex);
00348 HAL_StatusTypeDef HAL_OTFDEC_RegionDisable(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex);
00349 /**
00350   * @}
00351   */
00352 
00353 /** @addtogroup @addtogroup OTFDEC_Exported_Functions_Group4 Peripheral State and Status functions
00354   * @{
00355   */
00356 HAL_OTFDEC_StateTypeDef HAL_OTFDEC_GetState(OTFDEC_HandleTypeDef *hotfdec);
00357 uint32_t HAL_OTFDEC_RegionGetKeyCRC(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex);
00358 HAL_StatusTypeDef HAL_OTFDEC_RegionGetConfig(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex,
00359                                              OTFDEC_RegionConfigTypeDef *Config);
00360 /**
00361   * @}
00362   */
00363 
00364 /**
00365   * @}
00366   */
00367 
00368 /* Private types -------------------------------------------------------------*/
00369 /** @defgroup OTFDEC_Private_Types OTFDEC Private Types
00370   * @{
00371   */
00372 
00373 /**
00374   * @}
00375   */
00376 
00377 /* Private variables ---------------------------------------------------------*/
00378 /** @defgroup OTFDEC_Private_Variables OTFDEC Private Variables
00379   * @{
00380   */
00381 
00382 /**
00383   * @}
00384   */
00385 
00386 /* Private constants ---------------------------------------------------------*/
00387 /** @defgroup OTFDEC_Private_Constants OTFDEC Private Constants
00388   * @{
00389   */
00390 /**
00391   * @}
00392   */
00393 
00394 /* Private macros ------------------------------------------------------------*/
00395 /** @defgroup OTFDEC_Private_Macros OTFDEC Private Macros
00396   * @{
00397   */
00398 
00399 /**
00400   * @brief Verify the OTFDEC peripheral interrupts parameter.
00401   * @param __INT__ OTFDEC peripheral set of interrupts parameter
00402   * @retval SET (__INT__ is valid) or RESET (__INT__ is invalid)
00403   */
00404 #define IS_OTFDEC_INTERRUPTS(__INT__) (((__INT__) == OTFDEC_SEC_ERROR_INT)     || \
00405                                        ((__INT__) == OTFDEC_EXE_ERROR_INT)     || \
00406                                        ((__INT__) == OTFDEC_KEY_ERROR_INT)     || \
00407                                        ((__INT__) == OTFDEC_SEC_EXE_ERROR_INT) || \
00408                                        ((__INT__) == OTFDEC_SEC_KEY_ERROR_INT) || \
00409                                        ((__INT__) == OTFDEC_EXE_KEY_ERROR_INT) || \
00410                                        ((__INT__) == OTFDEC_ALL_INT)  )
00411 
00412 /**
00413   * @brief Verify the OTFDEC region configuration lock parameter.
00414   * @param __LOCK__ OTFDEC region lock parameter.
00415   * @retval SET (__LOCK__ is valid) or RESET (__LOCK__ is invalid)
00416   */
00417 #define IS_OTFDEC_REGION_CONFIG_LOCK(__LOCK__) (((__LOCK__) == OTFDEC_REG_CONFIGR_LOCK_DISABLE) || \
00418                                                 ((__LOCK__) == OTFDEC_REG_CONFIGR_LOCK_ENABLE)  )
00419 
00420 /**
00421   * @brief Verify the OTFDEC region operating mode.
00422   * @param __MODE__ OTFDEC region operating mode parameter.
00423   * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
00424   */
00425 #define IS_OTFDEC_REGION_OPERATING_MODE(__MODE__) (((__MODE__) == OTFDEC_REG_MODE_INSTRUCTION_ACCESSES_ONLY)    || \
00426                                                   ((__MODE__) == OTFDEC_REG_MODE_DATA_ACCESSES_ONLY)           || \
00427                                                   ((__MODE__) == OTFDEC_REG_MODE_INSTRUCTION_OR_DATA_ACCESSES) || \
00428                                                   ((__MODE__) == OTFDEC_REG_MODE_INSTRUCTION_ACCESSES_ONLY_WITH_CIPHER))
00429 
00430 /**
00431   * @brief Verify the OTFDEC region index.
00432   * @param __INDEX__ OTFDEC region index
00433   * @retval SET (__INDEX__ is valid) or RESET (__INDEX__ is invalid)
00434   */
00435 #define IS_OTFDEC_REGIONINDEX(__INDEX__) (((__INDEX__) == OTFDEC_REGION1)     || \
00436                                           ((__INDEX__) == OTFDEC_REGION2)     || \
00437                                           ((__INDEX__) == OTFDEC_REGION3)     || \
00438                                           ((__INDEX__) == OTFDEC_REGION4)  )
00439 
00440 /**
00441   * @brief Verify the OTFDEC configuration attributes.
00442   * @param __ATTRIBUTE__ OTFDEC region index
00443   * @retval SET (__ATTRIBUTE__ is valid) or RESET (__ATTRIBUTE__ is invalid)
00444   */
00445 #define IS_OTFDEC_ATTRIBUTE(__ATTRIBUTE__) (((__ATTRIBUTE__) == OTFDEC_ATTRIBUTE_PRIV)   || \
00446                                             ((__ATTRIBUTE__) == OTFDEC_ATTRIBUTE_NPRIV)  )
00447 
00448 /**
00449   * @}
00450   */
00451 
00452 /* Private functions ---------------------------------------------------------*/
00453 /** @defgroup OTFDEC_Private_Functions OTFDEC Private Functions
00454   * @{
00455   */
00456 
00457 /**
00458   * @}
00459   */
00460 
00461 /**
00462   * @}
00463   */
00464 
00465 #endif /* OTFDEC1 */
00466 
00467 /**
00468   * @}
00469   */
00470 
00471 #ifdef __cplusplus
00472 }
00473 #endif
00474 
00475 #endif /* STM32H7xx_HAL_OTFDEC_H */
00476 
00477