blob: 9891c2b8f67cc78736a9ed9ca709f3c1547479c0 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2016-2018, Linaro Limited
*/
#ifndef __OPTEE_MSG_SUPPLICANT_H
#define __OPTEE_MSG_SUPPLICANT_H
/*
* This file is based on
* https://github.com/OP-TEE/optee_os/blob/master/core/include/optee_msg_supplicant.h
* and may need to be updated when introducing new features.
*/
/*
* Load a TA into memory
*/
#define OPTEE_MSG_RPC_CMD_LOAD_TA 0
/*
* Replay Protected Memory Block access
*/
#define OPTEE_MSG_RPC_CMD_RPMB 1
/*
* File system access
*/
#define OPTEE_MSG_RPC_CMD_FS 2
/*
* Define protocol for messages with .cmd == OPTEE_MSG_RPC_CMD_FS and first
* parameter has the attribute OPTEE_MSG_ATTR_TYPE_VALUE_INPUT.
*/
/*
* Open a file
*
* [in] param[0].u.value.a OPTEE_MRF_OPEN
* [in] param[1].u.tmem a string holding the file name
* [out] param[2].u.value.a file descriptor of open file
*/
#define OPTEE_MRF_OPEN 0
/*
* Create a file
*
* [in] param[0].u.value.a OPTEE_MRF_CREATE
* [in] param[1].u.tmem a string holding the file name
* [out] param[2].u.value.a file descriptor of open file
*/
#define OPTEE_MRF_CREATE 1
/*
* Close a file
*
* [in] param[0].u.value.a OPTEE_MRF_CLOSE
* [in] param[0].u.value.b file descriptor of open file.
*/
#define OPTEE_MRF_CLOSE 2
/*
* Read from a file
*
* [in] param[0].u.value.a OPTEE_MRF_READ
* [in] param[0].u.value.b file descriptor of open file
* [in] param[0].u.value.c offset into file
* [out] param[1].u.tmem buffer to hold returned data
*/
#define OPTEE_MRF_READ 3
/*
* Write to a file
*
* [in] param[0].u.value.a OPTEE_MRF_WRITE
* [in] param[0].u.value.b file descriptor of open file
* [in] param[0].u.value.c offset into file
* [in] param[1].u.tmem buffer holding data to be written
*/
#define OPTEE_MRF_WRITE 4
/*
* Truncate a file
*
* [in] param[0].u.value.a OPTEE_MRF_TRUNCATE
* [in] param[0].u.value.b file descriptor of open file
* [in] param[0].u.value.c length of file.
*/
#define OPTEE_MRF_TRUNCATE 5
/*
* Remove a file
*
* [in] param[0].u.value.a OPTEE_MRF_REMOVE
* [in] param[1].u.tmem a string holding the file name
*/
#define OPTEE_MRF_REMOVE 6
/*
* Rename a file
*
* [in] param[0].u.value.a OPTEE_MRF_RENAME
* [in] param[0].u.value.b true if existing target should be removed
* [in] param[1].u.tmem a string holding the old file name
* [in] param[2].u.tmem a string holding the new file name
*/
#define OPTEE_MRF_RENAME 7
/*
* Opens a directory for file listing
*
* [in] param[0].u.value.a OPTEE_MRF_OPENDIR
* [in] param[1].u.tmem a string holding the name of the directory
* [out] param[2].u.value.a handle to open directory
*/
#define OPTEE_MRF_OPENDIR 8
/*
* Closes a directory handle
*
* [in] param[0].u.value.a OPTEE_MRF_CLOSEDIR
* [in] param[0].u.value.b handle to open directory
*/
#define OPTEE_MRF_CLOSEDIR 9
/*
* Read next file name of directory
*
*
* [in] param[0].u.value.a OPTEE_MRF_READDIR
* [in] param[0].u.value.b handle to open directory
* [out] param[1].u.tmem a string holding the file name
*/
#define OPTEE_MRF_READDIR 10
/*
* End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_FS
*/
/*
* Command Ids 3, 4 and 5 of OPTEE_MSG_RPC_CMD_xxx macros are reserved for use
* by the kernel driver.
*/
/*
* Shared memory allocation
*/
#define OPTEE_MSG_RPC_CMD_SHM_ALLOC 6
#define OPTEE_MSG_RPC_CMD_SHM_FREE 7
/*
* Was OPTEE_MSG_RPC_CMD_SQL_FS, which isn't supported any longer
*/
#define OPTEE_MSG_RPC_CMD_SQL_FS_RESERVED 8
/*
* GPROF support management commands
*/
#define OPTEE_MSG_RPC_CMD_GPROF 9
/*
* Socket commands
*/
#define OPTEE_MSG_RPC_CMD_SOCKET 10
/*
* Define protocol for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET
*/
#define OPTEE_MRC_SOCKET_TIMEOUT_NONBLOCKING 0
#define OPTEE_MRC_SOCKET_TIMEOUT_BLOCKING 0xffffffff
/*
* Open socket
*
* [in] param[0].u.value.a OPTEE_MRC_SOCKET_OPEN
* [in] param[0].u.value.b TA instance id
* [in] param[1].u.value.a server port number
* [in] param[1].u.value.b protocol, TEE_ISOCKET_PROTOCOLID_*
* [in] param[1].u.value.c ip version TEE_IP_VERSION_* from tee_ipsocket.h
* [in] param[2].u.tmem server address
* [out] param[3].u.value.a socket handle (32-bit)
*/
#define OPTEE_MRC_SOCKET_OPEN 0
/*
* Close socket
*
* [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE
* [in] param[0].u.value.b TA instance id
* [in] param[0].u.value.c socket handle
*/
#define OPTEE_MRC_SOCKET_CLOSE 1
/*
* Close all sockets
*
* [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE_ALL
* [in] param[0].u.value.b TA instance id
*/
#define OPTEE_MRC_SOCKET_CLOSE_ALL 2
/*
* Send data on socket
*
* [in] param[0].u.value.a OPTEE_MRC_SOCKET_SEND
* [in] param[0].u.value.b TA instance id
* [in] param[0].u.value.c socket handle
* [in] param[1].u.tmem buffer to transmit
* [in] param[2].u.value.a timeout ms or OPTEE_MRC_SOCKET_TIMEOUT_*
* [out] param[2].u.value.b number of transmitted bytes
*/
#define OPTEE_MRC_SOCKET_SEND 3
/*
* Receive data on socket
*
* [in] param[0].u.value.a OPTEE_MRC_SOCKET_RECV
* [in] param[0].u.value.b TA instance id
* [in] param[0].u.value.c socket handle
* [out] param[1].u.tmem buffer to receive
* [in] param[2].u.value.a timeout ms or OPTEE_MRC_SOCKET_TIMEOUT_*
*/
#define OPTEE_MRC_SOCKET_RECV 4
/*
* Perform IOCTL on socket
*
* [in] param[0].u.value.a OPTEE_MRC_SOCKET_IOCTL
* [in] param[0].u.value.b TA instance id
* [in] param[0].u.value.c socket handle
* [in/out] param[1].u.tmem buffer
* [in] param[2].u.value.a ioctl command
*/
#define OPTEE_MRC_SOCKET_IOCTL 5
/*
* End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET
*/
/*
* Raw partition IO
*
* Starting with 0x100 to avoid conflicts with the upstream:
* https://github.com/OP-TEE/optee_client/blob/master/tee-supplicant/src/optee_msg_supplicant.h
*/
#define OPTEE_MSG_RPC_CMD_RAW 0x100
/*
* Definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_RAW
*/
/*
* Read bytes from a RAW partition
*
* [in] param[0].u.value.a OPTEE_MRC_RAW_READ
* [in] param[0].u.value.b offset into the partition
* [in] param[0].u.value.c length in bytes
* [in] param[1].u.tmem buffer to receive the bytes
*/
#define OPTEE_MRC_RAW_READ 0
/*
* Write bytes to a RAW partition
*
* [in] param[0].u.value.a OPTEE_MRC_RAW_WRITE
* [in] param[0].u.value.b offset into the partition
* [in] param[0].u.value.c length in bytes
* [in] param[1].u.tmem buffer containing the bytes
*/
#define OPTEE_MRC_RAW_WRITE 1
#endif /* __OPTEE_MSG_SUPPLICANT_H */