blob: 460a8a91e8af1e4814d3c3e2fc62226e1e083907 [file] [log] [blame]
#ifndef SST_INTERFACE_H
#define SST_INTERFACE_H
#include "nvram_data_items.h"
#define SST_PROTECTED_NVRAM_LID_READ_LIMIT 0x1
#define SST_PROTECTED_NVRAM_LID_WRITE_LIMIT 0x2
typedef struct sst_protected_nvram_lid_struct {
nvram_lid_enum m_lid;
kal_uint16 m_attr;
} SST_PROTECTED_NVRAM_LID;
typedef struct sst_allowed_task_struct {
module_type m_mod_id;
} SST_ALLOWED_TASK;
/*
* Efuse region index definition
*/
#define EFUSE_IDX_C_DAT0 0
#define EFUSE_IDX_C_DAT1 1
#define EFUSE_IDX_C_DAT2 2
#define EFUSE_IDX_C_DAT3 3
#define EFUSE_IDX_C_DAT4 4
#define EFUSE_IDX_C_DAT5 5
#define EFUSE_IDX_C_CTRL0 6
#define EFUSE_IDX_C_CTRL1 7
/*SST Efuse blowing error code*/
#define SST_EFUSE_BLOW_DONE 0
#define SST_EFUSE_BLOW_AP_NOT_READY 0x10000000
#define SST_EFUSE_BLOW_DATA_FAIL 0x20000000
#define SST_EFUSE_BLOW_START_FAIL 0x40000000
#define SST_EFUSE_BLOW_LOCK_FAIL 0x80000000
#define SST_EFUSE_BLOW_END_FAIL 0x01000000
#define SST_EFUSE_BLOW_BIT_NOT_SUPPORT 0x02000000
#define SST_EFUSE_BLOW_REGION_NOT_SUPPORT 0x04000000
#define SST_EFUSE_BLOW_CHIP_NOT_SUPPORT 0x08000000
#define SST_EFUSE_BLOW_NOT_INIT 0x00100000
#define SST_EFUSE_BLOW_PROCESS_FAIL 0x00200000
#define SST_EFUSE_BLOW_REINIT_FAIL 0x00400000
#define SST_EFUSE_BLOW_CCCI_FAIL 0x00800000
/*****************************************************************************
* FUNCTION
* SST_Get_ChipRID
*
* DESCRIPTION
* The function returns per-chip random ID to the caller.
*
* PARAMETERS
* [INPUT/OUTPUT] pRid : The buffer that is used to store the per-chip random ID.
* [INPUT] buf_len : Length that the caller wants for the per-chip random ID in "bits".
*
* RETURNS
* KAL_TRUE : Get random ID Success
* KAL_FALSE : Get random ID failed
*
* NOTES
* N/A
*
*****************************************************************************/
extern kal_bool SST_Get_ChipRID(kal_char *pRid, kal_int32 buf_len);
/*****************************************************************************
* FUNCTION
* SST_Get_ChipRK
*
* DESCRIPTION
* The function returns per-chip random key to the caller.
*
* PARAMETERS
* [INPUT/OUTPUT] key : The buffer that is used to store the per-chip random key.
* [INPUT] len : Length that the caller wants for the per-chip random key in bytes.
*
* RETURNS
* KAL_TRUE : Get random key Success
* KAL_FALSE : Get random key failed
*
* NOTES
* N/A
*
*****************************************************************************/
extern kal_bool SST_Get_ChipRK(kal_char *key, kal_int32 len);
/*************************************************************************
* FUNCTION
* SST_Get_EFUSE_Data
*
* DESCRIPTION
* This function get specified length of efuse data and put in the buffer
*
* PARAMETERS
* data_type - efuse field
* buf - pointer to the buffer to store efuse data
* len - efuse data length expected to read
*
* RETURNS
* KAL_TRUE/KAL_FALSE
*
*************************************************************************/
typedef enum{
AP_SBC_EN = 1,
C_CTRL0,
C_CTRL1,
C_DAT0,
C_DAT1,
C_DAT2,
C_DAT3,
C_DAT4,
C_DAT5,
C_DAT6,
C_DAT7,
}EFUSE_DATA_TYPE;
kal_bool SST_Get_EFUSE_Data(EFUSE_DATA_TYPE data_type, kal_uint8* buf, kal_uint8 len);
/*************************************************************************
* FUNCTION
* SST_ilm_inject_check
*
* DESCRIPTION
* This function checks whether input ILM is permitted to access the specified NVRAM LID
*
* PARAMETERS
* ilm_ptr - read/write request ILM
*
* RETURNS
* KAL_TRUE/KAL_FALSE
* KAL_TRUE: The access is permitted, i.e. pass checking successfully
* KAL_FALSE: The access is prohibited, i.e. fails checking
*************************************************************************/
kal_uint32 SST_ilm_inject_check(ilm_struct *ilm_ptr);
#endif