1525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris/****************************************************************************
2525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ****************************************************************************
3525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***
4525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   This header was automatically generated from a Linux kernel header
5525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   of the same name, to make information necessary for userspace to
6525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   call into the kernel available to libc.  It contains only constants,
7525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   structures, and macros generated from the original header, and thus,
8525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   contains no copyrightable information.
9525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***
10525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   To edit the content of this header, modify the corresponding
11525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   source file (e.g. under external/kernel-headers/original/) then
12525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   run bionic/libc/kernel/tools/update_all.py
13525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***
14525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   Any manual change here will be lost the next time this script will
15525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***   be run. You've been warned!
16525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ***
17525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ****************************************************************************
18525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris ****************************************************************************/
19525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#ifndef __TEE_H
20525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define __TEE_H
21525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#include <linux/ioctl.h>
22525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#include <linux/types.h>
23525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_MAGIC 0xa4
24525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_BASE 0
25525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_SHM_MAPPED 0x1
26525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_SHM_DMA_BUF 0x2
27525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_MAX_ARG_SIZE 1024
28525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_GEN_CAP_GP (1 << 0)
291308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris#define TEE_GEN_CAP_PRIVILEGED (1 << 1)
30525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IMPL_ID_OPTEE 1
31525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_OPTEE_CAP_TZ (1 << 0)
32525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_ioctl_version_data {
33525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 impl_id;
34525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 impl_caps;
35525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 gen_caps;
36525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
37525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_VERSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 0, struct tee_ioctl_version_data)
38525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_ioctl_shm_alloc_data {
39525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u64 size;
40525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 flags;
41525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __s32 id;
42525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
43525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_SHM_ALLOC _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 1, struct tee_ioctl_shm_alloc_data)
44525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_ioctl_buf_data {
45525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u64 buf_ptr;
46525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u64 buf_len;
47525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
48525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_PARAM_ATTR_TYPE_NONE 0
49525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT 1
50525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT 2
51525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT 3
52525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT 5
53525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT 6
54525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT 7
55525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_PARAM_ATTR_TYPE_MASK 0xff
56525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_LOGIN_PUBLIC 0
57525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_LOGIN_USER 1
58525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_LOGIN_GROUP 2
59525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_LOGIN_APPLICATION 4
60525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_LOGIN_USER_APPLICATION 5
61525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_LOGIN_GROUP_APPLICATION 6
62525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_ioctl_param {
63525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u64 attr;
64525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u64 a;
65525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u64 b;
66525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u64 c;
67525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
68525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOCTL_UUID_LEN 16
69525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_ioctl_open_session_arg {
70525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u8 uuid[TEE_IOCTL_UUID_LEN];
71525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u8 clnt_uuid[TEE_IOCTL_UUID_LEN];
72525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 clnt_login;
73525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 cancel_id;
74525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 session;
75525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 ret;
76525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 ret_origin;
77525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 num_params;
78525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  struct tee_ioctl_param params[];
79525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
80525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_OPEN_SESSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 2, struct tee_ioctl_buf_data)
81525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_ioctl_invoke_arg {
82525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 func;
83525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 session;
84525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 cancel_id;
85525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 ret;
86525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 ret_origin;
87525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 num_params;
88525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  struct tee_ioctl_param params[];
89525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
90525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_INVOKE _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 3, struct tee_ioctl_buf_data)
91525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_ioctl_cancel_arg {
92525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 cancel_id;
93525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 session;
94525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
95525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_CANCEL _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 4, struct tee_ioctl_cancel_arg)
96525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_ioctl_close_session_arg {
97525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 session;
98525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
99525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_CLOSE_SESSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 5, struct tee_ioctl_close_session_arg)
100525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_iocl_supp_recv_arg {
101525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 func;
102525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 num_params;
103525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  struct tee_ioctl_param params[];
104525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
105525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_SUPPL_RECV _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 6, struct tee_ioctl_buf_data)
106525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct tee_iocl_supp_send_arg {
107525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 ret;
108525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 num_params;
109525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  struct tee_ioctl_param params[];
110525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
111525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define TEE_IOC_SUPPL_SEND _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 7, struct tee_ioctl_buf_data)
112525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#endif
113