1 /* SPDX-License-Identifier: BSD-2-Clause */
3 * Copyright (c) 2016-2018, Linaro Limited
6 #ifndef __OPTEE_MSG_SUPPLICANT_H
7 #define __OPTEE_MSG_SUPPLICANT_H
10 * This file is based on
11 * https://github.com/OP-TEE/optee_os/blob/master/core/include/optee_msg_supplicant.h
12 * and may need to be updated when introducing new features.
16 * Load a TA into memory
18 #define OPTEE_MSG_RPC_CMD_LOAD_TA 0
21 * Replay Protected Memory Block access
23 #define OPTEE_MSG_RPC_CMD_RPMB 1
28 #define OPTEE_MSG_RPC_CMD_FS 2
31 * Define protocol for messages with .cmd == OPTEE_MSG_RPC_CMD_FS and first
32 * parameter has the attribute OPTEE_MSG_ATTR_TYPE_VALUE_INPUT.
38 * [in] param[0].u.value.a OPTEE_MRF_OPEN
39 * [in] param[1].u.tmem a string holding the file name
40 * [out] param[2].u.value.a file descriptor of open file
42 #define OPTEE_MRF_OPEN 0
47 * [in] param[0].u.value.a OPTEE_MRF_CREATE
48 * [in] param[1].u.tmem a string holding the file name
49 * [out] param[2].u.value.a file descriptor of open file
51 #define OPTEE_MRF_CREATE 1
56 * [in] param[0].u.value.a OPTEE_MRF_CLOSE
57 * [in] param[0].u.value.b file descriptor of open file.
59 #define OPTEE_MRF_CLOSE 2
64 * [in] param[0].u.value.a OPTEE_MRF_READ
65 * [in] param[0].u.value.b file descriptor of open file
66 * [in] param[0].u.value.c offset into file
67 * [out] param[1].u.tmem buffer to hold returned data
69 #define OPTEE_MRF_READ 3
74 * [in] param[0].u.value.a OPTEE_MRF_WRITE
75 * [in] param[0].u.value.b file descriptor of open file
76 * [in] param[0].u.value.c offset into file
77 * [in] param[1].u.tmem buffer holding data to be written
79 #define OPTEE_MRF_WRITE 4
84 * [in] param[0].u.value.a OPTEE_MRF_TRUNCATE
85 * [in] param[0].u.value.b file descriptor of open file
86 * [in] param[0].u.value.c length of file.
88 #define OPTEE_MRF_TRUNCATE 5
93 * [in] param[0].u.value.a OPTEE_MRF_REMOVE
94 * [in] param[1].u.tmem a string holding the file name
96 #define OPTEE_MRF_REMOVE 6
101 * [in] param[0].u.value.a OPTEE_MRF_RENAME
102 * [in] param[0].u.value.b true if existing target should be removed
103 * [in] param[1].u.tmem a string holding the old file name
104 * [in] param[2].u.tmem a string holding the new file name
106 #define OPTEE_MRF_RENAME 7
109 * Opens a directory for file listing
111 * [in] param[0].u.value.a OPTEE_MRF_OPENDIR
112 * [in] param[1].u.tmem a string holding the name of the directory
113 * [out] param[2].u.value.a handle to open directory
115 #define OPTEE_MRF_OPENDIR 8
118 * Closes a directory handle
120 * [in] param[0].u.value.a OPTEE_MRF_CLOSEDIR
121 * [in] param[0].u.value.b handle to open directory
123 #define OPTEE_MRF_CLOSEDIR 9
126 * Read next file name of directory
129 * [in] param[0].u.value.a OPTEE_MRF_READDIR
130 * [in] param[0].u.value.b handle to open directory
131 * [out] param[1].u.tmem a string holding the file name
133 #define OPTEE_MRF_READDIR 10
136 * End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_FS
140 * Command Ids 3, 4 and 5 of OPTEE_MSG_RPC_CMD_xxx macros are reserved for use
141 * by the kernel driver.
145 * Shared memory allocation
147 #define OPTEE_MSG_RPC_CMD_SHM_ALLOC 6
148 #define OPTEE_MSG_RPC_CMD_SHM_FREE 7
151 * Was OPTEE_MSG_RPC_CMD_SQL_FS, which isn't supported any longer
153 #define OPTEE_MSG_RPC_CMD_SQL_FS_RESERVED 8
156 * GPROF support management commands
158 #define OPTEE_MSG_RPC_CMD_GPROF 9
163 #define OPTEE_MSG_RPC_CMD_SOCKET 10
166 * Define protocol for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET
169 #define OPTEE_MRC_SOCKET_TIMEOUT_NONBLOCKING 0
170 #define OPTEE_MRC_SOCKET_TIMEOUT_BLOCKING 0xffffffff
175 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_OPEN
176 * [in] param[0].u.value.b TA instance id
177 * [in] param[1].u.value.a server port number
178 * [in] param[1].u.value.b protocol, TEE_ISOCKET_PROTOCOLID_*
179 * [in] param[1].u.value.c ip version TEE_IP_VERSION_* from tee_ipsocket.h
180 * [in] param[2].u.tmem server address
181 * [out] param[3].u.value.a socket handle (32-bit)
183 #define OPTEE_MRC_SOCKET_OPEN 0
188 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE
189 * [in] param[0].u.value.b TA instance id
190 * [in] param[0].u.value.c socket handle
192 #define OPTEE_MRC_SOCKET_CLOSE 1
197 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE_ALL
198 * [in] param[0].u.value.b TA instance id
200 #define OPTEE_MRC_SOCKET_CLOSE_ALL 2
203 * Send data on socket
205 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_SEND
206 * [in] param[0].u.value.b TA instance id
207 * [in] param[0].u.value.c socket handle
208 * [in] param[1].u.tmem buffer to transmit
209 * [in] param[2].u.value.a timeout ms or OPTEE_MRC_SOCKET_TIMEOUT_*
210 * [out] param[2].u.value.b number of transmitted bytes
212 #define OPTEE_MRC_SOCKET_SEND 3
215 * Receive data on socket
217 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_RECV
218 * [in] param[0].u.value.b TA instance id
219 * [in] param[0].u.value.c socket handle
220 * [out] param[1].u.tmem buffer to receive
221 * [in] param[2].u.value.a timeout ms or OPTEE_MRC_SOCKET_TIMEOUT_*
223 #define OPTEE_MRC_SOCKET_RECV 4
226 * Perform IOCTL on socket
228 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_IOCTL
229 * [in] param[0].u.value.b TA instance id
230 * [in] param[0].u.value.c socket handle
231 * [in/out] param[1].u.tmem buffer
232 * [in] param[2].u.value.a ioctl command
234 #define OPTEE_MRC_SOCKET_IOCTL 5
237 * End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET
240 #endif /* __OPTEE_MSG_SUPPLICANT_H */