/****************************************************************************
 ****************************************************************************
 ***
 ***   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 __PFRUT_H__
#define __PFRUT_H__
#include <linux/ioctl.h>
#include <linux/types.h>
#define PFRUT_IOCTL_MAGIC 0xEE
#define PFRU_IOC_SET_REV _IOW(PFRUT_IOCTL_MAGIC, 0x01, unsigned int)
#define PFRU_IOC_STAGE _IOW(PFRUT_IOCTL_MAGIC, 0x02, unsigned int)
#define PFRU_IOC_ACTIVATE _IOW(PFRUT_IOCTL_MAGIC, 0x03, unsigned int)
#define PFRU_IOC_STAGE_ACTIVATE _IOW(PFRUT_IOCTL_MAGIC, 0x04, unsigned int)
#define PFRU_IOC_QUERY_CAP _IOR(PFRUT_IOCTL_MAGIC, 0x05, struct pfru_update_cap_info)
struct pfru_payload_hdr {
  __u32 sig;
  __u32 hdr_version;
  __u32 hdr_size;
  __u32 hw_ver;
  __u32 rt_ver;
  __u8 platform_id[16];
};
enum pfru_dsm_status {
  DSM_SUCCEED = 0,
  DSM_FUNC_NOT_SUPPORT = 1,
  DSM_INVAL_INPUT = 2,
  DSM_HARDWARE_ERR = 3,
  DSM_RETRY_SUGGESTED = 4,
  DSM_UNKNOWN = 5,
  DSM_FUNC_SPEC_ERR = 6,
};
struct pfru_update_cap_info {
  __u32 status;
  __u32 update_cap;
  __u8 code_type[16];
  __u32 fw_version;
  __u32 code_rt_version;
  __u8 drv_type[16];
  __u32 drv_rt_version;
  __u32 drv_svn;
  __u8 platform_id[16];
  __u8 oem_id[16];
  __u32 oem_info_len;
};
struct pfru_com_buf_info {
  __u32 status;
  __u32 ext_status;
  __u64 addr_lo;
  __u64 addr_hi;
  __u32 buf_size;
};
struct pfru_updated_result {
  __u32 status;
  __u32 ext_status;
  __u64 low_auth_time;
  __u64 high_auth_time;
  __u64 low_exec_time;
  __u64 high_exec_time;
};
struct pfrt_log_data_info {
  __u32 status;
  __u32 ext_status;
  __u64 chunk1_addr_lo;
  __u64 chunk1_addr_hi;
  __u64 chunk2_addr_lo;
  __u64 chunk2_addr_hi;
  __u32 max_data_size;
  __u32 chunk1_size;
  __u32 chunk2_size;
  __u32 rollover_cnt;
  __u32 reset_cnt;
};
struct pfrt_log_info {
  __u32 log_level;
  __u32 log_type;
  __u32 log_revid;
};
#define PFRT_LOG_IOC_SET_INFO _IOW(PFRUT_IOCTL_MAGIC, 0x06, struct pfrt_log_info)
#define PFRT_LOG_IOC_GET_INFO _IOR(PFRUT_IOCTL_MAGIC, 0x07, struct pfrt_log_info)
#define PFRT_LOG_IOC_GET_DATA_INFO _IOR(PFRUT_IOCTL_MAGIC, 0x08, struct pfrt_log_data_info)
#endif
