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 * I2C bus access 152 */ 153 #define OPTEE_MSG_RPC_CMD_I2C_TRANSFER 21 154 155 /* 156 * Was OPTEE_MSG_RPC_CMD_SQL_FS, which isn't supported any longer 157 */ 158 #define OPTEE_MSG_RPC_CMD_SQL_FS_RESERVED 8 159 160 /* 161 * GPROF support management commands 162 */ 163 #define OPTEE_MSG_RPC_CMD_GPROF 9 164 165 /* 166 * Socket commands 167 */ 168 #define OPTEE_MSG_RPC_CMD_SOCKET 10 169 170 /* 171 * Define protocol for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET 172 */ 173 174 #define OPTEE_MRC_SOCKET_TIMEOUT_NONBLOCKING 0 175 #define OPTEE_MRC_SOCKET_TIMEOUT_BLOCKING 0xffffffff 176 177 /* 178 * Open socket 179 * 180 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_OPEN 181 * [in] param[0].u.value.b TA instance id 182 * [in] param[1].u.value.a server port number 183 * [in] param[1].u.value.b protocol, TEE_ISOCKET_PROTOCOLID_* 184 * [in] param[1].u.value.c ip version TEE_IP_VERSION_* from tee_ipsocket.h 185 * [in] param[2].u.tmem server address 186 * [out] param[3].u.value.a socket handle (32-bit) 187 */ 188 #define OPTEE_MRC_SOCKET_OPEN 0 189 190 /* 191 * Close socket 192 * 193 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE 194 * [in] param[0].u.value.b TA instance id 195 * [in] param[0].u.value.c socket handle 196 */ 197 #define OPTEE_MRC_SOCKET_CLOSE 1 198 199 /* 200 * Close all sockets 201 * 202 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE_ALL 203 * [in] param[0].u.value.b TA instance id 204 */ 205 #define OPTEE_MRC_SOCKET_CLOSE_ALL 2 206 207 /* 208 * Send data on socket 209 * 210 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_SEND 211 * [in] param[0].u.value.b TA instance id 212 * [in] param[0].u.value.c socket handle 213 * [in] param[1].u.tmem buffer to transmit 214 * [in] param[2].u.value.a timeout ms or OPTEE_MRC_SOCKET_TIMEOUT_* 215 * [out] param[2].u.value.b number of transmitted bytes 216 */ 217 #define OPTEE_MRC_SOCKET_SEND 3 218 219 /* 220 * Receive data on socket 221 * 222 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_RECV 223 * [in] param[0].u.value.b TA instance id 224 * [in] param[0].u.value.c socket handle 225 * [out] param[1].u.tmem buffer to receive 226 * [in] param[2].u.value.a timeout ms or OPTEE_MRC_SOCKET_TIMEOUT_* 227 */ 228 #define OPTEE_MRC_SOCKET_RECV 4 229 230 /* 231 * Perform IOCTL on socket 232 * 233 * [in] param[0].u.value.a OPTEE_MRC_SOCKET_IOCTL 234 * [in] param[0].u.value.b TA instance id 235 * [in] param[0].u.value.c socket handle 236 * [in/out] param[1].u.tmem buffer 237 * [in] param[2].u.value.a ioctl command 238 */ 239 #define OPTEE_MRC_SOCKET_IOCTL 5 240 241 /* 242 * End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET 243 */ 244 245 #endif /* __OPTEE_MSG_SUPPLICANT_H */ 246