1 /* SPDX-License-Identifier: BSD-3-Clause */ 2 /* 3 * Copyright (c) 2021-2022, STMicroelectronics 4 */ 5 6 #ifndef __DRIVERS_STM32_TAMP_H__ 7 #define __DRIVERS_STM32_TAMP_H__ 8 9 #include <compiler.h> 10 #include <stdint.h> 11 #include <tee_api_types.h> 12 13 /* 14 * struct stm32_bkpregs_conf - Interface for stm32_tamp_set_secure_bkpregs() 15 * @nb_zone1_regs - Number of backup registers in zone 1 16 * @nb_zone2_regs - Number of backup registers in zone 2 17 * 18 * TAMP backup registers access permissions 19 * 20 * Zone 1: read/write in secure state, no access in non-secure state 21 * Zone 2: read/write in secure state, read-only in non-secure state 22 * Zone 3: read/write in secure state, read/write in non-secure state 23 * 24 * Protection zone 1 25 * If nb_zone1_regs == 0 no backup register are in zone 1. 26 * Otherwise backup registers from TAMP_BKP0R to TAMP_BKP<x>R are in zone 1, 27 * with <x> = (@nb_zone1_regs - 1). 28 * 29 * Protection zone 2 30 * If nb_zone2_regs == 0 no backup register are in zone 2. 31 * Otherwise backup registers from TAMP_BKP<y>R ro TAMP_BKP<z>R are in zone 2, 32 * with <y> = @nb_zone1_regs and <z> = (@nb_zone1_regs1 + @nb_zone2_regs - 1). 33 * 34 * Protection zone 3 35 * Backup registers from TAMP_BKP<t>R to last backup register are in zone 3, 36 * with <t> = (@nb_zone1_regs1 + @nb_zone2_regs). 37 */ 38 struct stm32_bkpregs_conf { 39 uint32_t nb_zone1_regs; 40 uint32_t nb_zone2_regs; 41 }; 42 43 #ifdef CFG_STM32_TAMP 44 /* 45 * stm32_tamp_set_secure_bkprwregs() - Configure backup registers zone. 46 * @conf - Configuration to be programmed 47 */ 48 TEE_Result stm32_tamp_set_secure_bkpregs(struct stm32_bkpregs_conf *conf); 49 #else 50 static inline stm32_tamp_set_secure_bkpregs(struct stm32_bkpregs_conf * c __unused)51TEE_Result stm32_tamp_set_secure_bkpregs(struct stm32_bkpregs_conf *c __unused) 52 { 53 return TEE_ERROR_NOT_SUPPORTED; 54 } 55 #endif 56 #endif /* __DRIVERS_STM32_TAMP_H__ */ 57