/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef __TEE_H
#define __TEE_H
#include <linux/ioctl.h>
#include <linux/types.h>
#define TEE_IOC_MAGIC 0xa4
#define TEE_IOC_BASE 0
#define TEE_IOCTL_SHM_MAPPED 0x1
#define TEE_IOCTL_SHM_DMA_BUF 0x2
#define TEE_MAX_ARG_SIZE 1024
#define TEE_GEN_CAP_GP (1 << 0)
#define TEE_IMPL_ID_OPTEE 1
#define TEE_OPTEE_CAP_TZ (1 << 0)
struct tee_ioctl_version_data {
  __u32 impl_id;
  __u32 impl_caps;
  __u32 gen_caps;
};
#define TEE_IOC_VERSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 0, struct tee_ioctl_version_data)
struct tee_ioctl_shm_alloc_data {
  __u64 size;
  __u32 flags;
  __s32 id;
};
#define TEE_IOC_SHM_ALLOC _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 1, struct tee_ioctl_shm_alloc_data)
struct tee_ioctl_buf_data {
  __u64 buf_ptr;
  __u64 buf_len;
};
#define TEE_IOCTL_PARAM_ATTR_TYPE_NONE 0
#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT 1
#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT 2
#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT 3
#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT 5
#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT 6
#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT 7
#define TEE_IOCTL_PARAM_ATTR_TYPE_MASK 0xff
#define TEE_IOCTL_LOGIN_PUBLIC 0
#define TEE_IOCTL_LOGIN_USER 1
#define TEE_IOCTL_LOGIN_GROUP 2
#define TEE_IOCTL_LOGIN_APPLICATION 4
#define TEE_IOCTL_LOGIN_USER_APPLICATION 5
#define TEE_IOCTL_LOGIN_GROUP_APPLICATION 6
struct tee_ioctl_param {
  __u64 attr;
  __u64 a;
  __u64 b;
  __u64 c;
};
#define TEE_IOCTL_UUID_LEN 16
struct tee_ioctl_open_session_arg {
  __u8 uuid[TEE_IOCTL_UUID_LEN];
  __u8 clnt_uuid[TEE_IOCTL_UUID_LEN];
  __u32 clnt_login;
  __u32 cancel_id;
  __u32 session;
  __u32 ret;
  __u32 ret_origin;
  __u32 num_params;
  struct tee_ioctl_param params[];
};
#define TEE_IOC_OPEN_SESSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 2, struct tee_ioctl_buf_data)
struct tee_ioctl_invoke_arg {
  __u32 func;
  __u32 session;
  __u32 cancel_id;
  __u32 ret;
  __u32 ret_origin;
  __u32 num_params;
  struct tee_ioctl_param params[];
};
#define TEE_IOC_INVOKE _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 3, struct tee_ioctl_buf_data)
struct tee_ioctl_cancel_arg {
  __u32 cancel_id;
  __u32 session;
};
#define TEE_IOC_CANCEL _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 4, struct tee_ioctl_cancel_arg)
struct tee_ioctl_close_session_arg {
  __u32 session;
};
#define TEE_IOC_CLOSE_SESSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 5, struct tee_ioctl_close_session_arg)
struct tee_iocl_supp_recv_arg {
  __u32 func;
  __u32 num_params;
  struct tee_ioctl_param params[];
};
#define TEE_IOC_SUPPL_RECV _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 6, struct tee_ioctl_buf_data)
struct tee_iocl_supp_send_arg {
  __u32 ret;
  __u32 num_params;
  struct tee_ioctl_param params[];
};
#define TEE_IOC_SUPPL_SEND _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 7, struct tee_ioctl_buf_data)
#endif
