/*
|
* Copyright (c) 2014, STMicroelectronics International N.V.
|
*
|
* This program is free software; you can redistribute it and/or modify
|
* it under the terms of the GNU General Public License Version 2 as
|
* published by the Free Software Foundation.
|
*
|
* This program is distributed in the hope that it will be useful,
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* GNU General Public License for more details.
|
*/
|
#ifndef __TEE_ARMV7_OP_H__
|
#define __TEE_ARMV7_OP_H__
|
|
enum t_issw_service_id {
|
/*
|
* ("SSAPI_PRE_INIT_SERV")
|
*/
|
SSAPI_PRE_INIT_SERV = 1,
|
|
/*
|
* ("SSAPI_POST_SPEEDUP_INIT_SERV")
|
* Reserved, Not used
|
*/
|
SSAPI_POST_SPEEDUP_INIT_SERV = 2,
|
|
/*
|
* ("SSAPI_ISSW_IMPORT_SERV")
|
*/
|
SSAPI_ISSW_IMPORT_SERV = 3,
|
|
/*
|
* ("SSAPI_RET_FROM_INT_SERV")
|
*/
|
SSAPI_RET_FROM_INT_SERV = 4,
|
|
/*
|
* ("SSAPI_RET_FROM_RPC_SERV")
|
*/
|
SSAPI_RET_FROM_RPC_SERV = 5,
|
|
/*
|
* "ISSWAPI_ISSW_EXECUTE_SERV" is linked to ROM code
|
* ("SSAPI_ISSW_EXECUTE_SERV")
|
*/
|
ISSWAPI_ISSW_EXECUTE_SERV = 6,
|
ISSWAPI_PROT_APPL_MSG_SEND = 0x10000000,
|
ISSWAPI_EXTERNAL_CODE_CHECK = 0x10000001,
|
ISSWAPI_SECURE_LOAD = 0x10000002,
|
ISSWAPI_ISSW_REIMPORT_PUB_KEYS = 0x10000003,
|
|
/* Accessible only on request */
|
ISSWAPI_WRITE_L2CC = 0x10000004,
|
ISSWAPI_WRITE_CP15_SCTLR = 0x10000005,
|
ISSWAPI_READ_CP15_SCTLR = 0x10000006,
|
ISSWAPI_WRITE_CP15_ACTLR = 0x10000007,
|
ISSWAPI_READ_CP15_ACTLR = 0x10000008,
|
ISSWAPI_WRITE_CP15_DIAGR = 0x10000009,
|
ISSWAPI_READ_CP15_DIAGR = 0x1000000A,
|
|
ISSWAPI_EXECUTE_TA = 0x11000001,
|
ISSWAPI_CLOSE_TA = 0x11000002,
|
ISSWAPI_FLUSH_BOOT_CODE = 0x11000003,
|
/* Generic, restricted to be used by u-boot */
|
ISSWAPI_VERIFY_SIGNED_HEADER = 0x11000005,
|
ISSWAPI_VERIFY_HASH = 0x11000006,
|
/* 8500 only, restricted to be used by u-boot */
|
ISSWAPI_GET_RT_FLAGS = 0x11000007,
|
|
/* For TEE Client API 1.0 */
|
ISSWAPI_TEEC_OPEN_SESSION = 0x11000008,
|
ISSWAPI_TEEC_CLOSE_SESSION = 0x11000009,
|
ISSWAPI_TEEC_INVOKE_COMMAND = 0x1100000a,
|
ISSWAPI_REGISTER_RPC = 0x1100000b, /* this is NOT a GP TEE API ! */
|
ISSWAPI_SET_SEC_DDR = 0x1100000c, /* this is NOT a GP TEE API ! */
|
ISSWAPI_TEEC_CANCEL_COMMAND = 0x1100000d,
|
ISSWAPI_TEEC_REGISTER_MEMORY = 0x1100000e,
|
ISSWAPI_TEEC_UNREGISTER_MEMORY = 0x1100000f,
|
|
/* Internal command */
|
ISSWAPI_TEE_DEINIT_CPU = 0x11000010,
|
ISSWAPI_TEE_CRASH_CPU = 0x11000011,
|
ISSWAPI_TEE_SET_CORE_TRACE_LEVEL = 0x11000012,
|
ISSWAPI_TEE_GET_CORE_TRACE_LEVEL = 0x11000013,
|
ISSWAPI_TEE_SET_TA_TRACE_LEVEL = 0x11000014,
|
ISSWAPI_TEE_GET_TA_TRACE_LEVEL = 0x11000015,
|
ISSWAPI_TEE_GET_CORE_STATUS = 0x11000016,
|
ISSWAPI_TEE_FLUSH_CACHE = 0x11000017,
|
|
ISSWAPI_REGISTER_DEF_SHM = 0x11000020,
|
ISSWAPI_UNREGISTER_DEF_SHM = 0x11000021,
|
ISSWAPI_REGISTER_IRQFWD = 0x11000022,
|
ISSWAPI_UNREGISTER_IRQFWD = 0x11000023,
|
ISSWAPI_GET_SHM_START = 0x11000024,
|
ISSWAPI_GET_SHM_SIZE = 0x11000025,
|
ISSWAPI_GET_SHM_CACHED = 0x11000026,
|
|
ISSWAPI_ENABLE_L2CC_MUTEX = 0x20000000,
|
ISSWAPI_DISABLE_L2CC_MUTEX = 0x20000001,
|
ISSWAPI_GET_L2CC_MUTEX = 0x20000002,
|
ISSWAPI_SET_L2CC_MUTEX = 0x20000003,
|
|
ISSWAPI_LOAD_TEE = 0x20000004,
|
|
};
|
|
/*
|
* tee_msg_send - generic part of the msg sent to the TEE
|
*/
|
struct tee_msg_send {
|
unsigned int service;
|
};
|
|
/*
|
* tee_msg_recv - default strcutre of TEE service output message
|
*/
|
struct tee_msg_recv {
|
int duration;
|
uint32_t res;
|
uint32_t origin;
|
};
|
|
/*
|
* tee_register_irqfwd_xxx - (un)register callback for interrupt forwarding
|
*/
|
struct tee_register_irqfwd_send {
|
struct tee_msg_send header;
|
struct {
|
unsigned long cb;
|
} data;
|
};
|
struct tee_register_irqfwd_recv {
|
struct tee_msg_recv header;
|
};
|
|
/*
|
* tee_get_l2cc_mutex - input/output argument structures
|
*/
|
struct tee_get_l2cc_mutex_send {
|
struct tee_msg_send header;
|
};
|
struct tee_get_l2cc_mutex_recv {
|
struct tee_msg_recv header;
|
struct {
|
unsigned long paddr;
|
} data;
|
};
|
|
/**
|
* struct tee_identity - Represents the identity of the client
|
* @login: Login id
|
* @uuid: UUID as defined above
|
*/
|
struct tee_identity {
|
uint32_t login;
|
TEEC_UUID uuid;
|
};
|
|
/*
|
* tee_open_session_data - input arg structure for TEE open session service
|
*/
|
struct tee_open_session_data {
|
struct ta_signed_header_t *ta;
|
TEEC_UUID uuid;
|
uint32_t param_types;
|
TEEC_Value params[TEEC_CONFIG_PAYLOAD_REF_COUNT];
|
struct tee_identity client_id;
|
uint32_t params_flags[TEEC_CONFIG_PAYLOAD_REF_COUNT];
|
};
|
|
/*
|
* tee_open_session_send - input arg msg for TEE open session service
|
*/
|
struct tee_open_session_send {
|
struct tee_msg_send header;
|
struct tee_open_session_data data;
|
};
|
|
/*
|
* tee_open_session_recv - output arg structure for TEE open session service
|
*/
|
struct tee_open_session_recv {
|
struct tee_msg_recv header;
|
uint32_t sess;
|
TEEC_Value params[TEEC_CONFIG_PAYLOAD_REF_COUNT];
|
};
|
|
/*
|
* tee_invoke_command_data - input arg structure for TEE invoke cmd service
|
*/
|
struct tee_invoke_command_data {
|
uint32_t sess;
|
uint32_t cmd;
|
uint32_t param_types;
|
TEEC_Value params[TEEC_CONFIG_PAYLOAD_REF_COUNT];
|
uint32_t params_flags[TEEC_CONFIG_PAYLOAD_REF_COUNT];
|
};
|
|
struct tee_invoke_command_send {
|
struct tee_msg_send header;
|
struct tee_invoke_command_data data;
|
};
|
|
/*
|
* tee_invoke_command_recv - output arg structure for TEE invoke cmd service
|
*/
|
struct tee_invoke_command_recv {
|
struct tee_msg_recv header;
|
TEEC_Value params[TEEC_CONFIG_PAYLOAD_REF_COUNT];
|
};
|
|
/*
|
* tee_cancel_command_data - input arg structure for TEE cancel service
|
*/
|
struct tee_cancel_command_data {
|
uint32_t sess;
|
};
|
|
/*
|
* tee_cancel_command_send - input msg structure for TEE cancel service
|
*/
|
struct tee_cancel_command_send {
|
struct tee_msg_send header;
|
struct tee_cancel_command_data data;
|
};
|
|
/*
|
* tee_close_session_data - input arg structure for TEE close session service
|
*/
|
struct tee_close_session_data {
|
uint32_t sess;
|
};
|
|
/*
|
* tee_close_session_send - input arg msg for TEE close session service
|
*/
|
struct tee_close_session_send {
|
struct tee_msg_send header;
|
struct tee_close_session_data data;
|
};
|
|
/*
|
* tee_register_rpc_send_data - input arg structure for TEE register rpc service
|
*/
|
struct tee_register_rpc_send_data {
|
uint32_t fnk;
|
uint32_t bf;
|
uint32_t nbr_bf;
|
};
|
|
/*
|
* tee_register_rpc_send - input msg structure for TEE register rpc service
|
*/
|
struct tee_register_rpc_send {
|
struct tee_msg_send header;
|
struct tee_register_rpc_send_data data;
|
};
|
|
/*
|
* tee_core_status_out - output arg structure for TEE status service
|
*/
|
#define TEEC_STATUS_MSG_SIZE 80
|
|
struct tee_core_status_out {
|
struct tee_msg_recv header;
|
char raw[TEEC_STATUS_MSG_SIZE];
|
};
|
|
#endif /* __TEE_ARMV7_OP_H__ */
|