* Copyright (C) 2022, STMicroelectronics - All Rights Reserved
*/
#ifndef __PTA_STM32MP_BSEC_H
#define __PTA_STM32MP_BSEC_H
#define PTA_BSEC_UUID { 0x94cf71ad, 0x80e6, 0x40b5, \
{ 0xa7, 0xc6, 0x3d, 0xc5, 0x01, 0xeb, 0x28, 0x03 } }
* Read OTP memory
*
* [in] value[0].a OTP start offset in byte
* [in] value[0].b Access type, see PTA_BSEC_TYPE_*
* [out] memref[1].buffer Output buffer to store read values
* [out] memref[1].size Size of OTP to be read
*
* Return codes:
* TEE_SUCCESS - Invoke command success
* TEE_ERROR_BAD_PARAMETERS - Incorrect input param
* TEE_ERROR_ACCESS_DENIED - OTP not accessible by caller
*/
#define PTA_BSEC_CMD_READ_OTP 0x0
* Write OTP memory
*
* [in] value[0].a OTP start offset in byte
* [in] value[0].b Access type (0 : shadow,
* 1 : fuse, 2 : lock)
* [in] memref[1].buffer Input buffer to read values
* [in] memref[1].size Size of OTP to be written
*
* Return codes:
* TEE_SUCCESS - Invoke command success
* TEE_ERROR_BAD_PARAMETERS - Incorrect input param
* TEE_ERROR_ACCESS_DENIED - OTP not accessible by caller
*/
#define PTA_BSEC_CMD_WRITE_OTP 0x1
* Get BSEC state
* Return the chip security level by reading the BSEC state
*
* [out] value[0].a One of PTA_BSEC_STATE_*
* Return codes:
* TEE_SUCCESS - Invoke command success
* TEE_ERROR_BAD_PARAMETERS - Incorrect input param
*/
#define PTA_BSEC_CMD_GET_STATE 0x3
enum stm32_bsec_pta_sec_state {
PTA_BSEC_STATE_SEC_OPEN = 0,
PTA_BSEC_STATE_SEC_CLOSE = 1,
PTA_BSEC_STATE_INVALID = 3
};
* Access types identifiers for PTA_BSEC_CMD_READ_OTP and
* PTA_BSEC_CMD_WRITE_OTP = value[in].b.
*
* PTA_BSEC_SHADOW_ACCESS Access OTP shadow memory
* PTA_BSEC_FUSE_ACCESS Access OTP fuse memory
* PTA_BSEC_LOCKS_ACCESS Access OTP locks. The locks value read/written
* in memref[1] 32bit words are related to bit flag
* masks PTA_BSEC_LOCK_*.
*/
#define PTA_BSEC_SHADOW_ACCESS 0
#define PTA_BSEC_FUSE_ACCESS 1
#define PTA_BSEC_LOCKS_ACCESS 2
* PTA_BSEC_LOCK_* - Bit mask of OTP locks in memref[1]
*
* PTA_BSEC_LOCK_PERM Fuse programming permanent lock
* PTA_BSEC_LOCK_SHADOW_R Shadow programming (from fuse) lock
* PTA_BSEC_LOCK_SHADOW_W Shadow memory write lock
* PTA_BSEC_LOCK_SHADOW_P Fuse programming sticky lock
* PTA_BSEC_LOCK_ERROR Flag indicating an error in lock access
*/
#define PTA_BSEC_LOCK_PERM BIT(30)
#define PTA_BSEC_LOCK_SHADOW_R BIT(29)
#define PTA_BSEC_LOCK_SHADOW_W BIT(28)
#define PTA_BSEC_LOCK_SHADOW_P BIT(27)
#define PTA_BSEC_LOCK_ERROR BIT(26)
#endif