| /** |
| ****************************************************************************** |
| * @file stm32wlxx_hal_gtzc.h |
| * @author MCD Application Team |
| * @brief Header file of GTZC HAL module. |
| ****************************************************************************** |
| * @attention |
| * |
| * Copyright (c) 2020 STMicroelectronics. |
| * All rights reserved. |
| * |
| * This software is licensed under terms that can be found in the LICENSE file |
| * in the root directory of this software component. |
| * If no LICENSE file comes with this software, it is provided AS-IS. |
| * |
| ****************************************************************************** |
| */ |
| /* Define to prevent recursive inclusion -------------------------------------*/ |
| #ifndef STM32WLxx_HAL_GTZC_H |
| #define STM32WLxx_HAL_GTZC_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* Includes ------------------------------------------------------------------*/ |
| #include "stm32wlxx_hal_def.h" |
| |
| #if defined(GTZC_TZSC) |
| |
| /** @addtogroup STM32WLxx_HAL_Driver |
| * @{ |
| */ |
| |
| /** @addtogroup GTZC |
| * @{ |
| */ |
| |
| /* Exported types ------------------------------------------------------------*/ |
| /** @defgroup GTZC_Exported_Types GTZC Exported Types |
| * @{ |
| */ |
| /** |
| * @brief GTZC TZSC MPCWM structure |
| */ |
| typedef struct |
| { |
| uint32_t AreaId; /*!< Area identifier field. It can be a value of @ref |
| GTZC_MPCWM_AreaId */ |
| uint32_t Length; /*!< length of the unprivileged area starting from selected |
| memory base address. It must be aligned on 2kB for Flash |
| areas and 1kB for Sram ones. */ |
| } MPCWM_ConfigTypeDef; |
| /** |
| * @} |
| */ |
| |
| |
| /* Private constants --------------------------------------------------------*/ |
| /** @defgroup GTZC_Private_Constants GTZC Private Constants |
| * @{ |
| */ |
| /** |
| * @brief GTZC structure definitions for IP identifier parameter (PeriphId) |
| * used in HAL_GTZC_TZSC_ConfigPeriphAttributes and |
| * HAL_GTZC_TZSC_GetConfigPeriphAttributes functions and also in all |
| * HAL_GTZC_TZIC related functions bitmap: |
| * bits[31:28] Field "register". Define the register an IP belongs to. |
| * Each bit is dedicated to a single register. |
| * bit[5] Field "all Ips". If this bit is set then the PeriphId |
| * targets all Ips within register. |
| * bits[4:0] Field "bit position". Define the bit position within |
| * the register dedicated to the IP, value from 0 to 31. |
| */ |
| #define GTZC_PERIPH_REG_Pos (28U) |
| #define GTZC_PERIPH_REG_Msk (0xFUL << GTZC_PERIPH_REG_Pos) /*0 xF0000000 */ |
| #define GTZC_PERIPH_REG1 (0x0UL << GTZC_PERIPH_REG_Pos) |
| #define GTZC_PERIPH_ALLPERIPH_Pos (5U) |
| #define GTZC_PERIPH_ALLPERIPH_Msk (0x1UL << GTZC_PERIPH_ALLPERIPH_Pos) /* 0x00000020 */ |
| #define GTZC_PERIPH_BITPOS_Pos (0U) |
| #define GTZC_PERIPH_BITPOS_Msk (0x1FUL << GTZC_PERIPH_BITPOS_Pos) /* 0x0000001F */ |
| |
| /** |
| * @brief GTZC TZSC MPCWM Watermark granularity depending on area |
| */ |
| #define GTZC_TZSC_MPCWM_GRANULARITY_FLASH_OFFSET 11U |
| #define GTZC_TZSC_MPCWM_GRANULARITY_FLASH (1UL << GTZC_TZSC_MPCWM_GRANULARITY_FLASH_OFFSET) /* 2 kB */ |
| #define GTZC_TZSC_MPCWM_GRANULARITY_SRAM1_OFFSET 10U |
| #define GTZC_TZSC_MPCWM_GRANULARITY_SRAM1 (1UL << GTZC_TZSC_MPCWM_GRANULARITY_SRAM1_OFFSET) /* 1 kB */ |
| #define GTZC_TZSC_MPCWM_GRANULARITY_SRAM2_OFFSET 10U |
| #define GTZC_TZSC_MPCWM_GRANULARITY_SRAM2 (1UL << GTZC_TZSC_MPCWM_GRANULARITY_SRAM2_OFFSET) /* 1 kB */ |
| |
| /** |
| * @} |
| */ |
| |
| |
| /** @defgroup GTZC_Exported_Constants GTZC Exported Constants |
| * @{ |
| */ |
| |
| /** @defgroup GTZC_TZSC_Peripheral_Attribute GTZC TZSC Peripheral Attribute |
| * bitmap: bit0 : Sec Attr (0 = Ns, 1 = Sec) |
| * bit1 : PrivAttr (0 = NonPriv, 1 = Priv) |
| * @{ |
| */ |
| #define GTZC_TZSC_ATTRIBUTE_NSEC 0x00U |
| #define GTZC_TZSC_ATTRIBUTE_SEC 0x01U |
| #define GTZC_TZSC_ATTRIBUTE_NPRIV 0x00U |
| #define GTZC_TZSC_ATTRIBUTE_PRIV 0x02U |
| /** |
| * @} |
| */ |
| |
| /** @defgroup GTZC_Peripheral_Identification GTZC Peripheral Identification |
| * user-oriented definition for each IP identifier parameter (PeriphId) |
| * used in HAL_GTZC_TZSC_ConfigPeriphAttributes and HAL_GTZC_TZSC_GetConfigPeriphAttributes |
| * functions and also in all HAL_GTZC_TZIC relative functions. |
| * @note user can also select all IPs using specific define |
| * @note that two maximum values are also defined here: |
| * - max number of securable AHB/APB peripherals or masters (used in |
| * TZSC sub-block) |
| * - max number of securable and security-aware AHB/APB peripherals |
| * or masters (used in TZIC sub-block) |
| * @{ |
| */ |
| #define GTZC_PERIPH_TZIC (GTZC_PERIPH_REG1 | GTZC_CFGR1_TZIC_Pos) |
| #define GTZC_PERIPH_TZSC (GTZC_PERIPH_REG1 | GTZC_CFGR1_TZSC_Pos) |
| #define GTZC_PERIPH_AES (GTZC_PERIPH_REG1 | GTZC_CFGR1_AES_Pos) |
| #define GTZC_PERIPH_RNG (GTZC_PERIPH_REG1 | GTZC_CFGR1_RNG_Pos) |
| #define GTZC_PERIPH_SUBGHZSPI (GTZC_PERIPH_REG1 | GTZC_CFGR1_SUBGHZSPI_Pos) |
| #define GTZC_PERIPH_PWR (GTZC_PERIPH_REG1 | GTZC_CFGR1_PWR_Pos) |
| #define GTZC_PERIPH_FLASHIF (GTZC_PERIPH_REG1 | GTZC_CFGR1_FLASHIF_Pos) |
| #define GTZC_PERIPH_DMA1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_DMA1_Pos) |
| #define GTZC_PERIPH_DMA2 (GTZC_PERIPH_REG1 | GTZC_CFGR1_DMA2_Pos) |
| #define GTZC_PERIPH_DMAMUX (GTZC_PERIPH_REG1 | GTZC_CFGR1_DMAMUX_Pos) |
| #define GTZC_PERIPH_FLASH (GTZC_PERIPH_REG1 | GTZC_CFGR1_FLASH_Pos) |
| #define GTZC_PERIPH_SRAM1 (GTZC_PERIPH_REG1 | GTZC_CFGR1_SRAM1_Pos) |
| #define GTZC_PERIPH_SRAM2 (GTZC_PERIPH_REG1 | GTZC_CFGR1_SRAM2_Pos) |
| #define GTZC_PERIPH_PKA (GTZC_PERIPH_REG1 | GTZC_CFGR1_PKA_Pos) |
| #define GTZC_PERIPH_TZIC_MAX GTZC_PERIPH_PKA |
| #define GTZC_PERIPH_ALL GTZC_PERIPH_ALLPERIPH_Msk |
| |
| |
| /* Note that two maximum values are also defined here: |
| * - max number of securable peripherals |
| * (used in TZSC sub-block) |
| * - max number of securable and security-aware peripherals or masters |
| * (used in TZIC sub-block) |
| */ |
| #define GTZC_TZSC_PERIPH_NUMBER 4U |
| #define GTZC_TZIC_PERIPH_NUMBER (GTZC_GET_ARRAY_INDEX(GTZC_PERIPH_PKA + 1U)) |
| |
| /** |
| * @} |
| */ |
| |
| /** @defgroup GTZC_TZSC_Lock GTZC TZSC Lock |
| * @{ |
| */ |
| #define GTZC_TZSC_LOCK_OFF (0U) |
| #define GTZC_TZSC_LOCK_ON (1U) |
| /** |
| * @} |
| */ |
| |
| /** @defgroup GTZC_MPCWM_AreaId GTZC MPCWM area identifier values |
| * @{ |
| */ |
| #define GTZC_TZSC_MPCWM_AREAID_UNPRIV (0U) |
| #define GTZC_TZSC_MPCWM_AREAID_UNPRIV_WRITABLE (1U) |
| /** |
| * @} |
| */ |
| |
| |
| /** @defgroup GTZC_TZIC_ILA_Pending GTZC TZIC ILA Pending |
| * @{ |
| */ |
| #define GTZC_TZIC_NO_ILA_EVENT (0U) |
| #define GTZC_TZIC_ILA_EVENT_PENDING (1U) |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Exported macro ------------------------------------------------------------*/ |
| /* Exported functions --------------------------------------------------------*/ |
| /** @addtogroup GTZC_Exported_Functions |
| * @{ |
| */ |
| |
| /** @addtogroup GTZC_Exported_Functions_Group1 |
| * @{ |
| */ |
| /* TZSC Initialization and Configuration functions ****************************/ |
| HAL_StatusTypeDef HAL_GTZC_TZSC_ConfigPeriphAttributes(uint32_t PeriphId, uint32_t PeriphAttributes); |
| HAL_StatusTypeDef HAL_GTZC_TZSC_GetConfigPeriphAttributes(uint32_t PeriphId, uint32_t *PeriphAttributes); |
| /** |
| * @} |
| */ |
| |
| /** @addtogroup GTZC_Exported_Functions_Group2 |
| * @{ |
| */ |
| /* MPCWM Initialization and Configuration functions ***************************/ |
| HAL_StatusTypeDef HAL_GTZC_TZSC_MPCWM_ConfigMemAttributes(uint32_t MemBaseAddress, MPCWM_ConfigTypeDef *pMPCWM_Desc); |
| HAL_StatusTypeDef HAL_GTZC_TZSC_MPCWM_GetConfigMemAttributes(uint32_t MemBaseAddress, MPCWM_ConfigTypeDef *pMPCWM_Desc); |
| /** |
| * @} |
| */ |
| |
| /** @addtogroup GTZC_Exported_Functions_Group3 |
| * @{ |
| */ |
| /* TZSC and TZSC-MPCWM Lock functions *****************************************/ |
| uint32_t HAL_GTZC_TZSC_GetLock(GTZC_TZSC_TypeDef *TZSCx); |
| #if defined(CORE_CM0PLUS) |
| void HAL_GTZC_TZSC_Lock(GTZC_TZSC_TypeDef *TZSCx); |
| /** |
| * @} |
| */ |
| |
| /** @addtogroup GTZC_Exported_Functions_Group4 |
| * @{ |
| */ |
| /* TZIC Initialization and Configuration functions ****************************/ |
| HAL_StatusTypeDef HAL_GTZC_TZIC_DisableIT(uint32_t PeriphId); |
| HAL_StatusTypeDef HAL_GTZC_TZIC_EnableIT(uint32_t PeriphId); |
| HAL_StatusTypeDef HAL_GTZC_TZIC_GetFlag(uint32_t PeriphId, uint32_t *Flag); |
| HAL_StatusTypeDef HAL_GTZC_TZIC_ClearFlag(uint32_t PeriphId); |
| /** |
| * @} |
| */ |
| |
| /** @addtogroup GTZC_Exported_Functions_Group5 |
| * @{ |
| */ |
| void HAL_GTZC_IRQHandler(void); |
| void HAL_GTZC_TZIC_Callback(uint32_t PeriphId); |
| #endif /* CORE_CM0PLUS */ |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| |
| /* Private macro ------------------------------------------------------------*/ |
| /** @defgroup GTZC_Private_Macros GTZC Private Macros |
| * @{ |
| */ |
| /** |
| * @brief GTZC private macros usable to retrieve information to access register |
| * for a specific PeriphId |
| */ |
| #define GTZC_GET_REG_INDEX(__PERIPHERAL__) (((__PERIPHERAL__) & GTZC_PERIPH_REG_Msk) >> GTZC_PERIPH_REG_Pos) |
| #define GTZC_GET_PERIPH_POS(__PERIPHERAL__) ((__PERIPHERAL__) & GTZC_PERIPH_BITPOS_Msk) |
| |
| /** |
| * @brief GTZC private macro to get array index of a specific PeriphId |
| * in case of GTZC_PERIPH_ALL usage in the two following functions: |
| * HAL_GTZC_TZSC_ConfigPeriphAttributes and HAL_GTZC_TZSC_GetConfigPeriphAttributes |
| */ |
| #define GTZC_GET_ARRAY_INDEX(__PERIPHERAL__) ((GTZC_GET_REG_INDEX(__PERIPHERAL__) * 32U) + GTZC_GET_PERIPH_POS(__PERIPHERAL__)) |
| |
| |
| /** |
| * @brief GTZC private macros to check function input parameters |
| */ |
| #define IS_GTZC_ATTRIBUTE(__ATTRIBUTES__) (((__ATTRIBUTES__) & ~(GTZC_TZSC_ATTRIBUTE_SEC | GTZC_TZSC_ATTRIBUTE_PRIV)) == 0x00u) |
| |
| #define IS_GTZC_TZSC_PERIPHERAL(__PERIPHERAL__) (((__PERIPHERAL__) == GTZC_PERIPH_AES) || ((__PERIPHERAL__) == GTZC_PERIPH_RNG) || \ |
| ((__PERIPHERAL__) == GTZC_PERIPH_SUBGHZSPI) || ((__PERIPHERAL__) == GTZC_PERIPH_PKA) ||\ |
| ((__PERIPHERAL__) == GTZC_PERIPH_ALL)) |
| |
| #define IS_GTZC_TZIC_PERIPHERAL(__PERIPHERAL__) (((((__PERIPHERAL__) & ~(GTZC_PERIPH_REG_Pos | GTZC_PERIPH_BITPOS_Msk)) == 0x00u) && \ |
| ((GTZC_GET_ARRAY_INDEX(__PERIPHERAL__) <= GTZC_GET_ARRAY_INDEX(GTZC_PERIPH_TZIC_MAX)))) || \ |
| ((__PERIPHERAL__) == GTZC_PERIPH_ALLPERIPH_Msk)) |
| |
| #define IS_GTZC_MPCWM_MEMORY_BASEADDRESS(__BASE_ADDRESS__) (((__BASE_ADDRESS__) == FLASH_BASE) || \ |
| ((__BASE_ADDRESS__) == SRAM1_BASE) || \ |
| ((__BASE_ADDRESS__) == SRAM2_BASE)) |
| |
| #define IS_GTZC_MPCWM_FLASH_AREAID(__AREAID__) (((__AREAID__) == GTZC_TZSC_MPCWM_AREAID_UNPRIV) || \ |
| ((__AREAID__) == GTZC_TZSC_MPCWM_AREAID_UNPRIV_WRITABLE)) |
| |
| #define IS_GTZC_MPCWM_SRAM1_AREAID(__AREAID__) ((__AREAID__) == GTZC_TZSC_MPCWM_AREAID_UNPRIV) |
| |
| #define IS_GTZC_MPCWM_SRAM2_AREAID(__AREAID__) ((__AREAID__) == GTZC_TZSC_MPCWM_AREAID_UNPRIV) |
| |
| #define IS_GTZC_MPCWM_FLASH_LENGTH(__LENGTH__) ((((__LENGTH__) % GTZC_TZSC_MPCWM_GRANULARITY_FLASH) == 0x00u) && \ |
| ((__LENGTH__) <= FLASH_SIZE)) |
| |
| #define IS_GTZC_MPCWM_SRAM1_LENGTH(__LENGTH__) ((((__LENGTH__) % GTZC_TZSC_MPCWM_GRANULARITY_SRAM1) == 0x00u) && \ |
| ((__LENGTH__) <= SRAM1_SIZE)) |
| |
| #define IS_GTZC_MPCWM_SRAM2_LENGTH(__LENGTH__) ((((__LENGTH__) % GTZC_TZSC_MPCWM_GRANULARITY_SRAM2) == 0x00u) && \ |
| ((__LENGTH__) <= SRAM2_SIZE)) |
| |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| #endif /* GTZC_TZSC */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* STM32WLxx_HAL_GTZC_H */ |
| |