1 /* SPDX-License-Identifier: BSD-2-Clause */ 2 /* 3 * Copyright (c) 2016-2018, Linaro Limited 4 */ 5 6 #ifndef __OPTEE_MSG_SUPPLICANT_H 7 #define __OPTEE_MSG_SUPPLICANT_H 8 9 /* 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. 13 */ 14 15 /* 16 * Load a TA into memory 17 */ 18 #define OPTEE_MSG_RPC_CMD_LOAD_TA 0 19 20 /* 21 * Replay Protected Memory Block access 22 */ 23 #define OPTEE_MSG_RPC_CMD_RPMB 1 24 25 /* 26 * File system access 27 */ 28 #define OPTEE_MSG_RPC_CMD_FS 2 29 30 /* 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. 33 */ 34 35 /* 36 * Open a file 37 * 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 41 */ 42 #define OPTEE_MRF_OPEN 0 43 44 /* 45 * Create a file 46 * 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 50 */ 51 #define OPTEE_MRF_CREATE 1 52 53 /* 54 * Close a file 55 * 56 * [in] param[0].u.value.a OPTEE_MRF_CLOSE 57 * [in] param[0].u.value.b file descriptor of open file. 58 */ 59 #define OPTEE_MRF_CLOSE 2 60 61 /* 62 * Read from a file 63 * 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 68 */ 69 #define OPTEE_MRF_READ 3 70 71 /* 72 * Write to a file 73 * 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 78 */ 79 #define OPTEE_MRF_WRITE 4 80 81 /* 82 * Truncate a file 83 * 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. 87 */ 88 #define OPTEE_MRF_TRUNCATE 5 89 90 /* 91 * Remove a file 92 * 93 * [in] param[0].u.value.a OPTEE_MRF_REMOVE 94 * [in] param[1].u.tmem a string holding the file name 95 */ 96 #define OPTEE_MRF_REMOVE 6 97 98 /* 99 * Rename a file 100 * 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 105 */ 106 #define OPTEE_MRF_RENAME 7 107 108 /* 109 * Opens a directory for file listing 110 * 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 114 */ 115 #define OPTEE_MRF_OPENDIR 8 116 117 /* 118 * Closes a directory handle 119 * 120 * [in] param[0].u.value.a OPTEE_MRF_CLOSEDIR 121 * [in] param[0].u.value.b handle to open directory 122 */ 123 #define OPTEE_MRF_CLOSEDIR 9 124 125 /* 126 * Read next file name of directory 127 * 128 * 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 132 */ 133 #define OPTEE_MRF_READDIR 10 134 135 /* 136 * End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_FS 137 */ 138 139 /* 140 * Command Ids 3, 4 and 5 of OPTEE_MSG_RPC_CMD_xxx macros are reserved for use 141 * by the kernel driver. 142 */ 143 144 /* 145 * Shared memory allocation 146 */ 147 #define OPTEE_MSG_RPC_CMD_SHM_ALLOC 6 148 #define OPTEE_MSG_RPC_CMD_SHM_FREE 7 149 150 /* 151 * Was OPTEE_MSG_RPC_CMD_SQL_FS, which isn't supported any longer 152 */ 153 #define OPTEE_MSG_RPC_CMD_SQL_FS_RESERVED 8 154 155 /* 156 * GPROF support management commands 157 */ 158 #define OPTEE_MSG_RPC_CMD_GPROF 9 159 160 /* 161 * Socket commands 162 */ 163 #define OPTEE_MSG_RPC_CMD_SOCKET 10 164 165 /* 166 * Define protocol for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET 167 */ 168 169 #define OPTEE_MRC_SOCKET_TIMEOUT_NONBLOCKING 0 170 #define OPTEE_MRC_SOCKET_TIMEOUT_BLOCKING 0xffffffff 171 172 /* 173 * Open socket 174 * 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) 182 */ 183 #define OPTEE_MRC_SOCKET_OPEN 0 184 185 /* 186 * Close socket 187 * 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 191 */ 192 #define OPTEE_MRC_SOCKET_CLOSE 1 193 194 /* 195 * Close all sockets 196 * 197 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE_ALL 198 * [in] param[0].u.value.b TA instance id 199 */ 200 #define OPTEE_MRC_SOCKET_CLOSE_ALL 2 201 202 /* 203 * Send data on socket 204 * 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 211 */ 212 #define OPTEE_MRC_SOCKET_SEND 3 213 214 /* 215 * Receive data on socket 216 * 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_* 222 */ 223 #define OPTEE_MRC_SOCKET_RECV 4 224 225 /* 226 * Perform IOCTL on socket 227 * 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 233 */ 234 #define OPTEE_MRC_SOCKET_IOCTL 5 235 236 /* 237 * End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET 238 */ 239 240 #endif /* __OPTEE_MSG_SUPPLICANT_H */ 241