mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-25 12:33:41 +00:00
d4bd3d25d8
Adds a OP-TEE driver. * Targets ARM and ARM64 * Supports using any U-Boot memory as shared memory * Probes OP-TEE version using SMCs * Uses OPTEE message protocol version 2 to communicate with secure world Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Igor Opaniuk <igor.opaniuk@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
240 lines
5.7 KiB
C
240 lines
5.7 KiB
C
/* 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
|
|
*/
|
|
|
|
#endif /* __OPTEE_MSG_SUPPLICANT_H */
|