xref: /optee_os/core/include/tee/tee_svc.h (revision fbe66cf83199aa6a2aca9f93384cf1ad9185a5f6)
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