11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */ 2b0104773SPascal Brand /* 3b0104773SPascal Brand * Copyright (c) 2014, STMicroelectronics International N.V. 4b0104773SPascal Brand */ 5*fbe66cf8SEtienne Carriere #ifndef __TEE_TEE_SVC_H 6*fbe66cf8SEtienne Carriere #define __TEE_TEE_SVC_H 7b0104773SPascal Brand 800b3b9a2SJens Wiklander #include <kernel/ts_manager.h> 9b0104773SPascal Brand #include <stdint.h> 10d13278b8SEtienne Carriere #include <types_ext.h> 11b0104773SPascal Brand #include <tee_api_types.h> 12b0104773SPascal Brand #include <utee_types.h> 13e86f1266SJens Wiklander 14b0104773SPascal Brand struct tee_ta_session; 15b0104773SPascal Brand 1641d71430SPascal Brand /* TA Properties */ 1741d71430SPascal Brand struct tee_props { 1841d71430SPascal Brand const char *name; 1941d71430SPascal Brand 2041d71430SPascal Brand /* prop_type is of type enum user_ta_prop_type*/ 2141d71430SPascal Brand const uint32_t prop_type; 2241d71430SPascal Brand 2341d71430SPascal Brand /* either get_prop_func or both data and len */ 2400b3b9a2SJens Wiklander TEE_Result (*get_prop_func)(struct ts_session *sess, 2541d71430SPascal Brand void *buf, size_t *blen); 2641d71430SPascal Brand const void *data; 2741d71430SPascal Brand const size_t len; 2841d71430SPascal Brand }; 2941d71430SPascal Brand 3041d71430SPascal Brand struct tee_vendor_props { 3141d71430SPascal Brand const struct tee_props *props; 3241d71430SPascal Brand size_t len; 3341d71430SPascal Brand }; 34e86f1266SJens Wiklander void syscall_sys_return(unsigned long ret); 35b0104773SPascal Brand 36453a5030SJerome Forissier void syscall_log(const void *buf, size_t len); 37b0104773SPascal Brand 38e86f1266SJens Wiklander void syscall_panic(unsigned long code); 39b7fc217fSPascal Brand 40453a5030SJerome Forissier TEE_Result syscall_not_supported(void); 41197d17e7SSY Chiu 4264a5011eSPascal Brand /* prop_set defined by enum utee_property */ 4364a5011eSPascal Brand TEE_Result syscall_get_property(unsigned long prop_set, 4464a5011eSPascal Brand unsigned long index, 4564a5011eSPascal Brand void *name, uint32_t *name_len, 4664a5011eSPascal Brand void *buf, uint32_t *blen, 4764a5011eSPascal Brand uint32_t *prop_type); 4864a5011eSPascal Brand TEE_Result syscall_get_property_name_to_index(unsigned long prop_set, 4964a5011eSPascal Brand void *name, 5064a5011eSPascal Brand unsigned long name_len, 5164a5011eSPascal Brand uint32_t *index); 52b0104773SPascal Brand 53453a5030SJerome Forissier TEE_Result syscall_open_ta_session(const TEE_UUID *dest, 54e86f1266SJens Wiklander unsigned long cancel_req_to, struct utee_params *params, 55e86f1266SJens Wiklander uint32_t *sess, uint32_t *ret_orig); 56b0104773SPascal Brand 57e86f1266SJens Wiklander TEE_Result syscall_close_ta_session(unsigned long sess); 58b0104773SPascal Brand 59e86f1266SJens Wiklander TEE_Result syscall_invoke_ta_command(unsigned long sess, 60e86f1266SJens Wiklander unsigned long cancel_req_to, unsigned long cmd_id, 61e86f1266SJens Wiklander struct utee_params *params, uint32_t *ret_orig); 62b0104773SPascal Brand 63e86f1266SJens Wiklander TEE_Result syscall_check_access_rights(unsigned long flags, const void *buf, 64b0104773SPascal Brand size_t len); 65b0104773SPascal Brand 66e86f1266SJens Wiklander TEE_Result syscall_get_cancellation_flag(uint32_t *cancel); 67e86f1266SJens Wiklander 68e86f1266SJens Wiklander TEE_Result syscall_unmask_cancellation(uint32_t *old_mask); 69e86f1266SJens Wiklander 70e86f1266SJens Wiklander TEE_Result syscall_mask_cancellation(uint32_t *old_mask); 71e86f1266SJens Wiklander 72e86f1266SJens Wiklander TEE_Result syscall_wait(unsigned long timeout); 73e86f1266SJens Wiklander 74e86f1266SJens Wiklander TEE_Result syscall_get_time(unsigned long cat, TEE_Time *time); 75453a5030SJerome Forissier TEE_Result syscall_set_ta_time(const TEE_Time *time); 76b0104773SPascal Brand 77*fbe66cf8SEtienne Carriere #endif /* __TEE_TEE_SVC_H */ 78