16009538cSJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */ 26009538cSJens Wiklander /* 3bc5df82aSJens Wiklander * Copyright (c) 2016-2021, Linaro Limited 46009538cSJens Wiklander */ 56009538cSJens Wiklander 66009538cSJens Wiklander #ifndef __OPTEE_RPC_CMD_H 76009538cSJens Wiklander #define __OPTEE_RPC_CMD_H 86009538cSJens Wiklander 96009538cSJens Wiklander /* 106009538cSJens Wiklander * All RPC is done with a struct optee_msg_arg as bearer of information, 116009538cSJens Wiklander * struct optee_msg_arg::arg holds values defined by OPTEE_RPC_CMD_* below. 126009538cSJens Wiklander * Only the commands handled by the kernel driver are defined here. 136009538cSJens Wiklander * 146009538cSJens Wiklander * RPC communication with tee-supplicant is reversed compared to normal 156009538cSJens Wiklander * client communication described above. The supplicant receives requests 166009538cSJens Wiklander * and sends responses. 176009538cSJens Wiklander */ 186009538cSJens Wiklander 196009538cSJens Wiklander /* 206009538cSJens Wiklander * Load a TA into memory 216009538cSJens Wiklander * 226009538cSJens Wiklander * Since the size of the TA isn't known in advance the size of the TA is 236009538cSJens Wiklander * can be queried with a NULL buffer. 246009538cSJens Wiklander * 256009538cSJens Wiklander * [in] value[0].a-b UUID 266009538cSJens Wiklander * [out] memref[1] Buffer with TA 276009538cSJens Wiklander */ 2857f197ecSJens Wiklander #define OPTEE_RPC_CMD_LOAD_TA U(0) 296009538cSJens Wiklander 306009538cSJens Wiklander /* 316009538cSJens Wiklander * Replay Protected Memory Block access 326009538cSJens Wiklander * 336009538cSJens Wiklander * [in] memref[0] Frames to device 346009538cSJens Wiklander * [out] memref[1] Frames from device 356009538cSJens Wiklander */ 3657f197ecSJens Wiklander #define OPTEE_RPC_CMD_RPMB U(1) 376009538cSJens Wiklander 386009538cSJens Wiklander /* 396009538cSJens Wiklander * File system access, see definition of protocol below 406009538cSJens Wiklander */ 4157f197ecSJens Wiklander #define OPTEE_RPC_CMD_FS U(2) 426009538cSJens Wiklander 436009538cSJens Wiklander /* 446009538cSJens Wiklander * Get time 456009538cSJens Wiklander * 466009538cSJens Wiklander * Returns number of seconds and nano seconds since the Epoch, 476009538cSJens Wiklander * 1970-01-01 00:00:00 +0000 (UTC). 486009538cSJens Wiklander * 496009538cSJens Wiklander * [out] value[0].a Number of seconds 506009538cSJens Wiklander * [out] value[0].b Number of nano seconds. 516009538cSJens Wiklander */ 5257f197ecSJens Wiklander #define OPTEE_RPC_CMD_GET_TIME U(3) 536009538cSJens Wiklander 546009538cSJens Wiklander /* 552828809eSJens Wiklander * Notification from/to secure world. 566009538cSJens Wiklander * 572828809eSJens Wiklander * If secure world needs to wait for something, for instance a mutex, it 582828809eSJens Wiklander * does a notification wait request instead of spinning in secure world. 592828809eSJens Wiklander * Conversely a synchronous notification can be sent when a secure 602828809eSJens Wiklander * world mutex with a thread waiting thread is unlocked. 616009538cSJens Wiklander * 62c2d44948SJens Wiklander * This interface can also be used to wait for a asynchronous notification 63c2d44948SJens Wiklander * which instead is sent via a non-secure interrupt. 64c2d44948SJens Wiklander * 652828809eSJens Wiklander * Waiting on notification 662828809eSJens Wiklander * [in] value[0].a OPTEE_RPC_NOTIFICATION_WAIT 672828809eSJens Wiklander * [in] value[0].b notification value 68450f8adaSGavin Liu * [in] value[0].c timeout in millisecond or 0 if no timeout 696009538cSJens Wiklander * 702828809eSJens Wiklander * Sending a synchronous notification 712828809eSJens Wiklander * [in] value[0].a OPTEE_RPC_NOTIFICATION_SEND 722828809eSJens Wiklander * [in] value[0].b notification value 73450f8adaSGavin Liu * [in] value[0].c shall be 0, reserved for future evolution 746009538cSJens Wiklander */ 752828809eSJens Wiklander #define OPTEE_RPC_CMD_NOTIFICATION U(4) 762828809eSJens Wiklander #define OPTEE_RPC_NOTIFICATION_WAIT U(0) 772828809eSJens Wiklander #define OPTEE_RPC_NOTIFICATION_SEND U(1) 786009538cSJens Wiklander 796009538cSJens Wiklander /* 806009538cSJens Wiklander * Suspend execution 816009538cSJens Wiklander * 826009538cSJens Wiklander * [in] value[0].a Number of milliseconds to suspend 836009538cSJens Wiklander */ 8457f197ecSJens Wiklander #define OPTEE_RPC_CMD_SUSPEND U(5) 856009538cSJens Wiklander 866009538cSJens Wiklander /* 876009538cSJens Wiklander * Allocate a piece of shared memory 886009538cSJens Wiklander * 896009538cSJens Wiklander * [in] value[0].a Type of memory one of 906009538cSJens Wiklander * OPTEE_RPC_SHM_TYPE_* below 916009538cSJens Wiklander * [in] value[0].b Requested size 926009538cSJens Wiklander * [in] value[0].c Required alignment 936009538cSJens Wiklander * [out] memref[0] Buffer 946009538cSJens Wiklander */ 9557f197ecSJens Wiklander #define OPTEE_RPC_CMD_SHM_ALLOC U(6) 966009538cSJens Wiklander /* Memory that can be shared with a non-secure user space application */ 9757f197ecSJens Wiklander #define OPTEE_RPC_SHM_TYPE_APPL U(0) 986009538cSJens Wiklander /* Memory only shared with non-secure kernel */ 9957f197ecSJens Wiklander #define OPTEE_RPC_SHM_TYPE_KERNEL U(1) 1006009538cSJens Wiklander /* 1016009538cSJens Wiklander * Memory shared with non-secure kernel and exported to a non-secure user 1026009538cSJens Wiklander * space application 1036009538cSJens Wiklander */ 10457f197ecSJens Wiklander #define OPTEE_RPC_SHM_TYPE_GLOBAL U(2) 1056009538cSJens Wiklander 1066009538cSJens Wiklander /* 1076009538cSJens Wiklander * Free shared memory previously allocated with OPTEE_RPC_CMD_SHM_ALLOC 1086009538cSJens Wiklander * 1096009538cSJens Wiklander * [in] value[0].a Type of memory one of 1106009538cSJens Wiklander * OPTEE_RPC_SHM_TYPE_* above 1116009538cSJens Wiklander * [in] value[0].b Value of shared memory reference or cookie 1126009538cSJens Wiklander */ 11357f197ecSJens Wiklander #define OPTEE_RPC_CMD_SHM_FREE U(7) 1146009538cSJens Wiklander 1156009538cSJens Wiklander /* Was OPTEE_RPC_CMD_SQL_FS, which isn't supported any longer */ 11657f197ecSJens Wiklander #define OPTEE_RPC_CMD_SQL_FS_RESERVED U(8) 1176009538cSJens Wiklander 1186009538cSJens Wiklander /* 1196009538cSJens Wiklander * Send TA profiling information to normal world 1206009538cSJens Wiklander * 1216009538cSJens Wiklander * [in/out] value[0].a File identifier. Must be set to 0 on 1226009538cSJens Wiklander * first call. A value >= 1 will be 1236009538cSJens Wiklander * returned on success. Re-use this value 1246009538cSJens Wiklander * to append data to the same file. 1256009538cSJens Wiklander * [in] memref[1] TA UUID 1266009538cSJens Wiklander * [in] memref[2] Profile data 1276009538cSJens Wiklander */ 12857f197ecSJens Wiklander #define OPTEE_RPC_CMD_GPROF U(9) 1296009538cSJens Wiklander 1306009538cSJens Wiklander /* 1316009538cSJens Wiklander * Socket command, see definition of protocol below 1326009538cSJens Wiklander */ 13357f197ecSJens Wiklander #define OPTEE_RPC_CMD_SOCKET U(10) 1346009538cSJens Wiklander 1356009538cSJens Wiklander /* 136d35a00c7SSumit Garg * Send TA function graph data to normal world 137d35a00c7SSumit Garg * 138d35a00c7SSumit Garg * [in/out] value[0].a File identifier. Must be set to 0 on 139d35a00c7SSumit Garg * first call. A value >= 1 will be 140d35a00c7SSumit Garg * returned on success. Re-use this value 141d35a00c7SSumit Garg * to append data to the same file. 142d35a00c7SSumit Garg * [in] memref[1] TA UUID 143d35a00c7SSumit Garg * [in] memref[2] function graph data 144d35a00c7SSumit Garg */ 14557f197ecSJens Wiklander #define OPTEE_RPC_CMD_FTRACE U(11) 146d35a00c7SSumit Garg 147d35a00c7SSumit Garg /* 148f97ae380SAleksandr Anisimov * tee-supplicant plugin command, see definition of protocol below 149f97ae380SAleksandr Anisimov */ 15057f197ecSJens Wiklander #define OPTEE_RPC_CMD_SUPP_PLUGIN U(12) 151f97ae380SAleksandr Anisimov 152f97ae380SAleksandr Anisimov /* 1536009538cSJens Wiklander * Register timestamp buffer in the linux kernel optee driver 1546009538cSJens Wiklander * 1556009538cSJens Wiklander * [in] value[0].a Subcommand (register buffer, unregister buffer) 1566009538cSJens Wiklander * [in] value[0].b Physical address of timestamp buffer 1576009538cSJens Wiklander * [in] value[0].c Size of buffer 1586009538cSJens Wiklander */ 15957f197ecSJens Wiklander #define OPTEE_RPC_CMD_BENCH_REG U(20) 1606009538cSJens Wiklander 1616009538cSJens Wiklander /* 16230c53a72SJorge Ramirez-Ortiz * Issue master requests (read and write operations) to an I2C chip. 16330c53a72SJorge Ramirez-Ortiz * 164bc5df82aSJens Wiklander * [in] value[0].a Transfer mode (OPTEE_RPC_I2C_TRANSFER_*) 16530c53a72SJorge Ramirez-Ortiz * [in] value[0].b The I2C bus (a.k.a adapter). 16630c53a72SJorge Ramirez-Ortiz * 16 bit field. 16730c53a72SJorge Ramirez-Ortiz * [in] value[0].c The I2C chip (a.k.a address). 16830c53a72SJorge Ramirez-Ortiz * 16 bit field (either 7 or 10 bit effective). 16930c53a72SJorge Ramirez-Ortiz * [in] value[1].a The I2C master control flags (ie, 10 bit address). 17030c53a72SJorge Ramirez-Ortiz * 16 bit field. 17130c53a72SJorge Ramirez-Ortiz * [in/out] memref[2] Buffer used for data transfers. 17230c53a72SJorge Ramirez-Ortiz * [out] value[3].a Number of bytes transferred by the REE. 17330c53a72SJorge Ramirez-Ortiz */ 17457f197ecSJens Wiklander #define OPTEE_RPC_CMD_I2C_TRANSFER U(21) 17530c53a72SJorge Ramirez-Ortiz 17630c53a72SJorge Ramirez-Ortiz /* I2C master transfer modes */ 17757f197ecSJens Wiklander #define OPTEE_RPC_I2C_TRANSFER_RD U(0) 17857f197ecSJens Wiklander #define OPTEE_RPC_I2C_TRANSFER_WR U(1) 17930c53a72SJorge Ramirez-Ortiz 18030c53a72SJorge Ramirez-Ortiz /* I2C master control flags */ 181bc5df82aSJens Wiklander #define OPTEE_RPC_I2C_FLAGS_TEN_BIT BIT(0) 18230c53a72SJorge Ramirez-Ortiz 18330c53a72SJorge Ramirez-Ortiz /* 184*8dfdf392SJens Wiklander * Reset RPMB probing 185*8dfdf392SJens Wiklander * 186*8dfdf392SJens Wiklander * Releases a possibly already used RPMB device and starts over searching 187*8dfdf392SJens Wiklander * for RPMB devices. Returns the kind of shared memory to use in subsequent 188*8dfdf392SJens Wiklander * OPTEE_RPC_CMD_RPMB_PROBE_NEXT and OPTEE_RPC_CMD_RPMB_FRAMES calls. 189*8dfdf392SJens Wiklander * 190*8dfdf392SJens Wiklander * [out] value[0].a OPTEE_RPC_SHM_TYPE_*, the parameter for 191*8dfdf392SJens Wiklander * OPTEE_RPC_CMD_SHM_ALLOC 192*8dfdf392SJens Wiklander */ 193*8dfdf392SJens Wiklander #define OPTEE_RPC_CMD_RPMB_PROBE_RESET U(22) 194*8dfdf392SJens Wiklander 195*8dfdf392SJens Wiklander /* 196*8dfdf392SJens Wiklander * Probe next RPMB device 197*8dfdf392SJens Wiklander * 198*8dfdf392SJens Wiklander * value[0].a indicates kind of RPMB device found, currently is only 199*8dfdf392SJens Wiklander * OPTEE_RPC_RPMB_EMMC supported. If another kind of RPMB device is found 200*8dfdf392SJens Wiklander * it will have a new unique value in value[0].a and the other 201*8dfdf392SJens Wiklander * out-parameters will be defined specifically for that device. 202*8dfdf392SJens Wiklander * 203*8dfdf392SJens Wiklander * If an eMMC/RPMB partition is found: 204*8dfdf392SJens Wiklander * [out] value[0].a OPTEE_RPC_RPMB_EMMC 205*8dfdf392SJens Wiklander * [out] value[0].b EXT CSD-slice 168 "RPMB Size" 206*8dfdf392SJens Wiklander * [out] value[0].c EXT CSD-slice 222 "Reliable Write Sector Count" 207*8dfdf392SJens Wiklander * [out] memref[1] Buffer with the raw CID 208*8dfdf392SJens Wiklander */ 209*8dfdf392SJens Wiklander #define OPTEE_RPC_CMD_RPMB_PROBE_NEXT U(23) 210*8dfdf392SJens Wiklander 211*8dfdf392SJens Wiklander #define OPTEE_RPC_RPMB_EMMC U(0) 212*8dfdf392SJens Wiklander 213*8dfdf392SJens Wiklander /* 214*8dfdf392SJens Wiklander * Replay Protected Memory Block access 215*8dfdf392SJens Wiklander * 216*8dfdf392SJens Wiklander * [in] memref[0] Frames to device 217*8dfdf392SJens Wiklander * [out] memref[1] Frames from device 218*8dfdf392SJens Wiklander */ 219*8dfdf392SJens Wiklander #define OPTEE_RPC_CMD_RPMB_FRAMES U(24) 220*8dfdf392SJens Wiklander 221*8dfdf392SJens Wiklander /* 2226009538cSJens Wiklander * Definition of protocol for command OPTEE_RPC_CMD_FS 2236009538cSJens Wiklander */ 2246009538cSJens Wiklander 2256009538cSJens Wiklander /* 2266009538cSJens Wiklander * Open a file 2276009538cSJens Wiklander * 2286009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_OPEN 2296009538cSJens Wiklander * [in] memref[1] A string holding the file name 2306009538cSJens Wiklander * [out] value[2].a File descriptor of open file 2316009538cSJens Wiklander */ 23257f197ecSJens Wiklander #define OPTEE_RPC_FS_OPEN U(0) 2336009538cSJens Wiklander 2346009538cSJens Wiklander /* 2356009538cSJens Wiklander * Create a file 2366009538cSJens Wiklander * 2376009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_CREATE 2386009538cSJens Wiklander * [in] memref[1] A string holding the file name 2396009538cSJens Wiklander * [out] value[2].a File descriptor of open file 2406009538cSJens Wiklander */ 24157f197ecSJens Wiklander #define OPTEE_RPC_FS_CREATE U(1) 2426009538cSJens Wiklander 2436009538cSJens Wiklander /* 2446009538cSJens Wiklander * Close a file 2456009538cSJens Wiklander * 2466009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_CLOSE 2476009538cSJens Wiklander * [in] value[0].b File descriptor of open file. 2486009538cSJens Wiklander */ 24957f197ecSJens Wiklander #define OPTEE_RPC_FS_CLOSE U(2) 2506009538cSJens Wiklander 2516009538cSJens Wiklander /* 2526009538cSJens Wiklander * Read from a file 2536009538cSJens Wiklander * 2546009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_READ 2556009538cSJens Wiklander * [in] value[0].b File descriptor of open file 2566009538cSJens Wiklander * [in] value[0].c Offset into file 2576009538cSJens Wiklander * [out] memref[1] Buffer to hold returned data 2586009538cSJens Wiklander */ 25957f197ecSJens Wiklander #define OPTEE_RPC_FS_READ U(3) 2606009538cSJens Wiklander 2616009538cSJens Wiklander /* 2626009538cSJens Wiklander * Write to a file 2636009538cSJens Wiklander * 2646009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_WRITE 2656009538cSJens Wiklander * [in] value[0].b File descriptor of open file 2666009538cSJens Wiklander * [in] value[0].c Offset into file 2676009538cSJens Wiklander * [in] memref[1] Buffer holding data to be written 2686009538cSJens Wiklander */ 26957f197ecSJens Wiklander #define OPTEE_RPC_FS_WRITE U(4) 2706009538cSJens Wiklander 2716009538cSJens Wiklander /* 2726009538cSJens Wiklander * Truncate a file 2736009538cSJens Wiklander * 2746009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_TRUNCATE 2756009538cSJens Wiklander * [in] value[0].b File descriptor of open file 2766009538cSJens Wiklander * [in] value[0].c Length of file. 2776009538cSJens Wiklander */ 27857f197ecSJens Wiklander #define OPTEE_RPC_FS_TRUNCATE U(5) 2796009538cSJens Wiklander 2806009538cSJens Wiklander /* 2816009538cSJens Wiklander * Remove a file 2826009538cSJens Wiklander * 2836009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_REMOVE 2846009538cSJens Wiklander * [in] memref[1] A string holding the file name 2856009538cSJens Wiklander */ 28657f197ecSJens Wiklander #define OPTEE_RPC_FS_REMOVE U(6) 2876009538cSJens Wiklander 2886009538cSJens Wiklander /* 2896009538cSJens Wiklander * Rename a file 2906009538cSJens Wiklander * 2916009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_RENAME 2926009538cSJens Wiklander * [in] value[0].b True if existing target should be removed 2936009538cSJens Wiklander * [in] memref[1] A string holding the old file name 2946009538cSJens Wiklander * [in] memref[2] A string holding the new file name 2956009538cSJens Wiklander */ 29657f197ecSJens Wiklander #define OPTEE_RPC_FS_RENAME U(7) 2976009538cSJens Wiklander 2986009538cSJens Wiklander /* 2996009538cSJens Wiklander * Opens a directory for file listing 3006009538cSJens Wiklander * 3016009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_OPENDIR 3026009538cSJens Wiklander * [in] memref[1] A string holding the name of the directory 3036009538cSJens Wiklander * [out] value[2].a Handle to open directory 3046009538cSJens Wiklander */ 30557f197ecSJens Wiklander #define OPTEE_RPC_FS_OPENDIR U(8) 3066009538cSJens Wiklander 3076009538cSJens Wiklander /* 3086009538cSJens Wiklander * Closes a directory handle 3096009538cSJens Wiklander * 3106009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_CLOSEDIR 3116009538cSJens Wiklander * [in] value[0].b Handle to open directory 3126009538cSJens Wiklander */ 31357f197ecSJens Wiklander #define OPTEE_RPC_FS_CLOSEDIR U(9) 3146009538cSJens Wiklander 3156009538cSJens Wiklander /* 3166009538cSJens Wiklander * Read next file name of directory 3176009538cSJens Wiklander * 3186009538cSJens Wiklander * 3196009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_FS_READDIR 3206009538cSJens Wiklander * [in] value[0].b Handle to open directory 3216009538cSJens Wiklander * [out] memref[1] A string holding the file name 3226009538cSJens Wiklander */ 32357f197ecSJens Wiklander #define OPTEE_RPC_FS_READDIR U(10) 3246009538cSJens Wiklander 3256009538cSJens Wiklander /* End of definition of protocol for command OPTEE_RPC_CMD_FS */ 3266009538cSJens Wiklander 3276009538cSJens Wiklander /* 3286009538cSJens Wiklander * Definition of protocol for command OPTEE_RPC_CMD_SOCKET 3296009538cSJens Wiklander */ 3306009538cSJens Wiklander 33157f197ecSJens Wiklander #define OPTEE_RPC_SOCKET_TIMEOUT_NONBLOCKING U(0) 33257f197ecSJens Wiklander #define OPTEE_RPC_SOCKET_TIMEOUT_BLOCKING U(0xffffffff) 3336009538cSJens Wiklander 3346009538cSJens Wiklander /* 3356009538cSJens Wiklander * Open socket 3366009538cSJens Wiklander * 3376009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_SOCKET_OPEN 3386009538cSJens Wiklander * [in] value[0].b TA instance id 3396009538cSJens Wiklander * [in] value[1].a Server port number 3406009538cSJens Wiklander * [in] value[1].b Protocol, TEE_ISOCKET_PROTOCOLID_* 3416009538cSJens Wiklander * [in] value[1].c Ip version TEE_IP_VERSION_* from tee_ipsocket.h 3426009538cSJens Wiklander * [in] memref[2] Server address 3436009538cSJens Wiklander * [out] value[3].a Socket handle (32-bit) 3446009538cSJens Wiklander */ 34557f197ecSJens Wiklander #define OPTEE_RPC_SOCKET_OPEN U(0) 3466009538cSJens Wiklander 3476009538cSJens Wiklander /* 3486009538cSJens Wiklander * Close socket 3496009538cSJens Wiklander * 3506009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_SOCKET_CLOSE 3516009538cSJens Wiklander * [in] value[0].b TA instance id 3526009538cSJens Wiklander * [in] value[0].c Socket handle 3536009538cSJens Wiklander */ 35457f197ecSJens Wiklander #define OPTEE_RPC_SOCKET_CLOSE U(1) 3556009538cSJens Wiklander 3566009538cSJens Wiklander /* 3576009538cSJens Wiklander * Close all sockets 3586009538cSJens Wiklander * 3596009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_SOCKET_CLOSE_ALL 3606009538cSJens Wiklander * [in] value[0].b TA instance id 3616009538cSJens Wiklander */ 36257f197ecSJens Wiklander #define OPTEE_RPC_SOCKET_CLOSE_ALL U(2) 3636009538cSJens Wiklander 3646009538cSJens Wiklander /* 3656009538cSJens Wiklander * Send data on socket 3666009538cSJens Wiklander * 3676009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_SOCKET_SEND 3686009538cSJens Wiklander * [in] value[0].b TA instance id 3696009538cSJens Wiklander * [in] value[0].c Socket handle 3706009538cSJens Wiklander * [in] memref[1] Buffer to transmit 3716009538cSJens Wiklander * [in] value[2].a Timeout ms or OPTEE_RPC_SOCKET_TIMEOUT_* 3726009538cSJens Wiklander * [out] value[2].b Number of transmitted bytes 3736009538cSJens Wiklander */ 37457f197ecSJens Wiklander #define OPTEE_RPC_SOCKET_SEND U(3) 3756009538cSJens Wiklander 3766009538cSJens Wiklander /* 3776009538cSJens Wiklander * Receive data on socket 3786009538cSJens Wiklander * 3796009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_SOCKET_RECV 3806009538cSJens Wiklander * [in] value[0].b TA instance id 3816009538cSJens Wiklander * [in] value[0].c Socket handle 3826009538cSJens Wiklander * [out] memref[1] Buffer to receive 3836009538cSJens Wiklander * [in] value[2].a Timeout ms or OPTEE_RPC_SOCKET_TIMEOUT_* 3846009538cSJens Wiklander */ 38557f197ecSJens Wiklander #define OPTEE_RPC_SOCKET_RECV U(4) 3866009538cSJens Wiklander 3876009538cSJens Wiklander /* 3886009538cSJens Wiklander * Perform IOCTL on socket 3896009538cSJens Wiklander * 3906009538cSJens Wiklander * [in] value[0].a OPTEE_RPC_SOCKET_IOCTL 3916009538cSJens Wiklander * [in] value[0].b TA instance id 3926009538cSJens Wiklander * [in] value[0].c Socket handle 3936009538cSJens Wiklander * [in/out] memref[1] Buffer 3946009538cSJens Wiklander * [in] value[2].a Ioctl command 3956009538cSJens Wiklander */ 39657f197ecSJens Wiklander #define OPTEE_RPC_SOCKET_IOCTL U(5) 3976009538cSJens Wiklander 3986009538cSJens Wiklander /* End of definition of protocol for command OPTEE_RPC_CMD_SOCKET */ 3996009538cSJens Wiklander 400f97ae380SAleksandr Anisimov /* 401f97ae380SAleksandr Anisimov * Definition of protocol for command OPTEE_RPC_CMD_SUPP_PLUGIN 402f97ae380SAleksandr Anisimov */ 403f97ae380SAleksandr Anisimov 404f97ae380SAleksandr Anisimov /* 405f97ae380SAleksandr Anisimov * Invoke tee-supplicant's plugin. 406f97ae380SAleksandr Anisimov * 407f97ae380SAleksandr Anisimov * [in] value[0].a OPTEE_RPC_SUPP_PLUGIN_INVOKE 408f97ae380SAleksandr Anisimov * [in] value[0].b uuid.d1 409f97ae380SAleksandr Anisimov * [in] value[0].c uuid.d2 410f97ae380SAleksandr Anisimov * [in] value[1].a uuid.d3 411f97ae380SAleksandr Anisimov * [in] value[1].b uuid.d4 412f97ae380SAleksandr Anisimov * [in] value[1].c cmd for plugin 413f97ae380SAleksandr Anisimov * [in] value[2].a sub_cmd for plugin 414f97ae380SAleksandr Anisimov * [out] value[2].b length of the outbuf (memref[3]), if out is needed. 415f97ae380SAleksandr Anisimov * [in/out] memref[3] buffer holding data for plugin 416f97ae380SAleksandr Anisimov * 417f97ae380SAleksandr Anisimov * UUID serialized into octets: 418f97ae380SAleksandr Anisimov * b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 419f97ae380SAleksandr Anisimov * d1 | d2 | d3 | d4 420f97ae380SAleksandr Anisimov * 421f97ae380SAleksandr Anisimov * The endianness of words d1, d2, d3 and d4 must be little-endian. 422f97ae380SAleksandr Anisimov * d1 word contains [b3 b2 b1 b0] 423f97ae380SAleksandr Anisimov * d2 word contains [b7 b6 b5 b4] 424f97ae380SAleksandr Anisimov * d3 word contains [b11 b10 b9 b8] 425f97ae380SAleksandr Anisimov * d4 word contains [b15 b14 b13 b12] 426f97ae380SAleksandr Anisimov */ 42757f197ecSJens Wiklander #define OPTEE_RPC_SUPP_PLUGIN_INVOKE U(0) 428f97ae380SAleksandr Anisimov 429f97ae380SAleksandr Anisimov /* End of definition of protocol for command OPTEE_RPC_CMD_SUPP_PLUGIN */ 430f97ae380SAleksandr Anisimov 4316009538cSJens Wiklander #endif /*__OPTEE_RPC_CMD_H*/ 432