14583de06SGatien Chevallier /* SPDX-License-Identifier: BSD-2-Clause */ 24583de06SGatien Chevallier /* 34583de06SGatien Chevallier * Copyright (C) 2022, STMicroelectronics - All Rights Reserved 44583de06SGatien Chevallier */ 54583de06SGatien Chevallier 64583de06SGatien Chevallier #ifndef __PTA_STM32MP_BSEC_H 74583de06SGatien Chevallier #define __PTA_STM32MP_BSEC_H 84583de06SGatien Chevallier 94583de06SGatien Chevallier #define PTA_BSEC_UUID { 0x94cf71ad, 0x80e6, 0x40b5, \ 104583de06SGatien Chevallier { 0xa7, 0xc6, 0x3d, 0xc5, 0x01, 0xeb, 0x28, 0x03 } } 114583de06SGatien Chevallier 124583de06SGatien Chevallier /** 134583de06SGatien Chevallier * Read OTP memory 144583de06SGatien Chevallier * 154583de06SGatien Chevallier * [in] value[0].a OTP start offset in byte 164583de06SGatien Chevallier * [in] value[0].b Access type, see PTA_BSEC_TYPE_* 174583de06SGatien Chevallier * [out] memref[1].buffer Output buffer to store read values 184583de06SGatien Chevallier * [out] memref[1].size Size of OTP to be read 194583de06SGatien Chevallier * 204583de06SGatien Chevallier * Return codes: 214583de06SGatien Chevallier * TEE_SUCCESS - Invoke command success 224583de06SGatien Chevallier * TEE_ERROR_BAD_PARAMETERS - Incorrect input param 23*df9b559aSEtienne Carriere * TEE_ERROR_ACCESS_DENIED - OTP not accessible by caller 244583de06SGatien Chevallier */ 254583de06SGatien Chevallier #define PTA_BSEC_CMD_READ_OTP 0x0 264583de06SGatien Chevallier 274583de06SGatien Chevallier /** 284583de06SGatien Chevallier * Write OTP memory 294583de06SGatien Chevallier * 304583de06SGatien Chevallier * [in] value[0].a OTP start offset in byte 314583de06SGatien Chevallier * [in] value[0].b Access type (0 : shadow, 324583de06SGatien Chevallier * 1 : fuse, 2 : lock) 334583de06SGatien Chevallier * [in] memref[1].buffer Input buffer to read values 344583de06SGatien Chevallier * [in] memref[1].size Size of OTP to be written 354583de06SGatien Chevallier * 364583de06SGatien Chevallier * Return codes: 374583de06SGatien Chevallier * TEE_SUCCESS - Invoke command success 384583de06SGatien Chevallier * TEE_ERROR_BAD_PARAMETERS - Incorrect input param 394583de06SGatien Chevallier * TEE_ERROR_ACCESS_DENIED - OTP not accessible by caller 404583de06SGatien Chevallier */ 414583de06SGatien Chevallier #define PTA_BSEC_CMD_WRITE_OTP 0x1 424583de06SGatien Chevallier 434583de06SGatien Chevallier /** 444583de06SGatien Chevallier * Get BSEC state 454583de06SGatien Chevallier * Return the chip security level by reading the BSEC state 464583de06SGatien Chevallier * 474583de06SGatien Chevallier * [out] value[0].a One of PTA_BSEC_STATE_* 484583de06SGatien Chevallier * Return codes: 494583de06SGatien Chevallier * TEE_SUCCESS - Invoke command success 504583de06SGatien Chevallier * TEE_ERROR_BAD_PARAMETERS - Incorrect input param 514583de06SGatien Chevallier */ 524583de06SGatien Chevallier #define PTA_BSEC_CMD_GET_STATE 0x3 534583de06SGatien Chevallier 544583de06SGatien Chevallier enum stm32_bsec_pta_sec_state { 554583de06SGatien Chevallier PTA_BSEC_STATE_SEC_OPEN = 0, 564583de06SGatien Chevallier PTA_BSEC_STATE_SEC_CLOSE = 1, 574583de06SGatien Chevallier PTA_BSEC_STATE_INVALID = 3 584583de06SGatien Chevallier }; 594583de06SGatien Chevallier 604583de06SGatien Chevallier /* 614583de06SGatien Chevallier * Access types identifiers for PTA_BSEC_CMD_READ_OTP and 624583de06SGatien Chevallier * PTA_BSEC_CMD_WRITE_OTP = value[in].b. 634583de06SGatien Chevallier * 644583de06SGatien Chevallier * PTA_BSEC_SHADOW_ACCESS Access OTP shadow memory 654583de06SGatien Chevallier * PTA_BSEC_FUSE_ACCESS Access OTP fuse memory 664583de06SGatien Chevallier * PTA_BSEC_LOCKS_ACCESS Access OTP locks. The locks value read/written 674583de06SGatien Chevallier * in memref[1] 32bit words are related to bit flag 684583de06SGatien Chevallier * masks PTA_BSEC_LOCK_*. 694583de06SGatien Chevallier */ 704583de06SGatien Chevallier #define PTA_BSEC_SHADOW_ACCESS 0 714583de06SGatien Chevallier #define PTA_BSEC_FUSE_ACCESS 1 724583de06SGatien Chevallier #define PTA_BSEC_LOCKS_ACCESS 2 734583de06SGatien Chevallier 744583de06SGatien Chevallier /* 754583de06SGatien Chevallier * PTA_BSEC_LOCK_* - Bit mask of OTP locks in memref[1] 764583de06SGatien Chevallier * 774583de06SGatien Chevallier * PTA_BSEC_LOCK_PERM Fuse programming permanent lock 784583de06SGatien Chevallier * PTA_BSEC_LOCK_SHADOW_R Shadow programming (from fuse) lock 794583de06SGatien Chevallier * PTA_BSEC_LOCK_SHADOW_W Shadow memory write lock 804583de06SGatien Chevallier * PTA_BSEC_LOCK_SHADOW_P Fuse programming sticky lock 814583de06SGatien Chevallier * PTA_BSEC_LOCK_ERROR Flag indicating an error in lock access 824583de06SGatien Chevallier */ 834583de06SGatien Chevallier #define PTA_BSEC_LOCK_PERM BIT(30) 844583de06SGatien Chevallier #define PTA_BSEC_LOCK_SHADOW_R BIT(29) 854583de06SGatien Chevallier #define PTA_BSEC_LOCK_SHADOW_W BIT(28) 864583de06SGatien Chevallier #define PTA_BSEC_LOCK_SHADOW_P BIT(27) 874583de06SGatien Chevallier #define PTA_BSEC_LOCK_ERROR BIT(26) 884583de06SGatien Chevallier 894583de06SGatien Chevallier #endif /* __PTA_STM32MP_BSEC_H */ 90