You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.0 KiB
119 lines
3.0 KiB
8 months ago
|
/*
|
||
|
* (C) Copyright 2017 Rockchip Electronics Co., Ltd
|
||
|
*
|
||
|
* SPDX-License-Identifier: GPL-2.0+
|
||
|
*/
|
||
|
|
||
|
#ifndef TEESMC_V2_H
|
||
|
#define TEESMC_V2_H
|
||
|
|
||
|
#define OPTEE_SMC_CALL_WITH_ARG_V2 0x32000004
|
||
|
|
||
|
struct optee_msg_param_tmem_v2 {
|
||
|
uint64_t buf_ptr;
|
||
|
uint64_t size;
|
||
|
uint64_t shm_ref;
|
||
|
};
|
||
|
|
||
|
struct optee_msg_param_rmem_v2 {
|
||
|
uint64_t offs;
|
||
|
uint64_t size;
|
||
|
uint64_t shm_ref;
|
||
|
};
|
||
|
|
||
|
struct optee_msg_param_value_v2 {
|
||
|
uint64_t a;
|
||
|
uint64_t b;
|
||
|
uint64_t c;
|
||
|
};
|
||
|
|
||
|
struct optee_msg_param_v2 {
|
||
|
uint64_t attr;
|
||
|
union {
|
||
|
struct optee_msg_param_tmem_v2 memref;
|
||
|
struct optee_msg_param_rmem_v2 rmem;
|
||
|
struct optee_msg_param_value_v2 value;
|
||
|
} u;
|
||
|
};
|
||
|
|
||
|
struct optee_msg_arg_v2 {
|
||
|
uint32_t cmd;
|
||
|
uint32_t ta_func;
|
||
|
uint32_t session;
|
||
|
uint32_t cancel_id;
|
||
|
uint32_t pad;
|
||
|
uint32_t ret;
|
||
|
uint32_t ret_origin;
|
||
|
uint32_t num_params;
|
||
|
|
||
|
/* num_params tells the actual number of element in params */
|
||
|
struct optee_msg_param_v2 params[];
|
||
|
};
|
||
|
|
||
|
typedef struct optee_msg_arg_v2 t_teesmc32_arg;
|
||
|
typedef struct optee_msg_param_v2 t_teesmc32_param;
|
||
|
|
||
|
#define TEESMC32_GET_ARG_SIZE(num_params) \
|
||
|
(sizeof(struct optee_msg_arg_v2) + \
|
||
|
sizeof(struct optee_msg_param_v2) * (num_params))
|
||
|
|
||
|
#define TEESMC32_GET_PARAMS(x) \
|
||
|
(struct optee_msg_param_v2 *)(((struct optee_msg_arg_v2 *)(x)) + 1)
|
||
|
|
||
|
#define OPTEE_MSG_ATTR_TYPE_NONE_V2 0x0
|
||
|
#define OPTEE_MSG_ATTR_TYPE_VALUE_INPUT_V2 0x1
|
||
|
#define OPTEE_MSG_ATTR_TYPE_VALUE_OUTPUT_V2 0x2
|
||
|
#define OPTEE_MSG_ATTR_TYPE_VALUE_INOUT_V2 0x3
|
||
|
#define OPTEE_MSG_ATTR_TYPE_RMEM_INPUT_V2 0x5
|
||
|
#define OPTEE_MSG_ATTR_TYPE_RMEM_OUTPUT_V2 0x6
|
||
|
#define OPTEE_MSG_ATTR_TYPE_RMEM_INOUT_V2 0x7
|
||
|
#define OPTEE_MSG_ATTR_TYPE_TMEM_INPUT_V2 0x9
|
||
|
#define OPTEE_MSG_ATTR_TYPE_TMEM_OUTPUT_V2 0xa
|
||
|
#define OPTEE_MSG_ATTR_TYPE_TMEM_INOUT_V2 0xb
|
||
|
|
||
|
#define OPTEE_MSG_ATTR_META_V2 (1 << (8))
|
||
|
|
||
|
#define OPTEE_MSG_RPC_CMD_SHM_ALLOC_V2 6
|
||
|
#define OPTEE_MSG_RPC_CMD_SHM_FREE_V2 7
|
||
|
|
||
|
#define OPTEE_MSG_RPC_CMD_LOAD_TA_V2 0
|
||
|
|
||
|
#define OPTEE_MSG_RPC_CMD_RPMB_V2 1
|
||
|
|
||
|
#define OPTEE_MSG_RPC_CMD_FS_V2 2
|
||
|
|
||
|
#define OPTEE_SMC_32_V2 0
|
||
|
#define OPTEE_SMC_64_V2 0x40000000
|
||
|
#define OPTEE_SMC_FAST_CALL_V2 0x80000000
|
||
|
#define OPTEE_SMC_STD_CALL_V2 0
|
||
|
|
||
|
#define OPTEE_SMC_OWNER_MASK_V2 0x3F
|
||
|
#define OPTEE_SMC_OWNER_SHIFT_V2 24
|
||
|
|
||
|
#define OPTEE_SMC_FUNC_MASK_V2 0xFFFF
|
||
|
|
||
|
#define OPTEE_SMC_OWNER_TRUSTED_OS_V2 50
|
||
|
#define OPTEE_SMC_OWNER_TRUSTED_OS_API 63
|
||
|
|
||
|
#define OPTEE_SMC_FUNCID_GET_SHM_CONFIG_V2 7
|
||
|
#define OPTEE_SMC_GET_SHM_CONFIG_V2 \
|
||
|
OPTEE_SMC_FAST_CALL_VAL_V2(OPTEE_SMC_FUNCID_GET_SHM_CONFIG_V2)
|
||
|
|
||
|
#define OPTEE_SMC_FUNCID_CALLS_REVISION 0xFF03
|
||
|
#define OPTEE_SMC_CALLS_REVISION \
|
||
|
OPTEE_SMC_CALL_VAL_V2(OPTEE_SMC_32_V2, OPTEE_SMC_FAST_CALL_V2, \
|
||
|
OPTEE_SMC_OWNER_TRUSTED_OS_API, \
|
||
|
OPTEE_SMC_FUNCID_CALLS_REVISION)
|
||
|
|
||
|
#define OPTEE_SMC_FAST_CALL_VAL_V2(func_num) \
|
||
|
OPTEE_SMC_CALL_VAL_V2(OPTEE_SMC_32_V2, OPTEE_SMC_FAST_CALL_V2, \
|
||
|
OPTEE_SMC_OWNER_TRUSTED_OS_V2, (func_num))
|
||
|
|
||
|
#define OPTEE_SMC_CALL_VAL_V2(type, calling_convention, owner, func_num) \
|
||
|
((type) | (calling_convention) | \
|
||
|
(((owner) & OPTEE_SMC_OWNER_MASK_V2) << \
|
||
|
OPTEE_SMC_OWNER_SHIFT_V2) |\
|
||
|
((func_num) & OPTEE_SMC_FUNC_MASK_V2))
|
||
|
|
||
|
#endif /* TEESMC_V2_H */
|