/****************************************************************************
 ****************************************************************************
 ***
 ***   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 _RIO_MPORT_CDEV_H_
#define _RIO_MPORT_CDEV_H_
#include <linux/ioctl.h>
#include <linux/types.h>
struct rio_mport_maint_io {
  __u16 rioid;
  __u8 hopcount;
  __u8 pad0[5];
  __u32 offset;
  __u32 length;
  __u64 buffer;
};
#define RIO_TRANSFER_MODE_MAPPED (1 << 0)
#define RIO_TRANSFER_MODE_TRANSFER (1 << 1)
#define RIO_CAP_DBL_SEND (1 << 2)
#define RIO_CAP_DBL_RECV (1 << 3)
#define RIO_CAP_PW_SEND (1 << 4)
#define RIO_CAP_PW_RECV (1 << 5)
#define RIO_CAP_MAP_OUTB (1 << 6)
#define RIO_CAP_MAP_INB (1 << 7)
struct rio_mport_properties {
  __u16 hdid;
  __u8 id;
  __u8 index;
  __u32 flags;
  __u32 sys_size;
  __u8 port_ok;
  __u8 link_speed;
  __u8 link_width;
  __u8 pad0;
  __u32 dma_max_sge;
  __u32 dma_max_size;
  __u32 dma_align;
  __u32 transfer_mode;
  __u32 cap_sys_size;
  __u32 cap_addr_size;
  __u32 cap_transfer_mode;
  __u32 cap_mport;
};
#define RIO_DOORBELL (1 << 0)
#define RIO_PORTWRITE (1 << 1)
struct rio_doorbell {
  __u16 rioid;
  __u16 payload;
};
struct rio_doorbell_filter {
  __u16 rioid;
  __u16 low;
  __u16 high;
  __u16 pad0;
};
struct rio_portwrite {
  __u32 payload[16];
};
struct rio_pw_filter {
  __u32 mask;
  __u32 low;
  __u32 high;
  __u32 pad0;
};
#define RIO_MAP_ANY_ADDR (__u64) (~((__u64) 0))
struct rio_mmap {
  __u16 rioid;
  __u16 pad0[3];
  __u64 rio_addr;
  __u64 length;
  __u64 handle;
  __u64 address;
};
struct rio_dma_mem {
  __u64 length;
  __u64 dma_handle;
  __u64 address;
};
struct rio_event {
  __u32 header;
  union {
    struct rio_doorbell doorbell;
    struct rio_portwrite portwrite;
  } u;
  __u32 pad0;
};
enum rio_transfer_sync {
  RIO_TRANSFER_SYNC,
  RIO_TRANSFER_ASYNC,
  RIO_TRANSFER_FAF,
};
enum rio_transfer_dir {
  RIO_TRANSFER_DIR_READ,
  RIO_TRANSFER_DIR_WRITE,
};
enum rio_exchange {
  RIO_EXCHANGE_DEFAULT,
  RIO_EXCHANGE_NWRITE,
  RIO_EXCHANGE_SWRITE,
  RIO_EXCHANGE_NWRITE_R,
  RIO_EXCHANGE_SWRITE_R,
  RIO_EXCHANGE_NWRITE_R_ALL,
};
struct rio_transfer_io {
  __u64 rio_addr;
  __u64 loc_addr;
  __u64 handle;
  __u64 offset;
  __u64 length;
  __u16 rioid;
  __u16 method;
  __u32 completion_code;
};
struct rio_transaction {
  __u64 block;
  __u32 count;
  __u32 transfer_mode;
  __u16 sync;
  __u16 dir;
  __u32 pad0;
};
struct rio_async_tx_wait {
  __u32 token;
  __u32 timeout;
};
#define RIO_MAX_DEVNAME_SZ 20
struct rio_rdev_info {
  __u16 destid;
  __u8 hopcount;
  __u8 pad0;
  __u32 comptag;
  char name[RIO_MAX_DEVNAME_SZ + 1];
};
#define RIO_MPORT_DRV_MAGIC 'm'
#define RIO_MPORT_MAINT_HDID_SET _IOW(RIO_MPORT_DRV_MAGIC, 1, __u16)
#define RIO_MPORT_MAINT_COMPTAG_SET _IOW(RIO_MPORT_DRV_MAGIC, 2, __u32)
#define RIO_MPORT_MAINT_PORT_IDX_GET _IOR(RIO_MPORT_DRV_MAGIC, 3, __u32)
#define RIO_MPORT_GET_PROPERTIES _IOR(RIO_MPORT_DRV_MAGIC, 4, struct rio_mport_properties)
#define RIO_MPORT_MAINT_READ_LOCAL _IOR(RIO_MPORT_DRV_MAGIC, 5, struct rio_mport_maint_io)
#define RIO_MPORT_MAINT_WRITE_LOCAL _IOW(RIO_MPORT_DRV_MAGIC, 6, struct rio_mport_maint_io)
#define RIO_MPORT_MAINT_READ_REMOTE _IOR(RIO_MPORT_DRV_MAGIC, 7, struct rio_mport_maint_io)
#define RIO_MPORT_MAINT_WRITE_REMOTE _IOW(RIO_MPORT_DRV_MAGIC, 8, struct rio_mport_maint_io)
#define RIO_ENABLE_DOORBELL_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 9, struct rio_doorbell_filter)
#define RIO_DISABLE_DOORBELL_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 10, struct rio_doorbell_filter)
#define RIO_ENABLE_PORTWRITE_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 11, struct rio_pw_filter)
#define RIO_DISABLE_PORTWRITE_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 12, struct rio_pw_filter)
#define RIO_SET_EVENT_MASK _IOW(RIO_MPORT_DRV_MAGIC, 13, __u32)
#define RIO_GET_EVENT_MASK _IOR(RIO_MPORT_DRV_MAGIC, 14, __u32)
#define RIO_MAP_OUTBOUND _IOWR(RIO_MPORT_DRV_MAGIC, 15, struct rio_mmap)
#define RIO_UNMAP_OUTBOUND _IOW(RIO_MPORT_DRV_MAGIC, 16, struct rio_mmap)
#define RIO_MAP_INBOUND _IOWR(RIO_MPORT_DRV_MAGIC, 17, struct rio_mmap)
#define RIO_UNMAP_INBOUND _IOW(RIO_MPORT_DRV_MAGIC, 18, __u64)
#define RIO_ALLOC_DMA _IOWR(RIO_MPORT_DRV_MAGIC, 19, struct rio_dma_mem)
#define RIO_FREE_DMA _IOW(RIO_MPORT_DRV_MAGIC, 20, __u64)
#define RIO_TRANSFER _IOWR(RIO_MPORT_DRV_MAGIC, 21, struct rio_transaction)
#define RIO_WAIT_FOR_ASYNC _IOW(RIO_MPORT_DRV_MAGIC, 22, struct rio_async_tx_wait)
#define RIO_DEV_ADD _IOW(RIO_MPORT_DRV_MAGIC, 23, struct rio_rdev_info)
#define RIO_DEV_DEL _IOW(RIO_MPORT_DRV_MAGIC, 24, struct rio_rdev_info)
#endif
