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